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

 
Alexey Viktorov:

Ho dato un frattale come esempio. E come si definisce il minimo (nel vostro caso) è un segreto militare... o un completo fraintendimento di ciò che viene chiesto.

Il mio codice è composto da diverse stringhe e si può vedere a occhio nudo come viene definito il minimo

Il minimo è definito nelle linee gialle

void OnTick()//484
{
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
 
MakarFX:

non è necessario contare le barre

Dopo l'apertura dell'ordine, assegna alla variabile il valore Low[0] (minimo della barra corrente), poi dopo la chiusura della barra, se il valore Low[1] è inferiore alla variabile, assegna un nuovo valore ad essa,

in caso contrario, viene mantenuto il vecchio valore, cioè il minimo.

Questo algoritmo l'ho capito da tempo e l'ho usato.... cioè controllare i minimi non sul tick, ma sulla candela. Ma penso che ci sia un algoritmo molto più economico, cioè quello che ho descritto la volta scorsa, quando si controllano i minimi non prima, ma dopo. Ma non so come contare rapidamente ed economicamente il numero di candele da BIDA alla cinquantesima candela. Sì alla cinquantesima candela so contare il numero di candele. Come contare il numero di candele fino alla candela con il LOU più basso. Cioè, da BIDA a questa candela

 
ANDREY:

Il mio codice consiste di diverse linee e mostra come il minimo è definito a occhio nudo

Il minimo è definito nelle linee gialle.

Allora, qual è il problema? Ciò che conta qui è come viene dichiarata la variabile LoU. Se è a livello globale, bene. Se è una variabile locale, deve essere statica. E controllando ad ogni tick la differenza del prezzo corrente con il prezzo in questa variabile, il costo in microsecondi sarà così insignificante che non ha senso parlarne.

 
ANDREY:

Questo è un algoritmo che ho capito da tempo e usato.... cioè controllare i minimi non sul tick, ma sulla candela. Ma penso che ci sia un algoritmo molto più economico, cioè quello che ho descritto la volta scorsa, quando non si controlla prima del minimo, ma dopo che appare. Ma non so come contare rapidamente ed economicamente il numero di candele da BIDA alla cinquantesima candela. Sì alla cinquantesima candela so contare il numero di candele. Come contare il numero di candele fino alla candela con il LOU più basso. Cioè, da BIDA a questa candela.

C'è una logica anomala in questo... Perché contare circa 50 barre? E se non sono 50?

 
ANDREY:

Questo è un algoritmo che ho capito da tempo e usato.... cioè controllare i minimi non sul tick, ma sulla candela. Ma penso che ci sia un algoritmo molto più economico, cioè quello che ho descritto la volta scorsa, quando non si controlla prima del minimo, ma dopo che appare. Ma non so come contare rapidamente ed economicamente il numero di candele da BIDA alla cinquantesima candela.

Qualunque cosa pensiate, il controllo sarà eseguito ad ogni tick - questa è una caratteristica della funzione OnTick().

 
MakarFX:

Qualunque sia il controllo che si fa, sarà comunque fatto ad ogni tick - questa è una caratteristica della funzione OnTick().

Una cosa è controllare e un'altra è trovare il minimo...

 
Alexey Viktorov:

Allora qual è il problema? La cosa principale qui è come viene dichiarata la variabile LoU. Se è a livello globale, va bene. Se è una variabile locale, deve essere statica. E controllando ad ogni tick la differenza del prezzo corrente con il prezzo in questa variabile sarà così insignificante che non ha senso parlarne.

Grazie per le nuove e preziose informazioni per me..... non lo sapevo.

 
Alexey Viktorov:

C'è una logica anomala in questo... Perché contare tutte le 50 barre? E se non sono 50?

50 è per il caso astratto. Può essere 20 o 150 o 3 o 1. Quello che si intende è come sapere quante barre ci sono tra il BIDE attuale e il minimo locale .... nel caso in cui ci siano 30 punti tra questo BIDE e il minimo locale necessario per aprire l'ordine. Aprireun ordine se ( Bid - Low[ 50] >= 30 pips)- aprire un ordine.

 
MakarFX:

Qualunque sia il controllo che si fa, sarà comunque fatto ad ogni tick - questa è una caratteristica della funzione OnTick().

Grazie. Se sapessi che .... forse non mi sarei preoccupato così tanto.

Quindi, se controllo LOW non ad ogni tick, ma ad ogni candela, il programma passerà comunque del tempo per l'elaborazione di ogni tick, e avrà lo stesso aspetto come se fosse controllato ad ogni tick.

Non c'è modo di evitare questa caratteristica nel vostro codice? Dovrebbe essere eseguito non su ogni tick, ma per esempio su ogni LOU di una candela al minuto.

 
ANDREY:

Grazie. Se sapessi che .... Forse non mi sarei preoccupato così tanto.

Quindi, se controllo LOW non ad ogni tick, ma ad ogni candela, il programma spenderà ancora tempo per elaborare ogni tick, e il risultato sarà lo stesso come se lo avessi controllato ad ogni tick?

Non c'è modo di evitare questa caratteristica nel vostro codice? Dovrebbe essere eseguito non su ogni tick, ma per esempio su ogni LOU di una candela al minuto.

vuoto()

Motivazione: