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
A differenza di MQL5, in MQL4 gli array statici possono cambiare dimensione.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Nuova versione della piattaforma MetaTrader 5 build 1595: accesso alla storia dei prezzi
fxsaber, 2017.05.01 16:36
C'è sempre stato un bug in MT4 nel Trailing Stop. Se si guarda durante un forte movimento di prezzo verso l'alto e verso il basso,
si può vedere lo SL che si muove su e giù. Qui ha catturato un piccolo movimento, accade molte volte più grande
2017.05.22 10:53:38.563 '9898616': trailing stop #1465775202 -> 1.29765
2017.05.22 10:53:38.483'9898616': trailing stop #1465775202 -> 1.29764
2017.05.22 10:53:33.236'9898616': trailing stop #1465775202 -> 1.29763
2017.05.22 10:53:33.130'9898616': trailing stop #1465775202 -> 1.29764
2017.05.22 10:53:32.813 '9898616': trailing stop #1465775202 -> 1.29762
L'ho ottenuto quando SL = 2 (ultima cifra per semplicità), nel tick successivo il prezzo è salito e il terminale ha dato un ordine di aumentare SL a 4.
Al tick successivo è sceso ma lo SL è ancora a 2. Il terminale emette un ordine per portare SL a 3.
Il server, come una giraffa dal collo lungo, elaborò il primo ordine e portò SL a 4. Il server ha elaborato il secondo ordine e ha diminuito SL a 3.
Quindi, il terminale invia ordini extra senza senso e questo aumenta il carico sul server.
Inoltre, c'è il rischio di perdite inutili per il trader a causa del movimento inverso di SL.
Questo vale anche per il programma seguito da EA o script . In parte lo correggiamo spostando lo SL a passi di 3...5 pip.
Cosa fare. Salvataggio del valore di SL, emesso nell'ultimo OrderModify.
E poi calcolare l'ordine successivo in base a questo valore.
Sarebbe così: due ordini in meno al server, spostando SL solo in avanti, riducendo il carico della CPU del computer
2017.05.22 10:53:38.563 '9898616': trailing stop #1465775202 -> 1.29765
2017.05.22 10:53:33.130 '9898616': trailing stop #1465775202 -> 1.29764
2017.05.22 10:53:32.813 '9898616': trailing stop #1465775202 -> 1.29762
Quando si modificano gli ordini, è spesso necessario confrontare il TP/SL precedente con il nuovo valore da modificare. Se proviamo a modificarlo con il vecchio valore, otterremo l'errore #1.
Prendiamo l'esempio di confrontare il vecchio SL (100,03) e il nuovo SL (100,02) per USDJPY (Cifre = 2). È scritto nell'aiuto:
Il secondo metodo consiste nel confrontare la differenza normalizzata di due numeri reali con un valore zero. Confrontare la differenza di numeri normalizzati con lo zero è inutile, poiché come risultato di qualsiasi operazione matematica con numeri normalizzati il risultato non è normalizzato.
Cioè, il confronto deve essere fatto in questo modo:
Ma a volte il broker può dare prezzi non normalizzati. E per esempio, abbiamo il prezzo 100,025, non 100,02. Avendo confrontato secondo lo schema di cui sopra, otterremo la differenza di 0,01, cioè possiamo modificarla. Ma avendo passato per la modifica normalizzata a Digits 100.025, in realtà passeremo 100.03 e di conseguenza otterremo l'errore #1.
In generale, per esperienza finora sono giunto alla conclusione che a cifre uguali per le modifiche è meglioconfrontare la differenza dei numeri normalizzati con lo zero (ciò che l'aiuto non raccomanda di fare).
Script da controllare:
A differenza di OrderProfit() in MT4 OrderCommission() memorizza i dati non arrotondati ai centesimi.
SZZ In OrderPrint() la commissione è arrotondata (come nella GUI).
A differenza di OrderProfit() in MT4 OrderCommission() memorizza i dati non arrotondati ai centesimi.
SZZ In OrderPrint() la commissione è arrotondata (come nella GUI).
Quindi, cosa devo fare per ottenere il valore corretto di OrderProfit()+OrderComission()+OrderSwap()?
Di conseguenza, per ottenere il valore corretto di OrderProfit()+OrderComission()+OrderSwap(), cosa bisogna fare?
Niente! Questo è il valore più corretto. A causa di questa commissione, possiamo vedere nella GUI che la commissione totale differisce di un centesimo dalla somma dei numeri mostrati dalla GUI.
Niente! Questo è il valore più corretto. Grazie a questa commissione, si può osservare nella GUI che la commissione totale differisce di un centesimo dalla somma dei numeri che la GUI mostra.
Allora non lo capisco affatto. Cosa intendi per "OrderCommission() memorizza i dati non arrotondati ai centesimi"? Dove sono arrotondati? E come sono arrotondati?