[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 176

 
eddy:
Come si definisce l'ultimo ordine? Per tempo. Bene, guardate nel codice per vedere quale ordine è il più recente per tempo


L'ho già capito da solo. Ma continuo a non capire il tuo ultimo consiglio. È possibile estrarre tutti gli ordini e vedere quale è stato l'ultimo in tempo? Quindi, vuoi estrarre tutti gli ordini e confrontare i tempi di chiusura di tutti gli ordini? Mostrami il codice come fare questo.

Ho risolto in questo modo:

int z;
int _bar;

int start()

{

z=OrdersHistoryTotal()-1;
OrderSelect(z,SELECT_BY_POS,MODE_HISTORY);
if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)
{
if(OrderProfit()> 0)
PlaySound("profit.wav");
if(OrderProfit()== 0)
PlaySound("zero.wav");
if(OrderProfit()< 0)
PlaySound("loss.wav");
}

Risulta che se si sostituisce 1 a z, verrà selezionato l'ordine più vecchio, che logicamente è l'ultimo, quindi ho preso OrdersHistoryTotal() (restituisce il numero di ordini nella storia) e l'ho sostituito al posto dell'indice. Tuttavia, si scopre che OrdersHistoryTotal() restituisce 1 in più di quanto sia in realtà. La mia storia ha avuto 6 ordini, ma OrdersHistoryTotal() restituisce 7 ordini. Pertanto, ho scritto z=OrdersHistoryTotal()-1;. Ma non sapevo prima cosa usare nell'indice per selezionare l'ultimo. Ho dovuto capirlo da solo perché nessuno mi ha detto niente.

 
Reaktiv:

if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)

Questo è fondamentalmente sbagliato e non funzionerà sempre anche nel tester.
 
sergeev:
è fondamentalmente sbagliato, e non sempre funzionerà anche in un tester.

Quindi, per favore, mostratemi come farlo bene. Sapete, ci sono un sacco di esempi nel libro di testo che non esistono.
 
Reaktiv:

Quindi, per favore, mostratemi come farlo correttamente, perché sapete che il libro di testo non contiene molti esempi.

qualsiasi soluzione dipende dagli obiettivi fissati.

Se vuoi trovare l'ultimo ordine nella storia è una cosa, ma se vuoi determinare come si è chiuso l'ultimo ordine del tuo EA, è un'altra cosa.

 
sergeev:

qualsiasi soluzione dipende dagli obiettivi che ti poni.

Se vuoi trovare l'ultimo ordine nella cronologia è una cosa, ma se vuoi solo sapere come si è chiuso l'ultimo ordine del tuo EA, è un'altra.


Voglio che la musica inizi a suonare dopo che l'ordine è chiuso e a seconda di quale sia il profitto, la musica suonerà. Nel mio esempio volevo che suonasse se sono passati da 1 a 7 secondi dalla chiusura dell'ordine.
 

allora lo schema dovrebbe essere il seguente

1. Al momento di un OrderSend riuscito si deve ricordare il biglietto d'ordine(GlobalVariableSet)

2. Ad ogni tick, controlla il biglietto di questo ordine ricordato(GlobalVariableGet) per la chiusura(OrderCloseTime)

Se l'ordine è chiuso, allora date un suono appropriato per il profitto e cancellate il biglietto memorizzato(GlobalVariableDel)

4. Se vuoi ancora controllare per 1-7 secondi, allora questo controllo può essere incluso nell'analisi, ma devi ricordare che i tick possono arrivare con un ritardo di 10 secondi o più, e perderai il segnale.

 
sergeev:

allora lo schema dovrebbe essere il seguente

1. Al momento di un OrderSend riuscito si deve ricordare il biglietto d'ordine(GlobalVariableSet)

2. Ad ogni tick, controlla il biglietto di questo ordine ricordato(GlobalVariableGet) per la chiusura(OrderCloseTime)

Se l'ordine è chiuso, allora date un suono appropriato per il profitto e cancellate il biglietto memorizzato(GlobalVariableDel)

4. Se vuoi ancora controllare per 1-7 secondi, allora questo controllo può essere incluso nell'analisi, ma devi ricordare che i tick possono arrivare con un ritardo di 10 secondi o più, e perderai il segnale.



OrderSend deve essere inviato dall'Expert Advisor o non fa differenza? Il sistema si basa sul fatto che io stesso apro le offerte manualmente. L'Expert Advisor modifica l'ordine dopo la sua apertura (mette degli stop) e poi suona la musica quando chiude una posizione. Per quanto riguarda il fatto che i tick possano essere ritardati di 10 secondi, lo capisco. Non ho intenzione di usare EA in un momento come questo. Uso il mio EA su EUROBAX dalle 9 del mattino alle 18 del pomeriggio, dove tale ritardo è improbabile.
 
Reaktiv:

E l'advisor stesso modifica l'ordine (mette degli stop) quando il trade è aperto

Allora nel vostro caso questo punto sarà il punto in cui viene preso il biglietto d'ordine.
 
sergeev:
allora nel vostro caso questo è il punto in cui viene preso il biglietto d'ordine.

grazie
 
Reaktiv:
Volevo che la musica suonasse se sono passati da 1 a 7 secondi dalla chiusura dell'ordine.
Perché? Si può semplicemente suonare la musica una volta che l'ordine è stato chiuso