Importante:il prezzo stoplimit è impostato peggio. Questo è per l'esecuzione dello scambio.
È stato impostato un limite di acquisto che è stato attivato e aperto come ordine limite.
Potete vedere nello screenshot che ci sono dei prezzi nel commento. Il primo prezzo (1,10258) è il prezzo richiesto quando l'ordine è stato piazzato, il secondo (1,10268) è il prezzo di attivazione della parte limite dell'ordine e il terzo (1,10263) è il prezzo di attivazione della parte stop dell'ordine.
La logica è la seguente: se il prezzo di domanda del mercato raggiunge 1,10263, allora la parte di stop dell'ordine (il prezzo di esercizio) viene attivata. E la parte limite dell'ordine dovrebbe scattare immediatamente, poiché il suo prezzo d'esercizio è peggiore del prezzo di mercato (1,10268).
Guardiamo i file di log:
2019.12.1221:08:10.3062019.12.0200:00:11 buy stop limit 0.10 EURUSD at 1.10263 (1.10268) (1.10239 / 1.10258)
2019.12.1221:08:10.3102019.12.0200:00:11 CTrade::OrderSend: buy stop limit 0.10 EURUSD at 1.10263 (1.10268) [done]
2019.12.1221:08:10.3102019.12.0200:00:11TRADE_TRANSACTION_ORDER_ADD2019.12.1221:08:10.3102019.12.0200:00:11TRADE_TRANSACTION_REQUEST2019.12.1221:08:10.3122019.12.0200:02:15 order [#2 buy stop limit 0.10 EURUSD at 1.10263 (1.10268)] triggered2019.12.1221:08:10.3122019.12.0200:02:15TRADE_TRANSACTION_ORDER_UPDATE2019.12.1221:09:18.3332019.12.0200:02:15 order [#2 buy limit 0.10 EURUSD at 1.10268] triggered
2019.12.1221:09:18.3332019.12.0200:02:15 deal #2 buy 0.10 EURUSD at 1.10265 done (based on order #2)
2019.12.1221:09:18.3332019.12.0200:02:15 deal performed [#2 buy 0.10 EURUSD at 1.10265]
2019.12.1221:09:18.3332019.12.0200:02:15 order performed buy 0.10 at 1.10265 [#2 buy limit 0.10 EURUSD at 1.10268]
Vediamo che alle00:02:15 l'ordine si è trasformato in un ordine limite (la parte stop è scattata). E si è subito trasformato in una posizione di mercato. E la cosa interessante è che i log non danno un prezzo bid-ask come nella prima riga (1,10239 / 1,10258). E questo è scomodo. Sì, la posizione è aperta a 1,10265. Ci si aspettava che fosse aperto a 1,10263. Qui penso che ci sia stato uno slittamento di 2pts.
Guardando la base delle zecche. Sì, i test erano su zecche reali del 2 dicembre 2019.
Vediamo che c'è il nostro tick (1,10265). Evidenziato nello screenshot. E da00:02:15 questa era la terza spunta. Larichiesta precedente = 1,10271 (dalle00:02:15.428) era ancora più alta. Anche se, allo stesso tempo della nostra zecca. Cioè, è entrato ad un prezzo migliore. Conclusione: come previsto, abbiamo ottenuto uno slittamento di 2 punti per la parte stop dell'ordine.
È la cosa giusta da fare? Prima viene il prezzo della stoplist e poi lo strike price. Guarda la documentazione:
Questo è fatto intenzionalmente in modo che quando lo stoplimit va al limite, il limite scatta immediatamente. Quando viene attivato, sembra essere da qualche parte là fuori, al prezzo che è specificato nell'ordine e non al prezzo che ha attivato lo stoplimit (che in realtà era).
La logica è la seguente: se il prezzo di domanda del mercato raggiunge 1,10263, la parte di stop dell'ordine (il prezzo di esercizio) viene attivata. E la parte limite dell'ordine dovrebbe scattare immediatamente, poiché il suo prezzo d'esercizio è peggiore del prezzo di mercato (1,10268).
C'è un prezzo di 123. Il BUY_STOP_LIMIT. Il prezzo di stop è 133. Il prezzo limite è 111.
Se il prezzo ha superato il prezzo di stop, il prezzo limite viene attivato. Se il prezzo torna a 111, la posizione viene aperta.
Se il prezzo non ha superato il prezzo di stop ed è tornato al prezzo limite, la posizione non sarà aperta.
Un ordine stop limit può essere controllato nel tester anche per il Forex. È sufficiente impostare "Esecuzione" = Scambio.
Ho controllato il limite di acquisto come segue: ho impostato il prezzo dell'ordine limite peggiore del prezzo di attivazione. L'ordine si è aperto al prezzo di mercato (ask price) al momento dell'attivazione. Quindi, sembra che la funzionalità del Tester funzioni.
Sì, su strumenti forex, con esecuzione in borsa, funziona correttamente.
E ora cambia anche "Settlement Method"=FORTS Futures, e vedi come funziona su strumenti negoziati in borsa.
Se mettete Metodo di calcolo = Forex su uno strumento negoziato in borsa, funziona correttamente, ma il margine non viene contato correttamente.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
A quanto pare nessuno lo usa,
l'ordine viene aperto a prezzi inesistenti:
un semplice esempio da verificare:
È corretto? Prima viene il prezzo limite di stop e poi il prezzo di esercizio. Vedere ladocumentazione:
Ho modificato un po' il codice del topicstarter.
Ecco un esempio sullo strumento forex EURUSD.
Importante:il prezzo stoplimit è impostato peggio. Questo è per l'esecuzione dello scambio.
È stato impostato un limite di acquisto che è stato attivato e aperto come ordine limite.
Potete vedere nello screenshot che ci sono dei prezzi nel commento. Il primo prezzo (1,10258) è il prezzo richiesto quando l'ordine è stato piazzato, il secondo (1,10268) è il prezzo di attivazione della parte limite dell'ordine e il terzo (1,10263) è il prezzo di attivazione della parte stop dell'ordine.
La logica è la seguente: se il prezzo di domanda del mercato raggiunge 1,10263, allora la parte di stop dell'ordine (il prezzo di esercizio) viene attivata. E la parte limite dell'ordine dovrebbe scattare immediatamente, poiché il suo prezzo d'esercizio è peggiore del prezzo di mercato (1,10268).
Guardiamo i file di log:
Vediamo che alle00:02:15 l'ordine si è trasformato in un ordine limite (la parte stop è scattata). E si è subito trasformato in una posizione di mercato. E la cosa interessante è che i log non danno un prezzo bid-ask come nella prima riga (1,10239 / 1,10258). E questo è scomodo. Sì, la posizione è aperta a 1,10265. Ci si aspettava che fosse aperto a 1,10263. Qui penso che ci sia stato uno slittamento di 2pts.
Guardando la base delle zecche. Sì, i test erano su zecche reali del 2 dicembre 2019.
Vediamo che c'è il nostro tick (1,10265). Evidenziato nello screenshot. E da00:02:15 questa era la terza spunta. Larichiesta precedente = 1,10271 (dalle00:02:15.428) era ancora più alta. Anche se, allo stesso tempo della nostra zecca. Cioè, è entrato ad un prezzo migliore. Conclusione: come previsto, abbiamo ottenuto uno slittamento di 2 punti per la parte stop dell'ordine.
È la cosa giusta da fare? Prima viene il prezzo della stoplist e poi lo strike price. Guarda la documentazione:
Questo è fatto intenzionalmente in modo che quando lo stoplimit va al limite, il limite scatta immediatamente. Quando viene attivato, sembra essere da qualche parte là fuori, al prezzo che è specificato nell'ordine e non al prezzo che ha attivato lo stoplimit (che in realtà era).
La logica è la seguente: se il prezzo di domanda del mercato raggiunge 1,10263, la parte di stop dell'ordine (il prezzo di esercizio) viene attivata. E la parte limite dell'ordine dovrebbe scattare immediatamente, poiché il suo prezzo d'esercizio è peggiore del prezzo di mercato (1,10268).
C'è un prezzo di 123. Il BUY_STOP_LIMIT. Il prezzo di stop è 133. Il prezzo limite è 111.
Se il prezzo ha superato il prezzo di stop, il prezzo limite viene attivato. Se il prezzo torna a 111, la posizione viene aperta.
Se il prezzo non ha superato il prezzo di stop ed è tornato al prezzo limite, la posizione non sarà aperta.
Non è così?
Un ordine stop limit può essere controllato nel tester anche per il Forex. È sufficiente impostare "Esecuzione" = Scambio.
Ho controllato il limite di acquisto come segue: ho impostato il prezzo dell'ordine limite peggiore del prezzo di attivazione. L'ordine si è aperto al prezzo di mercato (ask price) al momento dell'attivazione. Quindi, sembra che la funzionalità del Tester funzioni.
Sì, su strumenti forex, con esecuzione in borsa, funziona correttamente.
E ora cambia anche "Settlement Method"=FORTS Futures, e vedi come funziona su strumenti negoziati in borsa.
Se mettete Metodo di calcolo = Forex su uno strumento negoziato in borsa, funziona correttamente, ma il margine non viene contato correttamente.
Stai usandoStopLimit nel trading reale?
È chiaro cheStopLimit non funziona adeguatamente nel tester.
Ha senso usarlo nel trading reale? Quali sono i vantaggi e gli svantaggi?
Questo tipo di ordini non ha senso da usare.
È molto più facile piazzare un ordine pendente subito, perché possiamo specificare qualsiasi termine della durata dell'ordine.
Se siamo sulla borsa, piuttosto che sul server MQ, questo ordine è garantito per funzionare al prezzo specificato in esso.
E il server può "glitchare".