Organizzazione del ciclo dell'ordine - pagina 6

 
Alexey Viktorov:

mettere un controllo sulla modifica dell'elenco degli ordini

In questo modo la reindicizzazione non sarà contabilizzata.

È chiaro che se sono stati aggiunti, loro o altri mancheranno. Ma se fossero semplicemente cancellati? Non potremo lasciare la lista degli ordini?

Quindi, non c'è niente di sbagliato - otterremo un errore durante OrderSelect.

 
fxsaber:

In questo modo la reindicizzazione non sarà presa in considerazione.

Va bene - otterremo un errore su OrderSelect.

1. Cosa significa indicizzazione/reindicizzazione? A mio parere, e segnalarlo nel ... mani, perché inizieremo un nuovo ciclo. O puoi immaginare che la situazione sia ancora più complicata? Potete immaginare che sia possibile aprire un ordine e chiuderne un altro allo stesso tempo?

2. Sono d'accordo. Non sono del tutto sveglio stamattina... Non sono del tutto sveglio...

 
Alexey Viktorov:

1. Cosa si intende per indicizzazione/reindicizzazione? A mio parere e bandiera nella sua ... mani, perché stiamo iniziando un nuovo ciclo. O puoi immaginare che la situazione sia ancora più complicata? Potete immaginare che sia possibile che un ordine venga aperto e un altro chiuso allo stesso tempo?

Sì, questo potrebbe essere uno degli scenari. C'è un'altra variante

qualche ordine in sospeso viene eseguito durante il ciclo

 
fxsaber:

Cosa succede se durante un qualsiasi ciclo di lavoro con gli ordini, ad ogni turno, controlliamo se OrdersTotal() e OrdersHistoryTotal() sono stati cambiati?

E analizzare questi valori a seconda della situazione?

 
fxsaber:

Sì, un'opzione potrebbe essere questa. C'è anche

Una specie di pendolo si compie durante il ciclo


1. Questa variante è al limite della finzione. Beh, alla fine non succederà nulla se tutto va bene al prossimo tick.

2. Capisco che gli ordini pendenti devono essere spostati secondo l'algoritmo e lo stop sarà spostato sugli ordini a mercato. Di conseguenza, il tipo di ordine viene controllato ed eseguito indipendentemente dal tempo di esecuzione.

 
Alexey Kozitsyn:

Cosa succede se durante un qualsiasi ciclo di lavoro con gli ordini, ad ogni turno, controlliamo se OrdersTotal() e OrdersHistoryTotal() sono stati cambiati?

E analizzare i valori ottenuti a seconda della situazione?

Ecco un suggerimento simile


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

Peculiarità di mql4, consigli e trucchi

Alexey Viktorov, 2017.09.15 07:24

In primo luogo, la situazione si presenta non standard e poche persone hanno già risolto questa situazione, se ce ne sono.

Puramente in teoria:

Per OrderModify non è necessario organizzare un ciclo inverso, quindi lasciamo che sia diretto.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)

E poi dovremmo controllare i cambiamenti nella lista degli ordini

if(total != OrdersTotal())
 {
  i = 0;
  total = OrdersTotal();
  continue;
 }

Se la quantità di ordini è cambiata, ricominciamo questo ciclo con una nuova quantità di ordini.

C'è anche una domanda:

È chiaro che se sono stati aggiunti degli ordini, questi o altri saranno saltati. Ma se fossero semplicemente cancellati? Non andremo oltre l'elenco degli ordini?


solo senza controllare OrdersHistoryTotal()
 
Alexey Viktorov:

Qui c'era un suggerimento simile



solo senza controllare OrdersHistoryTotal()
Sì, l'ho letto, ho solo fatto in modo di controllare anche gli ordini storici, per il caso in cui si è verificata un'apertura+chiusura simultanea.
 
Alexey Kozitsyn:

Cosa succede se durante un qualsiasi ciclo di lavoro con gli ordini, ad ogni turno, controlliamo se OrdersTotal() e OrdersHistoryTotal() sono stati cambiati?

E analizzare questi valori a seconda della situazione?

Potrebbe non esistere durante la reindicizzazione.
 
Alexey Viktorov:

1. questa opzione è sul punto di essere una fantasia. Beh, alla fine, non succederà nulla se tutto va a posto al prossimo tick.

Il prossimo tick è diventato un gap. Perché rimandare a domani quello che si può fare oggi?

2. Da quanto ho capito, secondo l'algoritmo, gli ordini pendenti dovrebbero essere spostati e lo stop dovrebbe essere spostato sugli ordini a mercato. Pertanto, il tipo di ordine viene controllato ed eseguito indipendentemente dal tempo della sua esecuzione.

Beh, il tipo di ordine non può aiutare in alcun modo.

 
fxsaber:
Potrebbe non esserci quando si reindicizza.

Allora forse dovremmo cercare di selezionare gli ordini il più velocemente possibile (selezionarli e basta!) e scriverli in un array, e poi, in una funzione separata, controllare la disponibilità di quegli ordini + l'azione richiesta (chiudere/cancellare/modificare)?

Anche se non credo che questo ramo sia il posto migliore per discuterne. Questo ramo è per le caratteristiche.

Motivazione: