Come lavorare correttamente in MT5 con OrderSend - pagina 6

 
Alexey Viktorov:

Il primo EA si rende conto che dopo il suo OrderSend la storia non è ancora sincronizzata. Sta solo aspettando l'evento della sincronizzazione.

Ma come fa il secondo Expert Advisor a capire che la storia è sincronizzata o no?

 
fxsaber:

Il primo EA si rende conto che dopo il suo OrderSend la storia non è ancora sincronizzata. Sta solo aspettando l'evento della sincronizzazione.

Ma come fa il secondo Expert Advisor a capire che la storia è sincronizzata o no?

Dimenticate la storia. Provate a studiare il comportamento della funzione OnTradeTransaction().

Il primo Expert Advisor ha messo una posizione e questo evento è gestito in OnTradeTransaction dove viene attivato l'ordine sbagliato... Questo evento è gestito anche in OnTradeTransaction.

Il secondo Expert Advisor setaccia anche gli ordini, le posizioni e i trade che non sono i suoi.

Ho 2 EAs che lavorano in conti reali. In uno di essi il mago della posizione assegna un biglietto alla posizione a cui dovrebbe essere attaccato. E tu stesso capisci che non sono due maghi diversi...

Credo che il tuo nome sia Victor? Iniziate a impostare due posizioni con diversi maghi nel debug e tracciate le loro strutture in OnTradeTransaction.

 
Alexey Viktorov:

Dimenticate la storia. Provate a studiare il comportamento della funzione OnTradeTransaction().

Il primo Expert Advisor ha piazzato una posizione, OnTradeTransaction gestisce questo evento, i "non loro" vengono setacciati, l'ordine viene attivato... OnTradeTransaction gestisce anche questo evento.

Il secondo Expert Advisor setaccia anche gli ordini, le posizioni e i trade che non sono i suoi.

Ho 2 EAs che lavorano in conti reali. In uno di essi il mago della posizione assegna un biglietto alla posizione a cui dovrebbe essere attaccato. E tu stesso capisci che non sono due maghi diversi...

Credo che il tuo nome sia Victor? Iniziate a impostare due posizioni con diversi maghi nel debug e tracciate le loro strutture in OnTradeTransaction.

Se guardate attentamente i miei registri, potete vedere

che il biglietto è ricevuto più velocemente di quanto OnTradeTransaction sia attivato, quindi

il biglietto d'ordine sarà sufficiente.

Anche se, ovviamente, (in questo caso) è meglio usare Magik.

E (meglio ancora) usare OrderSendAsync - non ci sono errori, né su FOREX, né su FORTS.

 
prostotrader:

Se guardate attentamente i miei registri, potete vedere,

che il biglietto viene ricevuto più velocemente dell'OnTradeTransaction, quindi

il biglietto d'ordine sarà sufficiente.

Anche se, naturalmente (in questo caso) sarebbe meglio usare Magician.

E (per ora) è meglio usare OrderSendAsync - non ci sono errori, né su FOREX, né su FORTS.

Forse, può essere così. Ma cosa succede se l'ordine pendente viene attivato? Dobbiamo analizzare la storia? Un altro problema con la velocità di sincronizzazione dell'ambiente?

Tutto sommato, è un gioco da dilettanti. La cosa principale è farla funzionare, non rallentare troppo e...

 
Alexey Viktorov:

Dimenticate la storia. Provate a studiare il comportamento di OnTradeTransaction()

Come funziona il secondo durante una storia non sincronizzata?

Questo problema non riguarda solo MT5, ma anche quadruplo.

 
fxsaber:

Come funziona il secondo durante una storia non sincronizzata?

Questo problema non riguarda solo MT5 ma anche il quadruplo.

Sono sempre più sicuro che ti chiami Victor. Non dirò a nessuno il tuo soprannome passato.

Avete padroneggiato la programmazione ad un livello superiore alla media in poco tempo, a mio parere, anche sopra la media. Ma è molto difficile smuoverla dalla sua posizione errata. E ora che il tuo livello di conoscenza della programmazione è superiore al mio, non ci provo nemmeno.

Dimentica la storia, vedi le strutture della funzione OnTradeTransaction.

Cercate di spiegare a parole, come fate a determinare in mql5 che un ordine pendente è attivato?

 
Alexey Viktorov:

Sono sempre più sicuro che ti chiami Victor. Non dirò a nessuno il tuo vecchio soprannome.

Hai imparato a programmare in poco tempo...

In realtà, è un'altra reincarnazione di hrenfx. Ha deciso di venire in un modo nuovo.
 
prostotrader:

Se guardate attentamente i miei registri, potete vedere,

che il biglietto viene ricevuto più velocemente dell'OnTradeTransaction, quindi

il biglietto d'ordine sarà sufficiente.

Anche se, naturalmente (in questo caso) sarebbe meglio usare Magician.

E (per ora) è meglio usare OrderSendAsync - non ci sono errori, né su FOREX, né su FORTS.

E qual è il vantaggio di OrderSendAsync()? Non aspetta la risposta nei risultati. Significa che deve essere preso più tardi. Non è chiaro quale sia il vantaggio.
 
prostotrader:

OrderSend() è una funzione assolutamente sincrona - se viene ricevuto un biglietto, tutto viene eseguito.

Qui sotto c'è un esempio

Aggiunto, ed ecco i registri

https://www.mql5.com/ru/forum/38456/page85#comment_2888263

Grazie!
 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Come posso conoscere la mia commissione senza aprire una posizione su un simbolo?

fxsaber, 2016.11.08 20:30

#include <MT4Orders.mqh>

void OnStart()
{
  const int Ticket = OrderSend(_Symbol, OP_BUY, 1, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 0, 0, 0);
  
  OrderClose(Ticket, 0.3, SymbolInfoDouble(_Symbol, SYMBOL_BID), 0, clrNONE);

  Sleep(1000); // ждем обновления истории
  
  if (OrderSelect(Ticket, SELECT_BY_TICKET))
    Alert(OrderCommission());
}

Credo che questo esempio sia illustrativo.

Se non si fa Sleep, si ottiene spesso una situazione in cui la storia non ha avuto il tempo di aggiornarsi dopo OrderClose e OrderCommission restituisce un valore come se OrderClose non fosse stato fatto.

Si noti che questo è uno script e non ci possono essere Event-overs. L'unica via d'uscita è uno stupido Sonno.

Se riscrivete questo script con SB, non cambierà nulla.

Motivazione: