[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 283

 
Shniperson:

Ciao, puoi dirmi come fare il "loop" del controllo della barra su/giù? Cioè, come posso descrivere questa condizione "più corta"?

Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3]&&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7]

bool Res=true;
for(int i=0;i<8;i++) Res = Res && Close[i]>Open[i];

Grazie in anticipo.


Si potrebbe fare così, ma non è probabile che sia più veloce. Le condizioni devono essere ampliate un po'
 

Non so come trasformarlo in una vita, posso farlo?

La mia strategia è idealmente aperto manualmente alle 8:00 sul terminale, se il profitto, poi fino al giorno successivo. Se il profitto non va nella mia direzione, allora in perdita inverto la posizione + - non importa cosa, non apro più posizioni questo giorno e aspetto fino alle 8 del mattino. Cioè ci dovrebbe essere un massimo di due ordini e non di più. Se non abbiamo raggiunto il profitto, ma il Trawl si è spostato a Breakeven, abbiamo anche il rollover. Certo, possiamo gestire tutto, ma il nostro lavoro non ci permette di monitorare le posizioni. Sarebbe meglio piazzare un ordine e lasciare che l'EA segua la posizione. Ho allegato l'RSI solo per testarlo nello Strategy Tester.

Questo è tutto ciò di cui avevo bisogno.

extern int Hour_To_Open = 08; //час открытия (-1 - не задано), терминальное время
extern int Minute_To_Open = 00; //минута открытия (-1 - не задано), терминальное время
extern double TakeProfit = 50;
extern double StopLoss = 30;
extern double Lot = 0.1;
extern int MagicNumber = 655433;


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open)) 
{ //если настало время открытия сделок
int total = OrdersTotal();
for (int i = 0; i < total; i++) 
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
return(0);
}
} 
int ticket=1;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PR ICE_CLOSE,1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid - StopLoss * Point,Bid + TakeProfit * Point,"My order #",MagicNumber,0,Blue);
if(ticket<0)
{
Sleep(30000);
}
}
else
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask + StopLoss * Point,Ask - TakeProfit * Point,"My order #",MagicNumber,0,Red);
if(ticket<0)
{
Sleep(30000);
}
}
} //end if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open))
//----
return(0);
}
//+------------------------------------------------------------------+

Ho questo trailing stop, l'ho preso da un altro EA ma non funziona per me

extern bool UseTrailing = true; //включение/выключение T-SL
extern int TrailingStop = 50; // Фиксированный размер трала
extern int TrailingStep = 1; // Шаг трала

//+-------------------------------------------------------------------------------------------------------------------+
//| трейлинг стоп лосс |
void T_SL() {
int i=0;
for(i=0; i<OrdersTotal(); i++) {
if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue; 

if(OrderType()==OP_BUY) {
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)<Normali zeDouble(Bid-(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits))
} //end if(OrderType()==OP_BUY)

if(OrderType()==OP_SELL) {
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its)) {
if(NormalizeDouble(OrderStopLoss(),Digits)>Normali zeDouble(Ask+(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its))
} //end if(OrderType()==OP_SELL)
} //end for(i=0; i<OrdersTotal(); i++)
} //end void T_SL()
//| трейлинг стоп лосс |
//+-------------------------------------------------------------------------------------------------------------------+

Come posso attaccarlo? E l'inversione, dovrebbe funzionare solo una volta dopo l'apertura della posizione

 

Reverse deve cercare da qualche parte qui intorno, lo prendo o no?

bool OrderCloseBy(int biglietto, int opposto, colore Color=CLR_NONE)
Chiudere una posizione aperta con un'altra posizione aperta sullo stesso strumento, ma in direzione opposta. Restituisce TRUE quando la funzione viene completata con successo. Restituisce FALSE quando la funzione fallisce. Per ottenere informazioni sull'errore, chiamate la funzione GetLastError().
Parametri:
biglietto - Numero di serie unico dell'ordine da chiudere.
di fronte a - Il numero di sequenza unico dell'ordine opposto.
Colore - Colore della freccia di chiusura sul grafico. Se il parametro manca o il suo valore è CLR_NONE, la freccia non viene mostrata sul grafico.
Esempio:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderCloseBy(order_id,opposite_id); return(0); }

 
Signor Professionista, potrebbe dirmi se è possibile eseguire uno script dalla barra degli strumenti? Al momento, lo script scritto deve essere eseguito o dal navigatore, o con una combinazione preimpostata di tasti (che per qualche motivo funziona solo una volta ogni tanto). Domanda - è possibile, per esempio, assegnare all'icona del pannello "strumenti grafici" una nuova funzione ed eseguire lo script dalla barra degli strumenti? Forse ci sono altre opzioni?
 

Buon pomeriggio.

Puoi dirmi dove posso vedere il codice originale della funzione OrderSend()?

Grazie in anticipo.

 
kon12:
Signor esperto, consigli, è possibile eseguire lo script dalla barra degli strumenti? Al momento, lo script deve essere eseguito o dal navigatore, o usando una combinazione preimpostata di tasti (che in qualche modo funziona solo una volta). Domanda - è possibile, per esempio, assegnare una nuova funzione all'icona sul pannello "strumenti grafici" ed eseguire lo script dalla barra degli strumenti? Ci sono altre opzioni?

No, ma puoi usare il drag and drop dell'oggetto Label come esempio...

Scaricare , estrarre al terminale con sostituzione, permettere l'importazione di dll nel setup del terminale, allegare Expert Advisor a Experts, digitare il nome dello script da eseguire riavviare il terminale o compilare.

L'Expert Advisor implementa - carica lo script sul grafico specificato dal suo nome quando si trascina l'oggetto sul grafico.

      ServiceLoadScript(WindowHandle(Symbol(), Period()), "ZZ_All_Quotings 4.10425", /*<---- Имя загружаемого скрипта.*/  false);
File:
trade_1.mq4  2 kb
 

Buon pomeriggio!!!

Si prega di avvisare. Sto scrivendo un EA che lavora sulla rottura del canale, mettendo due pendenti dietro il canale. Quando uno di loro si innesca, un altro dovrebbe essere rimosso. Come implementarlo nel codice?

 
Parn25:

Buon pomeriggio!!!

Si prega di avvisare. Sto scrivendo un EA che lavora sulla rottura del canale, mettendo due pendenti dietro il canale. Quando uno di loro si innesca, un altro dovrebbe essere rimosso. Come implementarlo nel codice?


Forse questa sarebbe una buona idea - non l'ho fatto io stesso - se il tuo EA permette solo un ordine a mercato (su 2 pendenti che sono stati precedentemente piazzati), allora monitora (traccia) la disponibilità del tuo ordine (di mago) a mercato e appena si presenta, cancella quello pendente. Questo è tutto. Se vuoi cancellare un ordine in sospeso, cerca su Google qualcosa come "delete orders site:mql4.com".
 

Ciao!

Esecuzione dell'EA sul tester. Il server è a quattro cifre. Quando si inserisce un ordine di acquisto o di vendita nel registro si dice

2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: aperto #1 comprare 0,10 GBPUSD a 1,5551 sl: 1,4551 tp: 1,5586 ok

Ma apre a 1,55512! Alle cinque cifre. Poi gli ordini pendenti sono piazzati a quattro cifre e attivati anch'essi a quattro cifre. Ma OP_SELL e OP_BUY si aprono solo di cinque cifre!

Faccio NormalizeDouble(Ask,Digits);

Non funziona niente! Per favore, consigliate come risolvere questo problema?

È possibile, naturalmente, ignorare l'ultima cifra. L'errore non si verifica, ma per la purezza dell'esperimento, ho bisogno che tutti i miei scambi siano fatti in quattro cifre.

 
ZZZEROXXX:
Si prega di consigliare come fissare un EA, ad esempio le medie mobili standard, per trasformarlo in uno script al fine di eseguirlo su un timeframe non standard.


UP. vi sarei grato se poteste dirmi come trasformare un EA in uno script in poche parole