
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Credo, lo confermo, di aver visto lo stesso problema nello Strategy Tester, non sono sicuro di come esattamente questo possa accadere, proverò di nuovo con qualche altra segnalazione di errore aggiunta per essere sicuro.
OK, un mistero risolto... non avevo capito che lo spread usato nello Strategy Tester è preso dai dati della storia, in particolare i dati M1. La ragione per cui ho degli stop non validi nella mia esecuzione dello Strategy Tester è perché lo spread è più grande del mio SL. Aggiungerò un test per questo.
Konstantin83:
2013.03.10 11:19:18 2012.01.04 15:00:00 failed buy stop 1.00 EURUSD at 1.30505 sl: 1.28375 tp: 1.30375 [Invalid stops]
Non capisco lo stop non valido. lo sl è sotto il buy sl: 1.28375 <1.30505 ?
CopyHigh(_Symbol,_Period,TimeCurrent(),5,hg);
Top = NormalizeDouble(rates[ArrayMaximum(hg,0,WHOLE_ARRAY)].high,_Digits);
- designincompreso .
Scegli tra i valori del massimo doppio e usa quello invece dell' indice intero
grazieKonstantin83 :
ma non capisco cosa dici.
top è il più alto delle ultime 5 candele e top è un indice doppio e non intero
dan5:
Non capisco lo stop non valido. lo sl è sotto il buy sl: 1.28375 <1.30505 ?
Non prendere "Invalid stops" troppo alla lettera. Non si tratta solo di Stop Loss, può essere anche il prezzo di entrata e/o il TP. Quando ottieni un errore stampa le seguenti informazioni, ti aiuteranno a capire cosa è andato storto:
dan5:
2013.03.10 11:19:18 2012.01.04 15:00:00 fallito buy stop 1.00 EURUSD a 1.30505 sl: 1.28375 tp: 1.30375 [Stop non valido]
Non capisco lo stop non valido. lo sl è sotto il buy sl: 1.28375 <1.30505 ?
Avete notato che l'entrata 1.30505 è > il TP 1.30375 ?
grazie per il tuo aiuto ho modificato il mio sl e tp ora è ok
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Digits);// Take Profit
invece di:
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
grazie per il tuo aiuto ho modificato il mio sl e tp ora è ok
mrequest.sl = NormalizeDouble( mrequest.price + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble( mrequest.price - TKP*_Point,_Digits);// Take Profit
invece di:
mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); // Take Profit
Questa è una buona notizia, spero che non ti sia dispiaciuto che abbia sovvertito il tuo thread, ma penso che entrambi ne abbiamo ricavato qualcosa di utile alla fine :-)
Hai trovato un'altra soluzione che io propongo con OnTradeTransaction per procedere con sl & tp su un caso di esecuzione a mercato (broker ECN)?
Il codice che ho suggerito in questo post https://www.mql5.com/en/forum/11051#comment_446272 funziona bene per quanto posso dire, ho supposto che non funzionasse nello Strategy Tester a causa della mia supposizione che lo spread fosse fisso (come in MT4) non era corretto. Il mio codice ora funziona nello Strategy Tester e in Demo per i simboli con tipo di esecuzione Instant o Exchange, il mio codice determina il tipo e invia le richieste appropriate. Idealmente vorrei che il mio codice gestisse automaticamente qualsiasi tipo di esecuzione.