nel primo se un ordine fallisce verrà restituito un valore di -1, ma il bool lo interpreterà come TRUE
nel secondo, state usando la condizione (Ordersend>0) per assegnare vero o falso al booleano.
È vero? Non sono in grado di testarlo su un conto demo (Live trade) ora, ma ho fatto una rapida verifica su un backtest interrompendo appositamente OrderSend() con stoploss non valido = ask (prezzo di mercato) per un trade lungo. Il risultato è che OrderSend() restituisce "-1" come previsto e anche il mio bool var Buy_Ticket restituisce falso.
** MODIFICA
Ti è sfuggita la mia condizione "> 0" dietro OrderSend()? Il mio codice originale mostra:
È vero? Non sono in grado di testarlo su un conto demo (Live trade) ora, ma ho fatto qualche rapida verifica su un backtest disturbando appositamente OrderSend() con stoploss non valido = ask (prezzo di mercato) per un trade lungo. Il risultato è che OrderSend() restituisce "-1" come previsto e anche il mio bool var Buy_Ticket restituisce falso.
** MODIFICARE
Ti sei perso le mie condizioni "> 0" dietro OrderSend()? Il mio codice originale mostra:
Scusa, sì, mi è mancato il >0.
Immagino che sia un modo così strano di procedere che non l'ho notato.
L'operatore di assegnazione può essere usato più volte in un'espressione. In questo caso l'elaborazione dell'espressione viene eseguita da sinistra a destra:
y=x=3;
Prima, alla variabile x sarà assegnato il valore 3, poi alla variabile y sarà assegnato il valore di x, cioè anche 3.
Immagino che sia un modo così strano di procedere che non l'ho notato.
Nessun problema.
Sono d'accordo che non è una buona pratica codificarlo in quel modo; ho codificato quella parte nella fase iniziale del mio apprendimento del MQL, ma poiché mi sembrava corretto per tutto questo tempo, l'ho lasciato stare fino a quando non si è verificato questo problema di commercio duplicato. Ma a quanto pare, ora "sembra" che il mio codice originale anche se confuso appaia valido, allora si ritorna all'argomento originale di questo thread "Duplicate trades.."; questo potrebbe essere un serio e altamente sgradito bug "raro" in mt4, che purtroppo non sono in grado di riprodurre a causa della sua rara apparizione (1 su oltre 500+ trades).
Per le informazioni di chiunque, a causa di come ho codificato il mio EA (fare riferimento al mio 1 ° post in pg5), SL & TP è stato assegnato solo dopo aver rilevato il successo di OrderSend() (IMHO è piuttosto infallibile fino ad ora). E quello che è successo al mio precedente trade duplicato è stato che non è MAI riuscito a impostare SL & TP per qualche ragione sconosciuta; oltre a OrderSend() che restituisce "-1" ma ha aperto un trade comunque O "ha" aperto 2 trade simultanei in un OrderSend() ** solo una mia speculazione **. Fortunatamente ero davanti al mio PC quando è successo, così ho potuto chiuderlo manualmente; immaginate cosa succederebbe se fossi via per una vacanza.
C'è una differenza tra
e quello che state facendo voi
nel primo se un ordine fallisce verrà restituito un valore di -1, ma il bool lo interpreterà come TRUE
nel secondo, stai usando la condizione (Ordersend>0) per assegnare vero o falso al booleano.
C'è una differenza tra
e quello che state facendo voi
nel primo se un ordine fallisce verrà restituito un valore di -1, ma il bool lo interpreterà come TRUE
nel secondo, state usando la condizione (Ordersend>0) per assegnare vero o falso al booleano.
È vero? Non sono in grado di testarlo su un conto demo (Live trade) ora, ma ho fatto una rapida verifica su un backtest interrompendo appositamente OrderSend() con stoploss non valido = ask (prezzo di mercato) per un trade lungo. Il risultato è che OrderSend() restituisce "-1" come previsto e anche il mio bool var Buy_Ticket restituisce falso.
** MODIFICA
Ti è sfuggita la mia condizione "> 0" dietro OrderSend()? Il mio codice originale mostra:
È vero? Non sono in grado di testarlo su un conto demo (Live trade) ora, ma ho fatto qualche rapida verifica su un backtest disturbando appositamente OrderSend() con stoploss non valido = ask (prezzo di mercato) per un trade lungo. Il risultato è che OrderSend() restituisce "-1" come previsto e anche il mio bool var Buy_Ticket restituisce falso.
** MODIFICARE
Ti sei perso le mie condizioni "> 0" dietro OrderSend()? Il mio codice originale mostra:
Scusa, sì, mi è mancato il >0.
Immagino che sia un modo così strano di procedere che non l'ho notato.
@ BigFisherman controlla il codice qui sotto
vedere qui
L'operatore di assegnazione può essere usato più volte in un'espressione. In questo caso l'elaborazione dell'espressione viene eseguita da sinistra a destra:
y=x=3;
Prima, alla variabile x sarà assegnato il valore 3, poi alla variabile y sarà assegnato il valore di x, cioè anche 3.
Scusa, sì, mi è sfuggito il >0.
Immagino che sia un modo così strano di procedere che non l'ho notato.
Nessun problema.
Sono d'accordo che non è una buona pratica codificarlo in quel modo; ho codificato quella parte nella fase iniziale del mio apprendimento del MQL, ma poiché mi sembrava corretto per tutto questo tempo, l'ho lasciato stare fino a quando non si è verificato questo problema di commercio duplicato. Ma a quanto pare, ora "sembra" che il mio codice originale anche se confuso appaia valido, allora si ritorna all'argomento originale di questo thread "Duplicate trades.."; questo potrebbe essere un serio e altamente sgradito bug "raro" in mt4, che purtroppo non sono in grado di riprodurre a causa della sua rara apparizione (1 su oltre 500+ trades).
Per le informazioni di chiunque, a causa di come ho codificato il mio EA (fare riferimento al mio 1 ° post in pg5), SL & TP è stato assegnato solo dopo aver rilevato il successo di OrderSend() (IMHO è piuttosto infallibile fino ad ora). E quello che è successo al mio precedente trade duplicato è stato che non è MAI riuscito a impostare SL & TP per qualche ragione sconosciuta; oltre a OrderSend() che restituisce "-1" ma ha aperto un trade comunque O "ha" aperto 2 trade simultanei in un OrderSend() ** solo una mia speculazione **. Fortunatamente ero davanti al mio PC quando è successo, così ho potuto chiuderlo manualmente; immaginate cosa succederebbe se fossi via per una vacanza.
@ BigFisherman controlla il codice qui sotto
Buy_Ticket restituisce true come previsto. Cosa stai cercando di dire?
Non sto cercando di dire, sto dicendo!
se lo usate in questo modo
ovviamente otterrete true se OrderSend() è stato eseguito
perché prima viene esaminato se il risultato di OrderSend è > 0
e poi è stato passato a
ma comunque non è il modo giusto di gestirlo
Non sto cercando di dire, sto dicendo!
se lo usate in questo modo
ovviamente otterrete true se OrderSend() è stato eseguito
perché prima viene esaminato se il risultato di OrderSend è > 0
e poi è stato passato a
ma comunque non è il modo giusto di gestirlo
Ora so di chi è il post da filtrare in mql4, grazie comunque per il tuo contributo.
y=x=3;Ho provato a farlo, ma MetaEditor mi ferma sempre ogni volta che provo a compilare.Ora so di chi è il post da filtrare in mql4,
nota: il mio nome utente in mql5 è lo stesso