Una domanda per gli esperti di MQL - pagina 3

 
Grazie, granit77
 
granit77:

Sì, più o meno così, se si considera che il nome dell'indicatore è hilo.mq4:

extern int iR=3;
extern int SignalBar=1;
//.......
//---получение значения  HighBuffer 
double buy =  iCustom( NULL,0, "hilo",
                      iR,
                      0, // № буффера
                      SignalBar ); // № бара    
 
//---получение значения  LowBuffer
double sell =  iCustom( NULL,0, "hilo",
                      iR,
                      1, // № буффера
                      SignalBar ); // № бара

Piccolo problema. Il consigliere dell'indicatore funziona. Ma.... Solo con l'implementazione di scambi brevi!

cioè a numero di buffer=1 e valori su zero e prima barra

if  (   (sell_0>Bid)  &&   (sell_1<=Bid))

la condizione di vendere funziona perfettamente.

Ma l'Expert Advisor non vuole comprare! Non capisco cosa c'è di sbagliato! Penso di aver impostato correttamente la condizione. Numero di buffer = 0.

(  (buy0>=Ask)  &&      (buy1<Ask)  )

Non comprare! Oppure compra molto raramente e dalla "luce"!

Anche se le linee dell'indicatore sul grafico in modalità visiva sembrano essere costruite correttamente!


Quale può essere il problema qui?

 
rid:
granit77:

Sì, più o meno così, se si considera che il nome dell'indicatore è hilo.mq4:

extern int iR=3;
extern int SignalBar=1;
//.......
//---получение значения  HighBuffer 
double buy =  iCustom( NULL,0, "hilo",
                      iR,
                      0, // № буффера
                      SignalBar ); // № бара    
 
//---получение значения  LowBuffer
double sell =  iCustom( NULL,0, "hilo",
                      iR,
                      1, // № буффера
                      SignalBar ); // № бара

Piccolo problema. Il consigliere dell'indicatore funziona. Ma.... Solo con l'implementazione di scambi brevi!

cioè a numero di buffer=1 e valori su zero e prima barra

if  (   (sell_0>Bid)  &&   (sell_1<=Bid))

la condizione di vendere funziona perfettamente.

Ma l'Expert Advisor non vuole comprare! Non capisco cosa c'è di sbagliato! Penso di aver impostato correttamente la condizione. Numero di buffer = 0.

(  (buy0>=Ask)  &&      (buy1<Ask)  )

Non compra! Oppure compra molto raramente e dalla "luce"!

Anche se le linee dell'indicatore sul grafico in modalità visiva sembrano essere costruite correttamente!


Quale può essere il problema qui?

Anche io sono interessato a questa domanda)).

 

Lavorando con l'indicatore personalizzato ho notato che:


// так РАБОТАЕТ !!!
int FATLsB=iCustom(NULL,0,"FATLs",0,0);
int FATLsS=iCustom(NULL,0,"FATLs",1,0);

// а вот так НЕТ ...
double FATLsB=iCustom(NULL,0,"FATLs",0,0);
double FATLsS=iCustom(NULL,0,"FATLs",1,0);


// если потом в коде есть сранвнение с 0 или 1, например
if (FATLsB==1) {CloseSell(); SetBuy(); }
 
kombat:

Lavorando con l'indicatore personalizzato ho notato che:


// так РАБОТАЕТ !!!
int FATLsB=iCustom(NULL,0,"FATLs",0,0);
int FATLsS=iCustom(NULL,0,"FATLs",1,0);

// а вот так НЕТ ...
double FATLsB=iCustom(NULL,0,"FATLs",0,0);
double FATLsS=iCustom(NULL,0,"FATLs",1,0);


// если потом в коде есть сранвнение с 0 или 1, например
if (FATLsB==1) {CloseSell(); SetBuy(); }

Nel primo caso, c'è una conversione al tipo int di destinazione prima dell 'operazione di assegnazione. Pertanto, la condizione di confronto funziona correttamente.

Per il secondo caso abbiamo bisogno di arrotondare i numeri in virgola mobile ad una precisione specificata prima del confronto usando il

NormalizeDouble(double value, int digits)



 

Scusa...

Il mio esempio precedente è basato su un errore.

Che era che l'assegnazione era sul prezzo di ritracciamento dall'indicatore FATLs.

Non l'ho notato su EURUSD e ho scambiato le "frecce che appaiono" per i tori 0 e 1


Tuttavia, questa variante ha corretto la situazione:


bool FATLsB=iCustom(NULL,0,"FATLs",0,0)>0;
bool FATLsS=iCustom(NULL,0,"FATLs",1,0)>0;
//--- открытие БАЙ закрытие СЕЛЛ ------------------
   if (FATLsB==1 && TotalBuy()==0) {CloseSell(); SetBuy(); }
 

Buon pomeriggio a tutti!

Si prega di avvisare.

Supponiamo che io abbia una MA lenta e una MA veloce incrociate sul grafico. Sulla prima barra.

Lasciatelo poi passare qualche altra battuta.

Come posso determinare su quale barra sono stati attraversati gli ultimi МА?

-----------------------------

Non riesco nemmeno a pensare - come dovrei affrontare il problema?

 
Rita:

Supponiamo che io abbia una MA lenta e una MA veloce che si incrociano sul grafico. Sulla prima barra.

Supponiamo che dopo sia passata qualche altra battuta.

Come posso determinare su quale barra nel passato si è verificato l'ultimo attraversamento della MA data?

Qual è la differenza fondamentale per voi? Il crossover sulla prima barra può essere visto/ricercato allo stesso modo di qualsiasi altra barra. Si crea un ciclo (per esempio da barra zero a barre) in cui si guardano i valori delle barre e li si analizza. Non riesco a capire il senso della domanda....
 

Ho bisogno di sapere sulla barra attuale.

Quante barre sono passate dall'ultimo incrocio delle due barre - MA_1 e MA_2.

Come organizzare un ciclo come questo?

se (MA_1>MA_2) {

 
Rita:

Ho bisogno di sapere sulla barra attuale.

Quante barre sono passate dall'ultimo incrocio di due MA_1 MA_2.

Come si fa questo ciclo?

andare dalla barra attuale al momento in cui la MA cambia posto. e contare.
Motivazione: