Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 855

 
Buon pomeriggio a tutti. Non sono un buon programmatore, quindi non capisco alcune cose semplici. Ho questo problema: devo scegliere tra gli ordini chiusi nel mio EA l'ultimo chiuso da SL.
 
Igor Makanu:

non si possono complicare compiti semplici! ... disse Me, che avvolse pigramente la nuova funzione di definizione della barra in una classe ))))

al punto:


l'idea è chiara, ma è più corretto >= con ogni probabilità

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

l'idea è chiara, solo più corretta >= con ogni probabilità

non ha controllato, staccare le variabili immediatamente vedere se da 1 errore, poi o la vostra versione, o non zero, e assegnare valori =1 a timer1 e timer2 contatori

come opzione, potete provare anche in questo modo:


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

non ha controllato, staccare le variabili immediatamente vedere se da 1 errore, poi o la vostra versione o non zero, e assegnare valori =1 a timer1 e timer2 contatori

Tuttavia, il metodo non garantisce certamente una determinata periodicità. L'esecuzione del codice in un timer può superare il tempo dell'altro timer.

 
leonerd:

Tuttavia, il metodo non garantisce certamente una data periodicità. L'esecuzione del codice in un timer può superare il tempo di un altro timer.

Dove si può ottenere un timer in tempo reale garantito sui sistemi Windows? - Se il sistema è sovraccarico, ci saranno dei ritardi.

in MQL - se si sovraccarica OnTick() con calcoli complessi, allora finché non viene eseguito l'evento OnTimer() non accadrà.

Cioè, anche MT4 è sufficiente per i calcoli complessi, se non lo è allora MT5 - funziona davvero a livello di C++, ma la mancanza di prestazioni è di solito legata a un cattivo algoritmo di calcolo - usa il profiler, non fare calcoli ogni tick dove non c'è niente da calcolare fino a quando appare una nuova barra, non calcolare l'intera storia, se usi segnali sulle ultime 1 o 3 barre - calcola solo 100 barre ... ci sono molte varianti

HH: lavorare con oggetti grafici rallenta tutto, lavorare con stringhe riduce anche le prestazioni - in teoria, ma ultimamente non l'ho notato, come lavorare con funzioni di conversione del tempo - si vede inequivocabilmente nel profiler, dove si spende molto tempo - cerchiamo di usare meno spesso questo frammento di codice

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

e dove si può avere la garanzia di ottenere un timer in tempo reale sui sistemi Windows? - se il sistema è sovraccarico, ci saranno dei ritardi

lo stesso in MQL - se avete caricato calcoli complessi con OnTick(), allora finché non viene eseguito l'evento OnTimer() non accadrà.

Cioè, anche MT4 è sufficiente per i calcoli complessi, se non lo è allora MT5 - funziona davvero a livello di C++, ma la mancanza di prestazioni è di solito legata a un cattivo algoritmo di calcolo - usa il profiler, non fare calcoli ogni tick dove non c'è niente da calcolare fino a quando appare una nuova barra, non calcolare l'intera storia, se usi segnali sulle ultime 1 o 3 barre - calcola solo 100 barre ... ci sono molte varianti

HH: lavorare con gli oggetti grafici rallenta tutto, lavorare con le stringhe riduce anche le prestazioni - in teoria, ma ultimamente non l'ho notato, come lavorare con le funzioni di conversione del tempo è anche un dolore - chiaramente tutto nel profiler è visibile, dove viene speso molto tempo - cerchiamo di usare questa parte del codice meno spesso

Sono d'accordo, anche il timer standard non garantisce nulla. Beh, grazie, faremo una prova.

 

Buon pomeriggio, cari amici!

Potete dirmi se è possibile in MKL4 impostarel'apertura di una posizione per un simbolo al momento di aprire una posizione per un altro simbolo? Forse una tale domanda già discussa, allora datemi un link.

Grazie.

 
novichok2018:

Buon pomeriggio, cari amici!

Potete dirmi se è possibile in MKL4 impostarel'apertura di una posizione per un simbolo al momento di aprire una posizione per un altro simbolo? Forse una tale domanda già discussa, allora dammi un link.

Grazie.

La domanda non è completamente formulata.
Ma in generale - è possibile. Ma non simultaneamente, bensì sequenzialmente in uno dei due casi.
 
Artyom Trishkin:
La domanda non è formulata completamente.
Ma in generale, è possibile. Ma non contemporaneamente, ma consecutivamente in entrambi i casi.

È fantastico. Come lo descrivo nel codice? Per esempio, se le condizioni sono corrette e apro una posizione Buy in GBP alle 9:00, apro anche una posizione Buy in EUR (alle 9:00).

 
novichok2018:

Fantastico. Come lo descrivo nel codice? Per esempio, se le condizioni si sono sviluppate alle 9:00 e si apre un BUY sulla sterlina, allora si apre anche un BUY sull'euro (alle 9:00).

Aperto come? Qual è il motivo dell'apertura?
Motivazione: