Con cosa sostituire OnTradeTransaction() in mql4? - pagina 7

 
Alexey Viktorov:

In questo caso, sarebbe difficile vivere senza la biblioteca di Artem.

La biblioteca imparerà telepaticamente le informazioni di cui ha bisogno? Scuoterà gli ordini 86400 volte allo stesso modo.

 
Igor Makanu:

cosa fare con "non aggiungere all'array" - intendo cancellare i dati sugli ordini di mercato mancanti?

Ma per evitare di sovraccaricare il codice con i calcoli, dovremmo almeno impostare un flag di eventoOnTradeTransaction, che dovrebbe essere sollevato quando si piazza o si chiude forzatamente un ordine - sapete che tipo di operazione volete fare, vero? - Perché non dirlo direttamente alla macchina? invece di cercare di far eseguire alla macchina tutti i dati ogni tick / o ogni 10 ms


ZS: un altro thread con una richiesta di risolvere un problema in assenza di qualsiasi base di conoscenza, niente di personale, ma questo sta già diventando un evento regolare - non importa come lo guardi, hai bisogno di studiare materiale aggiuntivo, solo discutere il problema con persone che la pensano come te è solo discutere il problema con persone che la pensano come te allo stesso livello di conoscenza ((((

Con "non aggiungere all'array"... Anche se non c'è una funzione ArrayRemove() in mql4, ma il suo principio è basato sulla copia di un array in se stesso con ulteriore riduzione della dimensione per il numero di indici cancellati. E invece di OnTradeTRansaction() ho detto ripetutamente in questo thread che non c'è alternativa alla libreria di Artem e non è prevista.
 
Igor Makanu:

Dovrei almeno fare un flag dell'eventoOnTradeTransaction che dovrebbe essere impostato quando si piazza o si chiude forzatamente un ordine

Ci ho pensato, ma diversi EA hanno funzioni diverse e nessuno le combina, è possibile scrivere un file di bandiera in sammon, forse anche così, perché non cercare un'alternativa?

 
Aleksandr Volotko:

La biblioteca imparerà telepaticamente le informazioni di cui ha bisogno? Scuoterà gli ordini 86400 volte in questo modo.

Potete scoprirlo nel thread di discussione dell'articolo. E non sarò io a rispondere. Ho solo cercato di usarlo... E comincia a rileggere i post di Artem. Fate attenzione a questo post.

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

Come sostituire OnTradeTransaction() in mql4?

proprietà degli ordini e delle posizioni. Il simbolo è codificato nella somma dei codici dei caratteri che compongono il suo nome. Ma poi solo ciclo completo. Quando la somma dell'hash è cambiata - vedi cosa è successo.


 
Aleksandr Volotko:

Sì, ci ho pensato, ma diversi EA hanno funzioni diverse e nessuno le combina, si può scrivere un file-flag in sammon, potrei anche farlo, perché non cercare un'alternativa?

Ecco un'alternativahttps://www.mql5.com/ru/docs/standardlibrary/datastructures

o usare il materiale degli articoli di Artem, che, tuttavia, si baserà ancora su SB "Data Collections"


Non importa come la si guardi, ma il nuovo materiale dovrà essere studiato per capire almeno le capacità di MQL, e semplicemente sedersi in un array vecchio di 10 anni e ridurre il tempo di analisi OrderTotal() .... non risolverà comunque il problema attuale e i nuovi problemi futuri


Se stiamo parlando di diversi EA e dello scambio di dati - flag di immissione degli ordini, ecc, allora non c'è una soluzione universale - ci sono molte variazioni su questo argomento; in generale questo è un punto dolente per me, ho usato un sacco di strumenti già pronti ma non ho avuto successo, preferirei usare un server DB e scambiare dati attraverso di esso, sarà sicuramente affidabile e pratico, purtroppo gli sviluppatori MT hanno ignorato questo problema per molti anni in base alla loro comprensione della funzionalità necessaria agli utenti

 
Alexey Viktorov:

Potete scoprirlo nel thread di discussione dell'articolo. E non sarò io a rispondere. Ho solo cercato di usarlo... E comincia a rileggere i post di Artem. Fate attenzione a questo messaggio.

Tutto questo porta all'overshooting degli ordini, e non vuoi farlo 100500 volte al giorno. E non importa - conterò il volume di posizione aggregato in un ciclo, o la somma hash di libreria delle proprietà dell'ordine.

 
Igor Makanu:

l'alternativa èhttps://www.mql5.com/ru/docs/standardlibrary/datastructures

o usare il materiale degli articoli di Artem, che, tra l'altro, si baserà ancora su "Data Collections".


Non importa come la si guardi, ma il nuovo materiale dovrà essere studiato per capire almeno le capacità di MQL, e semplicemente sedersi in un array vecchio di 10 anni e ridurre il tempo di analisi OrderTotal() .... non risolverà comunque il problema attuale e i nuovi problemi futuri

Non pensare che io sia completamente stupido, è solo che a volte devi lavorare solo con quello che è disponibile, e c'è molto poco da usare

 
Vitaly Muzichenko:

Com'è?

StringToShortArray()
ShortArrayToString()
 
Artyom Trishkin:
StringToShortArray()
ShortArrayToString()

Credo di non essere abbastanza intelligente).

Come posso applicarlo?

static __Total = -1;
int OT=OrdersTotal();
  if(OT!=__Total)
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __Total=OrdersTotal(); // запомним количество
   }

Ho solo un problema ed è molto raro, oggi l'ho trovato per la prima volta in un paio d'anni, forse l'ho visto prima, solo non l'ho notato

Forum per il trading, sistemi di trading automatico e test di strategia

Come sostituire OnTradeTransaction() in mql4?

Vitaly Muzichenko, 2020.01.27 15:32

Non lo so, ma ho notato che una posizione si è chiusa e l'altra si è aperta su un'altra e quasi allo stesso tempo tra i tick.

Alla fine OrdersTotal() è rimasto 8. La logica dell'Expert Advisor si è confusa - non ha ricalcolato i nuovi dati


 

Ecco, la soluzione è semplice: introdurre un altro controllo di modifica della cronologia, in questo modo non si perde nulla e funziona al 100%.

static __OTotal = -1;
static __HTotal = -1;
int OT=OrdersTotal();
int HT=OrdersHistoryTotal();
  if(OT!=__OTotal || HT!=__HTotal) // если изменилось - выполняем
   {
     SetMarket(); // здесь дёргаем текущую ситуацию на счёте и заполняем структуры
     __OTotal=OrdersTotal(); // запомним текущее количество
     __HTotal=OrdersHistoryTotal(); // запомним количество в истории
   }
Motivazione: