"Errore "L'ordine non può essere trovato
3 risposte
odomike
12 anni fa #111948
Ciao,
Ho deciso di creare un EA basato sul sistema di trading manuale SonicR (http://www.forexfactory.com/showthread.php?t=114792). Invece di utilizzare gli stessi indicatori personalizzati utilizzati nella strategia, ho deciso di utilizzare gli indicatori standard della MT4 (EMA 34 High e Low, CCI Period 63, SMA 10 Close) per replicare la strategia. Questo per essere sicuro di non incontrare problemi con SQ EA Wizard. Non ho avuto alcun problema con l'impostazione della strategia e delle regole di trading in SQ, ma dopo aver salvato il file .mql4 e aver effettuato il test in metatrader 4, ottengo sempre questo errore "ORDER CANNOT BE FOUND" nel giornale del tester e l'EA non effettua alcuna operazione. È così confuso perché ho esaminato la strategia e le regole di trading più e più volte per assicurarmi che non ci siano errori di sorta e non riesco a vederne. Allora perché ricevo questi errori?
Qualcuno può aiutarmi a risolvere questo problema? Apprezzo molto tutti i vostri gesti gentili.
Grazie in anticipo.
~Michael.
N.B.: Poiché non ho utilizzato alcun indicatore personalizzato per creare la strategia, è possibile replicarla molto facilmente sul proprio computer.
0
stearno
12 anni fa #123679
Odomike,
Il problema è che 3 regole si incrociano sopra/sotto allo stesso tempo in questo EA. Una buona regola empirica è quella di far incrociare una sola regola sopra/sotto mentre le altre regole utilizzano invece > o <.
Ho messo i vostri indicatori su un grafico per mostrare il perché.
Le piccole linee verticali blu mostrano quando la candela incrocia la MA1, poi la MA2 e infine quando il CCI incrocia il livello 2. Ci sono 6 candele tra l'incrocio della prima MA e l'incrocio del CCI. Poiché non tutte si incrociano esattamente nella stessa barra, è per questo che si riceve il messaggio di errore.
Pertanto, è necessario utilizzare il Cross Below/Above per l'ultimo elemento che si incrocia nella sequenza dei tre indicatori. Ad esempio, se il CCI è sempre l'ultimo elemento da incrociare, si possono utilizzare queste regole:
Lungo
Il CCI supera il livello 1
Offerta > MA1
Offerta > MA2
Se un indicatore non è sempre l'ultimo a incrociarsi, cioè può incrociarsi in qualsiasi ordine, è possibile scrivere le regole in base a questo criterio. Quindi le regole potrebbero essere:
Lungo
(((( Il CCI supera il livello 1
Offerta > MA1
Offerta > MA2)
OR (CCI > Livello 1
L'offerta incrocia la MA1
Offerta > MA2)
OR (CCI > Livello 1
Offerta > MA1
L'offerta incrocia sopra la MA2)))
Spero che questo sia d'aiuto.
-Stearno
0
odomike
12 anni fa #123711
0
stearno
12 anni fa #124327
Michael,
Buone domande.
Per limitare il tempo, ho allegato le schermate di ciò che faccio personalmente. Utilizzo l'ora rispetto a una variabile. Poi imposto le variabili nei parametri per le ore che voglio negoziare.
Personalmente utilizzo due serie di ore in modo da avere la possibilità di operare in due sessioni in un giorno (ad esempio, London Open e NY Open). Utilizzo parametri per impostare le variabili in modo da poterle ottimizzare. Potete prendere questa stessa idea e fare molte variazioni che si adattano meglio a ciò che desiderate.
La tua strategia mi sembra corretta. Hai provato a fare un backtest? A proposito, ho scoperto che è sempre meglio fare prima un backtest per vedere se gli ordini vengono eseguiti e così via. Ma poi faccio un backtest visivo per osservare gli indicatori che l'EA utilizzerà sul grafico, in modo da poter vedere visivamente ogni volta che l'EA deve aprire o chiudere un ordine e assicurarmi che stia facendo ciò che voglio. Posso quindi dedurre perché non lo fa e imparare a dire meglio al computer, attraverso queste condizioni, come fare ciò che voglio.
Per quanto riguarda le altre domande su quando usare >< e quando usare la croce sopra/sotto.
Un modo semplice da ricordare che uso per tenerli differenziati è: incroci sopra/sotto, l'inizio della barra deve essere su un lato e la fine della barra sull'altro lato.
Con ><, la scelta di questa opzione è molto più libera, in quanto significa che la barra deve essere al di sopra o al di sotto dell'elemento di confronto. Non importa se è andata al di sopra ora, molte barre indietro, è sempre stata al di sopra, ecc. L'unica cosa che conta è che in questo momento, quando l'EA esegue questa regola, deve essere maggiore o minore di (sopra o sotto).
Ho incluso un piccolo grafico per illustrare con immagini. La linea rossa è la media mobile.
Se dico che Close[1] < media mobile, la barra 'A' è quella che ottengo.
Se dico che Close[1] > Moving Average, la barra 'C' è quella che otterrei.
Se dico che Close[1] incrocia sopra la media mobile, la barra 'B' è quella che ottengo.
In sostanza, dobbiamo chiederci: "In quel momento (nell'esempio precedente, utilizziamo la chiusura dell'ultima barra per quel momento, Close[1]), voglio che il mio indicatore sia al di sopra della chiusura, al di sotto della chiusura, o voglio che il minimo dell'ultima barra sia su un lato dell'indicatore e il massimo sull'altro lato".
Forse un esempio può essere utile. Ecco un esempio di ciò che ho imparato utilizzando questi confronti:
Quando si utilizzano > 30 pips. Quindi, quando l'ordine ha raggiunto un profitto di 29 pips e il successivo è passato a 30 pips, la regola ha attivato l'azione per chiudere il 50% dell'ordine. Nella barra successiva, l'ordine è passato a 31 pips di profitto. Indovinate un po'. Il profitto dell'ordine è ancora superiore a 30 pip. Quindi l'azione è stata attivata di nuovo e ha chiuso 50% dell'ordine. Questo è continuato fino a quando c'era solo un mini lotto e non è stato più possibile chiudere 50%. Ma devo dire che il backtesting è stato divertente perché quando guardavo l'EA visivamente, chiudeva gli ordini come una mitragliatrice.
Così ho capito che la causa di questo problema era perché ho usato Profit > 30 pip. E quello che non ricordavo è che 31, 32, 33, 34 pips sono tutti maggiori di 30. Quindi ho usato la chiusura 50% quando Profit incrocia sopra 30 pips. Così ha funzionato, è passato da 29 a 30 pips in una barra, e poi ha chiuso 50% del mio ordine. Ora, quando è salito a 31, 32, 33, 34 pips di profitto, non chiude più gli ordini.
Ma il problema con questa regola era quando il profitto scendeva a 25, poi risaliva a 29 e 30 e chiudeva 50% dell'ordine perché la regola era di nuovo soddisfatta. (Questo non è correlato, ma il modo in cui ho risolto il problema è stato che quando la regola chiudeva 50% dell'ordine, impostava anche il valore di una variabile a 2. Ho quindi aggiunto un'altra condizione alla regola che diceva di non fare una chiusura parziale quando quella variabile era = 2. Questo ha risolto il mio problema e ha fatto in modo che solo la regola fosse soddisfatta. Questo ha risolto il mio problema e ha fatto in modo che si chiudesse solo una volta).
Spero che quanto sopra sia di aiuto.
-Stearno
0
Stai visualizzando 3 risposte - da 1 a 3 (di 3 totali)