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
Senza conoscere l'intero ea e come lo stai usando, dobbiamo solo indovinare cosa c'è di sbagliato. Supponendo che stia selezionando un ordine corretto per passare questa dichiarazione.
non c'è modo di farlo passare:
if ((orderType == OP_BUY || orderType == OP_BUYSTOP)) {
se è Op_Sell. A meno che tu non abbia questa cosa su più grafici dello stesso simbolo.
Visto che stai usando un ciclo while controverso. Questo è probabilmente una qualche forma di Rapid Order Maker.
La mia ipotesi finale. L'ordine selezionato cambia dopo il controllo Ordertype :)
Per tutto il resto, ti suggerisco come Raptor di utilizzare un sacco di istruzioni di stampa.
Ho stampato il numero del biglietto e non corrisponde all'OrderType().
Se l'ordine selezionato è di tipo OP_BUY, viene elaborato l'if corretto, ma poi nella mia chiamata OrderModify(...), passo OrderTicket() come primo parametro, ma è il ticket di un altro ordine.
Qualche idea?
Qualche idea?
Forse stai cercando di modificare un ordine che è già chiuso? Non stai specificando un pool da cui stai selezionando i tuoi trade.
MODE_TRADES (default) - ordine selezionato dal pool di trading (ordini aperti e in sospeso),MODE_HISTORY - ordine selezionato dal pool storico (ordine chiuso e cancellato).
Forse stai cercando di modificare un ordine che è già chiuso? Non stai specificando un pool da cui stai selezionando i tuoi trade.
MODE_TRADES (default) - ordine selezionato dal pool di trading (ordini aperti e in sospeso),MODE_HISTORY - ordine selezionato dal pool storico (ordine chiuso e cancellato).
Ho provato anche questo, ma non cambia nulla. Sembra che io debba memorizzare tutti i dati dell'ordine selezionato che voglio usare:
int ticket=0;
doppio SL = 0.0;
OrderSelect(cnt, ...);
ticket = OrderTicket();
SL = OrderStoploss();
if (OrderType() == OP_BUY) {
}
...
Perché è così? Non capisco cosa c'è di sbagliato nel mio codice per cui OrderTicket() non corrisponde allo stesso ordine a cui si riferisce OrderType().
Ho stampato il numero del biglietto e non corrisponde all'OrderType().
Se l'ordine selezionato è di tipo OP_BUY, viene elaborato l'if corretto, ma poi nella mia chiamata OrderModify(...), passo OrderTicket() come primo parametro, ma è il ticket di un altro ordine.
orderType = OrderType()
cambiate in
int orderType = OrderType(); e cancellare la dichiarazione originale.
orderType = OrderType()
cambiate in
int orderType = OrderType(); e cancellare la dichiarazione originale.
OrderType è ok. È il OrderTicket() che non è il ticket dell'ordine giusto.
Ti incoraggerei a scoprire cosa sta causando il tuo problema piuttosto che codificare intorno ad esso.
L'ingegneria del software è tutta una questione di problem solving, è così che impariamo e miglioriamo. Sono al mio 3° tentativo da sabato di codificare un particolare problema che ha a che fare con Fibs, ci sono quasi. . un uso attento della funzione Print() aiuta molto . .
OrderType è ok. È il OrderTicket() che non è il biglietto dell'ordine giusto.
int OrderType = OrderType() non va bene, uno potrebbe nascondere l'altro (le dichiarazioni locali nascondono le globali senza errori).
int orderType = OrderType()