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

 

Artyom Trishkin:

...L'ho capito bene, ma dal bar sbagliato. Questo deve essere conosciuto e preso in considerazione.

Cioè, nell'acquisizione di dati multitemporali, è necessario basarsi sul tempo, e ricalcolarlo al numero di barra al timeframe giusto.

Grazie per il suo chiarimento.

Quindi, se chiamiamo l'indicatore nell'EA in questo modo

ozy_verh=NormalizeDouble(iCustom(NULL, 240, "Ozy", Amplitude, 3, 1), Digits);

ed eseguire l'EA su H1, l'indicatore non leggerà da H4 della prima barra.

Quali saranno le letture dell'indicatore allora, e come devo fare correttamente per ottenere le letture corrette dell'indicatore da H4?

int TimeFrame = 240;

ozy_verh=NormalizeDouble(iCustom(NULL, TimeFrame, "Ozy", Amplitude,3,iBarShift(Symbol(),TimeFrame,iTime(Symbol(),TimeFrame,1)) ), Digits);


Quindi, i valori dell'indicatore saranno corretti da H4?



 
mila.com:

Grazie per il chiarimento.

Risulta che se chiamo l'indicatore nell'EA in questo modo

ozy_verh=NormalizeDouble(iCustom(NULL, 240, "Ozy", Amplitude, 3, 1), Digits);

ed eseguire l'EA su H1, l'indicatore non leggerà da H4 della prima barra.

Allora quali letture dell'indicatore ottengo, e come devo farlo correttamente per ottenere letture corrette dal TF senior?

int TimeFrame = 240;

ozy_verh=NormalizeDouble(iCustom(NULL, TimeFrame, "Ozy", Amplitude,3,iBarShift(Symbol(),TimeFrame,iTime(Symbol(),TimeFrame,1)) ), Digits);


Quindi, i valori dell'indicatore saranno corretti da H4?



Se chiami l'indicatore nel modo in cui hai scritto:

ozy_verh=NormalizeDouble(iCustom(NULL, 240, "Ozy", Amplitude, 3, 1), Digits);

allora i dati dell'indicatore saranno ottenuti dal simbolo corrente, da PERIOD_H4, dal quarto buffer e dalla prima barra del timeframe H4.

Devi aver frainteso quello che ti stavo dicendo.

Ecco cosa intendo: se l'EA è in esecuzione su M5 e si ottengono dati dalla barra 1 su M5, allora se si vuole vedere cosa sta succedendo sui prezzi più alti, come su H1, allora se si ottiene il valore dal foref H1 più alto anche dalla barra 1, non si otterrà il valore attuale, che è ora su H1, ma il valore che era all'ultima ora. Perché la barra 1 su M5 è dentro la barra 0 su H1.

È di questo che bisogna tener conto ed è di questo che stavo parlando.

 
Vitaly Muzichenko:

Intendo il registro nel tester

Aggiunto: Assemblare il codice allo stato normale, rivederlo, poi eseguirlo nel tester e leggere gli errori nel log. Stai dando pezzi di codice qui.

Qui. Capisco i controlli ma non capisco da dove viene.

File:
count.mq4  17 kb
 
Artyom Trishkin:

Questo è ciò che dovete considerare, e questo è ciò di cui parlavo.

Se metto l'EA su M 5 e voglio ottenere il valore dell'indicatore da H1, dalla prima barra, allora la seguente entrata è corretta?

ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, 1), Digits);
 
mila.com:

Se posiziono l'Expert Advisor su M 5 e voglio ottenere il valore dell'indicatore da H1, dalla prima barra, allora il seguente inserimento è corretto?

ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, 1), Digits);

No, invece di 1:

datetime _time1 = iTime(Symbol(), PERIOD_H1, 1);
int      _n     = iBarShift(Symbol(), PERIOD_CURRENT, _time1);
// ваша формула
ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, _n), Digits);
Solo se usi l'EA sul server o sul tuo, ma non hai anche il grafico H1 aperto, allora devi fare un controllo extra.
 

Oksana Berenko:

... ma non avrete nemmeno un grafico H1 aperto, quindi dovrete fare un controllo extra.

Grazie.

Ho un grafico M5 aperto, e ho un EA su di esso che chiama l'indicatore H1, proprio come hai scritto.

Di quali altri controlli ho bisogno?

 
mila.com:

Se metto l'Expert Advisor su M 5 e voglio ottenere il valore dell'indicatore da H1, dalla prima barra, allora il seguente inserimento è corretto?

ozy_verh=NormalizeDouble(iCustom(NULL, 60, "Ozy", Amplitude, 3, 1), Digits);

Giusto. Dipende dalla prima barra di quale lasso di tempo hai bisogno di dati...

Sembra che continui a non capire quello che stavo dicendo...

 
Ciao, potresti dirmi quali sono le principali differenze tra mt4 e mt5? Non vedo grandi differenze.
 

Pomeriggio ...

se (OrderType()==OP_SELL) CloseOpBuySell("BUY");

se (OrderType()==OP_BUY) CloseOpBuySell("SELL");

Ecco la condizione di cui ho bisogno per chiudere una posizione Sell quando apro una posizione Buy e viceversa, si attiverà?

Mi interessa solo la parte sinistra OrderType()==OP_SELL

il lato destro funziona quando qualsiasi segnale viene spinto lì

Domanda: "Questa chiusura funzionerà?

 
elektrik777:
Ciao, potresti dirmi quali sono le principali differenze tra mt4 e mt5? Non vedo grandi differenze.
Le differenze sono nel linguaggio di programmazione per gli EA, gli script e gli indicatori, tutto il resto è lo stesso, tranne che MT5 può fare trading sulle borse, MT4 no.