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
Oh, shaitan... Convalida superata e ora
nessuna operazione commerciale
non è più un errore.
P.S. Era uno scatto casuale. Il prossimo test è di nuovo la stessa cosa
Non c'è nessun errore qui, non capisco affatto cosa stia succedendo. Ho messo una stampella (divisione per zero) prima della funzione commerciale:
Funziona:
Se lo tolgo, mi dà lo stesso
Nessuna operazione commerciale.
Non capisco cosa impedisce al validatore di OrderSend(). Dopo tutto, se gli arriva, ci devono essere errori di fatturazione (anche se li ho corretti tutti) 130, 131, 134, ..., ma non"nessuna operazione commerciale". Devo solo mettere un ordine pendente da qualche parte lontano in OnInit() per evitare che si attivi.
E che senso ha una tale stampella se la condizione in cui un commercio deve essere eseguito non entra nel codice?
Perché non c'è nessun input? Guarda attentamente Alexey. C'è una stampella appena prima di OrderSend.
Giusto. Se OrderSend non viene eseguito, significa che l'esecuzione del codice non lo raggiunge per qualche motivo. E non importa cosa metti prima nel blocco di condizioni, non c'è nessun input e nessuna esecuzione, nemmeno la divisione per zero.
Aspetta, non capisco. Se l'operatore 1 (divisione per zero) viene eseguito, allora il successivo è l'operatore if. E questo significa controllare le sue condizioni. Per verificare la condizione, la funzione OrderSend deve essere eseguita, il che significa che è la prossima in linea dopo la divisione per zero.
Ma non importa. Ho cambiato il codice per il bene della purezza dell'esperimento:
Il risultato è lo stesso. Il risultato con la stampella è un errore di divisione per zero. Senza la stampella, il risultato è mostrato sopra: nessuna operazione commerciale.
Aspetta, non capisco. Se l'operatore 1 (divisione per zero) viene eseguito, allora il successivo è l'operatore if. E questo significa controllare le sue condizioni. Per verificare la condizione, la funzione OrderSend deve essere eseguita, il che significa che è la prossima in linea dopo la divisione per zero.
Ma non importa. Ho cambiato il codice per il bene della purezza dell'esperimento:
Il risultato è lo stesso. Il risultato con la stampella è un errore di divisione per zero. Il risultato è mostrato sopra senza di essa: nessuna operazione commerciale.
Non avresti dovuto usare un'immagine per incollare il codice. È impossibile leggerlo del tutto. E il problema non è in questo frammento di codice. Il problema è che alcune condizioni non sono soddisfatte in alcuni parametri di input e non c'è alcuna notifica.
Perché non arriva?
Perché cerchi di scrivere peggio per il mercato che per te stesso?
È semplice - prima di inviare un ordine, vedere "è almeno eseguibile?".
controlla i limiti (l'hai detto tu), controlla i fondi e il margine (non ce l'hai), vedi se c'è un collegamento e se il commercio è permesso.
(opzione) se ci sono stati calcoli pesanti, non è un peccato rinfrescare i tassi prima di leggere Bid Ask
Per il vostro bene farete tutti questi controlli. Perché non ora?
Pensi che io non controlli. La dimensione del lotto è controllata in una funzione separata
I limiti non sono necessari qui, perché Stop Loss e Take Profit sono uguali a zero all'apertura della negoziazione.RefreshRates() aggiorna i dati al calcolo del lotto. Certo, non c'è nessun controllo di connessione, ecc. prima di ogni ingresso, ma non è questo il punto. Se OrderSend inviasse una richiesta, ci sarebbe un errore specifico: 130, 131, ecc. Ma quello che ho è.
Non si tratta affatto di inviare un ordine da aprire. Anche nell'ultimo test, quando ho impostato una posizione di controllo nella funzione OnInit().
Non avresti dovuto incollare il codice in un'immagine. È impossibile leggerlo. Il problema non è in questo frammento di codice. Il problema è che qualche condizione non è soddisfatta in alcuni parametri di input e non c'è alcuna notifica di questo fatto.
Può essere. Ma ho già ricontrollato tutto. Non so dove scavare dopo.
Pensi che io non controlli. La dimensione del lotto è controllata in una funzione separata
I limiti non sono necessari qui, perché Stop Loss e Take Profit sono uguali a zero all'apertura della negoziazione.RefreshRates() aggiorna i dati al calcolo del lotto. Certo, non c'è nessun controllo di connessione, ecc. prima di ogni ingresso, ma non è questo il punto. Se OrderSend inviasse una richiesta, ci sarebbe un errore specifico: 130, 131, ecc. Ma quello che ho è.
Non si tratta affatto di inviare un ordine da aprire. Anche nell'ultimo test, quando ho impostato una posizione di controllo nella funzione OnInit().
È possibile. Ma ho già ricontrollato tutto. Non so dove andare dopo.
Guardate come sono stati implementati altri ordini nell'EA. Non credo che l'Expert Advisor apra solo
all'apertura ticket<0 è stato impostato - guarda l'altra logica, come reagisce a questo in realtà