Sto scrivendo un ToR per un EA MT4 con una priorità sull'elaborazione accelerata dei dati.
Per favore, consigliate se la sequenza dei calcoli o il campionamento (qual è il nome corretto - rappresentativo?) è importante per accelerare.
Allego due varianti sotto forma di immagini che mostrano gli schemi a blocchi.
Se puoi, per favore scrivi come dovrebbe apparire il codice se l'esecuzione selettiva dei blocchi sarà - un layout puramente primitivo, e se questo darà un aumento significativo della velocità!
voidOnStart()
{
uchar max=0;
for(int t=0;t<LONG_MAX;t++) {max++;} //так получаем предупреждение expression is always true, цикл работаетfor(int t=0;t<LONG_MAX+1;t++) {max++;} //так предупреждение есть, но цикл не работаетfor(int t=0;t<ULONG_MAX;t++) {max++;} //так нет предупреждения и цикл не пашетPrint("Done!");
}
voidOnStart()
{
uchar max=0;
for(int t=0;t<ULONG_MAX-1 e0;t++) {max++;} //так цикл работает, предупреждения нет так как ULONG_MAX-1e0 имеет тип doublefor(int t=0;t<ULONG_MAX-1;t++) {max++;} //а так нет и предупреждения тоже нетPrint("Done!");
}
for(int t=0;t<ULONG_MAX-1;t++) {max++;} //а так нет и предупреждения тоже нет
Non c'è nessun errore qui, perché ULONG_MAX-1< 0, cioè l'operazione di confronto è convertita in int o long - più precisamente c'è un confronto bitwise
Sto scrivendo un ToR per un EA MT4 con una priorità sull'elaborazione accelerata dei dati.
Per favore, consigliate se la sequenza dei calcoli o il campionamento (qual è il nome corretto - rappresentativo?) è importante per accelerare.
Allego due varianti sotto forma di immagini che mostrano gli schemi a blocchi.
Se puoi, per favore scrivi come dovrebbe apparire il codice se l'esecuzione selettiva dei blocchi sarà - un layout puramente primitivo, e se questo darà un aumento significativo della velocità!
Come si spiega questa chiusura di una posizione nel tester? È dovuto all'allargamento dello spread?
Screenshot della piattaforma di trading MetaTrader
EURUSD, M20, 2014.04.12
Alfa-Forex, MetaTrader 5, reale
temp_file_screenshot_63279.png
Come si spiega questa chiusura di una posizione nel tester? È l'allargamento dello spread?
[img]https://charts.mql5.com/4/434/eurusd-m20-alfa-foreks-temp-file-screenshot-63279-png.png[/img]
Se lo spread si è allargato (e a giudicare dallo screenshot - di 720 punti! su cinque cifre), allora tutto è corretto.
La posizione di vendita ha chiuso al prezzo Ask. Questo è se i fermi sono stati posizionati.
A proposito, il tuo brokerAlfa-Forex hasolo spread giganteschi alla fine della settimana e all'inizio.
Probabilmente sono stati registrati nella cronologia delle quotazioni e il tester ha simulato il trading su di essi.
Le soste per il fine settimana sono pericolose - non salveranno comunque dal divario, e l'allargamento dello spread può facilmente prenderti.
Nessun errore qui perchéLONG_MAX+1< 0
Qui l'avvertimento è valido (t<LONG_MAX sempre vero se t int ) ciclo infinitoNon c'è errore perché ULONG_MAX-1< 0, perché l'operazione di confronto è ridotta a int
Allora come spiegarlo:
Non c'è nessun errore qui perché ULONG_MAX-1< 0, cioè l'operazione di confronto è cast a int o long
Intendi il confronto nell'espressione testata nel ciclo?
Perché non sembra così in un semplice confronto.
Basta scambiarli :)
Cosa fa questo riarrangiamento? t era inferiore a ULONG_MAX-1 e lo è ancora.