Ho bisogno di aiuto per individuare qualche piccolo errore. - pagina 3

 

La condizione && e || lunga, ho suddiviso la parte in molti if concatenati. Ho anche provato ad usare MarketInfo(OrderSymbol() , MODE_ASK/BID) invece di OrderClosePrice().

Questa parte funziona ancora a volte e non sempre, ho anche provato quei suggerimenti che tutti voi mi avete dato, ma alla fine è sempre la stessa cosa.

Non sono sicuro se è questo che causa il problema o è qualcos'altro. Ma da quelle prove ed errori questo è quello che ho notato.

Sembra che sempre la parte più in basso dell'ordine aperto non voglia spostare lo stop loss ANCHE se la condizione è soddisfatta (la condizione && e || lunga e i molti if concatenati, ho provato entrambi).

Le impostazioni EA:

Conto 1 prima :


Conto 1 dopo :

Per questo conto 1, il 1° e il 2° ordine non hanno soddisfatto la condizione if/if + && e ||, quindi lo stop loss non è stato spostato (il che è corretto).

Il 3 ° ordine però, già incontrato la condizione e dovrebbe seguire fino al 10 °, ma stop loss è stato spostato solo una volta. ( sbagliato sbagliato sbagliato )

Avrebbe dovuto muoversi più di una volta ( dovrebbe essere 50.0 pips secondo i miei calcoli , non 5.0 pips ) .

Conto 2 prima:

Conto 2 dopo :

Per questo conto 2, solo il 1° ordine non ha soddisfatto la condizione, quindi di nuovo nessuno stop loss è stato spostato (il che è corretto). Il 2° e il 3° ordine hanno soddisfatto la condizione e QUI C'E' LA PARTE STRAORDINARIA.

Il 2° ordine segue esattamente fino al 10°, lo stop loss è stato spostato esattamente 10 volte. Lo stop loss è stato spostato a 50.0 pips dal prezzo di apertura di quell'ordine individuale (il che è corretto).

Il 3° ordine invece ha soddisfatto la condizione e dovrebbe seguire fino al 3°, ma ancora una volta lo stop loss è stato spostato una sola volta (di nuovo sbagliato :()).

Avete tutti notato che entrambi i conti in cui la parte di trailing non funziona correttamente è all'ultimo ordine?

Se USDJPY può funzionare, dovrebbe essere in grado di applicarsi a tutte le altre coppie. Non sono sicuro di cosa fare.

Io uso un count back for loop che ho letto dove RaptorUK ha insegnato dovrebbe essere buono però. Conteggio all'indietro non dovrebbe essere il problema anche.

Anche la scheda degli esperti non ha mostrato alcun errore ....

@.@ T_T

 
Sei sicuro che il prezzo non abbia ritracciato e fermato dopo la prima traccia?
 
Mi scusi, non ho capito bene cosa intende... A quale prezzo ti riferisci? Fermarlo dopo la prima traccia?
 
Ora capisco cosa vuoi dire, non ho letto correttamente i risultati degli scambi la prima volta
 
SDC:
Ora capisco cosa vuoi dire, non ho letto correttamente i risultati degli scambi la prima volta
Non ho ancora idea di cosa ci sia di sbagliato .... Hai idea di dove ho sbagliato?
 
      if ( ( OrderStopLoss() == 0 ) || (OrderStopLoss() != 0 && OrderStopLoss() <= OrderOpenPrice() ) || ( OrderStopLoss() < ( OrderOpenPrice() + ( TrailingStop * Figure ) ) ) )
                              {
 

Ho provato, ancora lo stesso ffoorr ....

Ho provato molte volte, è sempre l'ultimo ordine che non viene modificato correttamente .... Il conto alla rovescia per il ciclo causa questo problema? Non credo, ma non so perché non funziona correttamente...

 

juniorlcq:

Il conto alla rovescia per il ciclo causa questo problema?


non importa se si conta in alto o in basso (trailing stoploss)

cancellando o chiudendo una transazione si deve fare il conto alla rovescia

 

Ho provato a contare anche verso l'alto, stesso problema ancora.

E' il 2° ciclo for che ha già modificato l'ordine e ho dovuto riselezionare di nuovo?

All'inizio ho selezionato l'ordine, e al 2° ciclo for la condizione soddisfatta ha modificato l'ordine. Devo riselezionare di nuovo?

 

OrderSelect

La funzione OrderSelect() copia i dati degli ordini nell'ambiente del programma e tutte le ulteriori chiamate di OrderClosePrice(), OrderCloseTime(), OrderComment(), OrderCommission(), OrderExpiration(), OrderLots(), OrderMagicNumber(), OrderOpenPrice(), OrderOpenTime(), OrderPrint(), OrderProfit(), OrderStopLoss(), OrderSwap(), OrderSymbol(), OrderTakeProfit(), OrderTicket(), OrderType() restituiscono i dati copiati in precedenza. Ciò significa che in alcuni casi i dettagli dell'ordine (prezzo aperto, livelli SL/TP o data di scadenza) possono cambiare e i dati diventano non reali. Si raccomanda vivamente di chiamare la funzione OrderSelect() prima di richiedere i dati dell'ordine.

Motivazione: