Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1527

 
MakarFX:

usa le letture per costruire la logica del tuo indicatore

No, non funziona così.

qui . 1 indicatore mostra sempre un numero - 2147483647. non appena un segnale viene ricevuto, mostra un numero diverso su uno dei buffer. Questo l'ho capito.

Ma il secondo indicatore mostra sempre o 0 o 2147483647 su 2 buffer simultaneamente

File:
 
Credo di aver capito. Dovrebbe essere così
  
     if (in1b<2147483647 && in2b>0 && in2b<2147483647)
           Sell[i]=low[i];
     if (in1s<2147483647 && in2s>0 && in2s<2147483647)
            Buy[i]=high[i];
 
jarikn:
Credo di aver capito. Dovrebbe essere così

non sono necessarie specifiche in questo caso, cioè solo se >0

 
MakarFX:

in questo caso le specifiche non sono necessarie, cioè solo se >0

ma cosa c'è nei buffer quando non c'è segnale. non credo che >0 funzionerà qui. ma lo proverò ora

File:
 
jarikn:

Ma ecco cosa c'è nei buffer quando non c'è segnale. Non credo che >0 funzionerà qui, ma lo proverò ora

il primo indicatore ha il valore EMPTY_VALUE quando non c'è nessun segnale

fare quanto segue

   if(iCustom(NULL,0,"in1",1,i)>0&&iCustom(NULL,0,"in1",1,i)<Bid*2&&iCustom(NULL,0,"in2",0,i)>0) // индикатор стрелка вниз

   if(iCustom(NULL,0,"in1",0,i)>0&&iCustom(NULL,0,"in1",0,i)<Bid*2&&iCustom(NULL,0,"in2",1,i)>0) // индикатор стрелка вверх
 

Per favore aiutatemi a risolvere questo problema con il tester. Sto testando l'apertura di posizioni per CME sui futures EUR/USD

Al rialzo del mercato nel tester apro una posizione lunga sul breakdown con il mio stop e il trade ottiene un ticket #2. Il mercato sale e la posizione successiva viene aperta con uno stop e il trade ottiene il ticket #3 nel tester.

Quando il mercato va contro la posizione #3 e raggiunge il suo stop, idealmente #3 dovrebbe chiudere allo stop, e #2 dovrebbe rimanere lì, aspettando che il prezzo raggiunga lo stop #2. Ma per qualche ragione, quando lo stop #3 è scattato, il tester chiude anche la posizione #2.

Il codice per mql5 è

MqlTradeRequest request={};
MqlTradeResult  result={};
                                 
request.action = TRADE_ACTION_DEAL; //Вход рынку
request.symbol = Symbol();
request.volume = 1.0; //Кол-во фьючей
request.type   = ORDER_TYPE_BUY; //Купить
request.price  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);   
request.sl     = NormalizeDouble(sl,5); // Стоп

bool check     = OrderSend(request,result);


 
NastyaMaley:

Per favore, aiutatemi a risolvere questo problema con il tester. Sto testando l'apertura di posizioni per CME sui futures EUR/USD

Sul rialzo del mercato nel tester apro una posizione lunga sul breakout con il mio stop e il trade ottiene il numero 2. Il mercato è salito e la posizione successiva viene aperta con uno stop, il trade ottiene il numero 3 nel tester.

Quando il mercato va contro la posizione #3 e raggiunge il suo stop, l'idea è che la #3 dovrebbe chiudere allo stop e la #2 dovrebbe essere lasciata in sospeso, aspettando che il prezzo raggiunga lo stop #2. Ma per qualche ragione, quando lo stop #3 è scattato, il tester chiude anche la posizione #2.

Il codice per mql5 è


Non conosco mql5, ma non vedo dove c'è una scelta di ordine di chiusura
 
MakarFX:

il primo indicatore ha un valore di EMPTY_VALUE quando non c'è nessun segnale

dovrebbe essere fatto così

Sì, proprio così. Questo è tutto, grazie mille.

 

Credo che la ragione del comportamento del tester sia diventata chiara. Il tipo di conto demo su cui il robot sta testando è Netting. Pertanto, se lo stop specificato all'apertura della posizione #3 viene attivato, chiuderà l'intero volume della posizione. Quindi, alla fermata dal #3, chiude anche il #2, anche se aveva il suo stop separato impostato per esso quando è stato aperto.

Con il tipo di conto Hedging, tutto funzionerebbe come nel buon vecchio mql4.

 
NastyaMaley:

Per favore, aiutatemi a risolvere questo problema con il tester. Sto testando l'apertura di posizioni per CME sui futures EUR/USD

Al rialzo del mercato nel tester apro una posizione lunga sul breakdown con il mio stop e il trade ottiene un ticket #2. Il mercato sale e la posizione successiva viene aperta con uno stop e il trade ottiene il ticket #3 nel tester.

Quando il mercato va contro la posizione #3 e raggiunge il suo stop, idealmente #3 dovrebbe chiudere allo stop, e #2 dovrebbe rimanere lì, aspettando che il prezzo raggiunga lo stop #2. Ma per qualche ragione, quando lo stop #3 è scattato, il tester chiude anche la posizione #2.

Il codice per mql5 è il seguente

Non si dovrebbero usare fermate. Invece di usare gli stop, dovremmo piazzare ordini pendenti della direzione opposta.