Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1220

Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Un secondo è spesso la perdita dell'ultimo scambio/ordine sul reale. Per esempio, su molte violazioni un ordine va in esecuzione per il tempo TTL, che può essere di cinque secondi. Se non viene eseguito in cinque secondi, l'ordine è un reindirizzamento. Oppure viene eseguito, ma in tre secondi.
Nel caso, se non ci sono stati tick dall'accettazione all'esecuzione, tale chiamata HistorySelect non riceverà informazioni su di essa.
Forse, il TimeCurrent dovrebbe essere uguale a MathMax(LastOrder_time, MarketWatch_Time). Allora la HistorySelect sarà corretta. Ma TimeCurrent potrebbe essere troppo costoso.
A proposito, un tale schema di lavoro di HistorySelect salterà una parte della storia delle compravendite.
Anche se, a prima vista, tutto è chiaro.
Scrivere una DealsTotal() economica non è facile in MT5. Non è elementare (e gratuito) OrdersHistoryTotal() in MT4.
pensieri ad alta voce, nessuna pretesa di rilevanza o competenza:
Se non ci sono stati ticchettii dall'accettazione all'esecuzione, tale chiamata a HistorySelect non otterrà informazioni al riguardo.
Non risolverete questo problema, il modello di interazione server - terminale - MQL è stato originariamente progettato
Non ho raggiunto il punto di controllare in MT5, ma in MT4 so per certo che ci sono situazioni, quando nella finestra di osservazione del mercato ci sono variazioni di prezzo sul nostro simbolo, ma non ci possono essere tick o meno di quelli che ci sono in ЕА
ok, non importa, quindi funziona, basta scegliere nella decisione TS, cosa succede all'ordine in assenza di informazioni dal server dal momento in cui si invia l'ordine - cioè, l'ordine sarà impostato o respinto a priori, e ha ricevuto la risposta per confermare questa decisione preliminare o annullare - cioè, lavorare con informazioni non confermate o ancora aspettare la risposta dal server - questa offerta MQ e probabilmente non si adatta
Non è facile usare DealsTotal() a buon mercato in MT5. Non è l'elementare (e gratuito) OrdersHistoryTotal() in MT4.
non scrivere ;)
o meglio, molto probabilmente lo farai, e spenderai risorse EA per mantenere l'algoritmo, penso che tu abbia bisogno di scoprire come funziona SQLite, i test di performance MQ hanno dichiarato, il lavoro con grandi tabelle e campioni è esattamente lo scopo del database - il codice EA sarà minimalista, tutto il lavoro che il database farà, tutto il lavoro si riduce a riempire i dati quando si inserisce un ordine e l'aggiornamento quando il server risponde (sincronizzazione, naturalmente, quando si esegue EA, il database in memoria)
ma non lo farai ;)
o meglio, molto probabilmente si scriverà e spenderà risorse EA per mantenere l'algoritmo, penso che avete bisogno di capire come funziona SQLite, test di prestazioni MQ dichiarato, lavorare con grandi tabelle e campioni è esattamente lo scopo del database - codice EA sarà minimalista, tutto il lavoro il database vi farà, tutto il lavoro sarà ridotto a riempire i dati quando si effettua un ordine e aggiornare quando risponde dal server (sincronizzazione, naturalmente all'avvio EA, il database in memoria)
È stato originariamente scritto e pubblicato. È improbabile che diventi più veloce.
È stato originariamente scritto e pubblicato. È improbabile che diventi più veloce.
Devo aver visto male il compito.
Ho pensato che avevo bisogno di aggiornare la lista degli ordini da due puntiOnTradeTransaction() e OnTick() , ecco perché ho suggerito di farlo nel database
Ecco il mio codice. Nell'inizializzazione crea un record nella tabella. Nel corpo di OnTick dovrebbe restituire immediatamente un errore, perché cerco di aggiungere un record con la stessa PRIMARY KEY, e dopo questo la base si chiude immediatamente. Ma allo stesso tempo dovrei vedere almeno il primo record quando lo apro, ma quando lo eseguo nel tester non c'è. E anche la tabella non viene creata. Se lo apro solo nel terminale, tutto è normale. Il primo disco è lì.
Con la posizione del database non si incasina sperando?
Non sei confuso sulla posizione della base, vero?
No, certo che no. Tutto è in File. Penso che in modalità tester, il database viene creato in memoria e distrutto dopo il test.
pensieri ad alta voce, nessuna pretesa di rilevanza o competenza:
...
o meglio, molto probabilmente si scriverà e spenderà risorse EA per mantenere l'algoritmo, penso che avete bisogno di scoprire come funziona SQLite, test di prestazioni MQ dichiarato, il lavoro con grandi tabelle e campioni è proprio lo scopo del database - codice EA sarà minimalista, tutto il lavoro il database vi farà, tutto il lavoro è ridotto a riempire i dati quando si effettua un ordine e aggiornare quando risponde dal server (sincronizzazione, naturalmente, quando si esegue EA, il database in memoria)
E quale database farà tutto il vostro lavoro? Puoi dirmelo?
Su un terminale, solo l'immissione di ordini, sull'altro (con lo stesso broker e conto) il controllo dell'esecuzione. comunicazione attraverso il database o attraverso PUB/SUB ZMQ. Naturalmente il database non è SQLite. Il più adatto a questi scopi è Redis, ovviamente la mia opinione personale.
Buona fortuna