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

 
Jenya77769:

Grazie, ha funzionato, solo che ho normalizzato q e w separatamente!

È necessario normalizzare la differenza di due numeri. E confrontarlo con lo zero.
 
Artyom Trishkin:
Se è la decima barra, come faccio a sapere la differenza tra la decima e la zero barra? 10-0=10
E perché devo sottrarlo?


Possiamo vedere sulla carta che 10 - 0 = 10. Ma come facciamo a scrivere questa condizione nel programma. Non ho trovato una funzione che restituisca il numero della barra. O stavo cercando troppo intensamente?

 
Youri Lazurenko:

Possiamo vedere sulla carta che 10 - 0 = 10. Ma come facciamo a scrivere questa condizione nel programma. Non ho trovato una funzione che restituisca il numero della barra. O stavo cercando troppo intensamente?

Bene, avete già trovato questo bar. Nella funzione che cerca l'intersezione.
 
Artyom Trishkin:
Beh, hai già trovato quel bar. Nella funzione che cerca l'intersezione.
Sì, l'ho trovato. Penso che mentre scrivevo la tua risposta ho capito il tuo punto - la funzione IntersezioneXX() mi dà solo questo numero, che sia 10. Ho capito bene?
 
double SPREAD=MarketInfo(Symb,MODE_SPREAD);// Спред
 double q=High[0]-3.0*Point-High[1];
double w=-SPREAD*Point;

if(NormalizeDouble(q,4)> NormalizeDouble(q,4))
Artyom Trishkin
:

Normalizzare la differenza tra i due numeri. E confrontarlo con lo zero.

E nel modo in cui l'ho fatto, potrebbero esserci degli errori?

 
Youri Lazurenko:
Sì, l'ho trovato. Penso di aver capito il tuo punto mentre scrivevo la risposta - IntersezioneXX() è esattamente ciò che mi dà questo numero, che sia 10. Ho capito bene?
 
Artyom Trishkin:

Grazie mille. Sì, la mia logica, la mia immaginazione e il mio giudizio sono un po' carenti. Grazie ancora e tanti auguri.

 

Volevo ottenere il tempo di apertura della barra del mese corrente, ma ho ottenuto un errore 4074 (ERR_NO_MEMORY_FOR_HISTORY). È anche interessante che se inizio i test dal 1 giugno, tutto è corretto, ma dal 2 giugno l'errore inizia ad apparire. Come risolvere il problema di questo mese?

   datetime iTimeMN=iTime(NULL,PERIOD_MN1,0);
   Print("iTimeMN= ",iTimeMN);
   if(iTimeMN==0)
     {
      Print(" Error= ",GetLastError());
      Sleep(1000);
     }
 

Ciao a tutti, per favore aiutatemi a cambiare i valori delle variabili. Ci sono due variabili con un valore iniziale di zero. Per esempio ho sempre due livelli sul grafico. Come fare in modo che quando si raggiunge un livello la prima variabile cambi valore in "1" e solo quando si raggiunge l'altro livello cambi nuovamente valore in "0", mentre la seconda variabile agisce in modo opposto.

 
AlGuru:

Ciao a tutti, per favore aiutatemi a cambiare i valori delle variabili. Ci sono due variabili con un valore iniziale di zero. Per esempio ho sempre due livelli sul grafico. Come fare, che al raggiungimento di un livello la prima variabile ha cambiato valore a "1" e solo al raggiungimento dell'altro livello ha cambiato valore di nuovo a "0", mentre la seconda variabile ha agito in modo opposto.


Tutto sembra funzionare. All'inizio però non ha funzionato. Strano.

Motivazione: