MT5 e la velocità in azione - pagina 6

 
A100:

Si suggerisce di ritornare ripetutamente fino a leggere l'intera coda corrente o per un determinato numero di eventi. Quando gli eventi commerciali sono finiti, ci sarà un ritorno del timer e avrai accesso a tutti gli eventi in una volta sola

Beh, dirò qualcosa... Certo, certo, IMHO, ma sta chiedendo di eseguire il gestore in un thread separato. Quindi, pensando ad alta voce...

E se lo fai per te stesso, metti tutto fuori e ogni gestore sarà qualcosa di simile:

void OnXXX{
 gOnXXXMutex.Lock();
 COnXXXOverlapped overlapped=new COnXXXOverlapped(<param_list>);
 gOnXXXOverlappedList.PushBack(overlapped);
 gOnXXXMutex.Unlock();
 DLLOnXXX(<param_list>,overlapped,&gOnXXXMutex);
}
 
A100:
c'è una soluzione più elegante, senza OnTimer... pensateci

Pensate da soli perché non funzionerebbe.

 
fxsaber:

Pensate da soli perché non funzionerebbe.

E non c'è bisogno di pensare - il mercato si è appena aperto, ho controllato - tutto funziona, fino al calcolo della linea

if (наблюдаемая позиция закрылась по тейку)

glieventi commerciali sono stati aggiunti alla coda e possono essere letti

 
A100:

E qui non c'è bisogno di pensare - il mercato ha appena aperto, ho controllato - tutto funziona, fino alla linea

gli eventi commerciali sono stati aggiunti alla coda e possono essere letti

Spiacente, ma non vi spiegherò nulla nella vostra comprensione del funzionamento corretto. Stanco di dover scrivere cose semplici.

 
fxsaber:

Spiacente, ma non ho nemmeno intenzione di spiegare nulla nella sua comprensione del funzionamento corretto. Sono stanco di dover spiegare cose semplici.

Se non vuoi spiegarlo, non spiegarlo. Vi ho appena mostrato che aggiungendo

bool HandleNextEvent (ENUM_EVENT_TYPE);

non cambia fondamentalmente nulla

 
A100:

non cambia fondamentalmente

Fa una grande differenza. Sembra solo che ci voglia molto tempo (con un risultato sconosciuto) per rendere l'idea ovvia in molte teste.

 
fxsaber:

Fa una grande differenza. Sembra solo che ci voglia molto tempo(con risultato sconosciuto) per rendere questa idea evidente in molte teste.

Non molto, perché secondo la Teoria della Semplicità di Einstein: "Se non puoi spiegarlo semplicemente, non lo capisci tu stesso".

 
A100:

Non è necessario, perché secondo la Teoria della Semplicità di Einstein: "Se non puoi spiegarlo semplicemente, allora non lo capisci fino in fondo".

Sì, non l'hai capito.

 
fxsaber:

Sì, non ha funzionato per te.

E non ho cercato di spiegare nulla - ho fatto un esempio e ho ottenuto dei risultati:

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

MT5 e la velocità in azione

A100, 2020.05.31 23:23

...mercato appena aperto, ho controllato - tutto funziona, prima del calcolo della linea

if (наблюдаемая позиция закрылась по тейку)

gli eventi commerciali sono stati aggiunti alla coda e possono essere letti

Si scopre che è possibile leggere gli eventi commerciali da OnMain(). Lei ha affermato il contrario
 
A100:

Non ho cercato di spiegare nulla - ho fatto un esempio e ho ottenuto il risultato:

Si è scoperto che è possibile leggere gli eventi commerciali da OnMain(). Lei ha affermato il contrario.

Non avete capito niente. Quando ritorniamo, entriamo nella funzione On della coda formata. Può causare una pausa che impedisce l'invio del secondo corretto subito dopo il primo OrderSend.

Lei propone di accumulare la coda salvando tutte le funzioni On dopo il ritorno, in attesa della funzione On, in cui ci sarà un messaggio sulla fine del primo OrderSend. E poi inviare solo il secondo OrderSend.

Allo stesso tempo non capite che la posizione take può essere eseguita durante il primo OrderSend, ma la sua OnTradeTransaction sarà nella coda più tardi (nello stesso microsecondo, ma più tardi) rispetto alla OnTradeTransaction finale del primo OrderSend.

Motivazione: