Una pregunta para los expertos en MQL - página 3

 
Gracias, granit77
 
granit77:

Sí, algo así, si se tiene en cuenta que el nombre del indicador es 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 ); // № бара

Un pequeño problema. El asesor del indicador funciona. Pero.... ¡Sólo con la implementación de operaciones cortas!

es decir, en el número de búfer=1 y los valores en el cero y la primera barra

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

la condición de vender funciona perfectamente.

¡Pero el Asesor Experto no quiere comprar! ¡No entiendo qué es lo que está mal! Creo que he establecido la condición correctamente. Número de búfer = 0.

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

¡No compra! ¡O compra muy raramente y desde "la luz"!

¡Aunque las líneas del indicador en el gráfico del modo visual parecen estar construidas correctamente!


¿Cuál puede ser el problema aquí?

 
rid:
granit77:

Sí, algo así, si se tiene en cuenta que el nombre del indicador es 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 ); // № бара

Un pequeño problema. El asesor del indicador funciona. Pero.... ¡Sólo con la implementación de operaciones cortas!

es decir, en el número de búfer=1 y los valores en el cero y la primera barra

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

la condición de vender funciona perfectamente.

¡Pero el Asesor Experto no quiere comprar! ¡No entiendo qué es lo que está mal! Creo que he establecido la condición correctamente. Número de búfer = 0.

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

¡No compro! ¡O compra muy raramente y desde "la luz"!

¡Aunque las líneas del indicador en el gráfico del modo visual parecen estar construidas correctamente!


¿Cuál puede ser el problema aquí?

Yo también estoy interesado en esta cuestión)).

 

Trabajando con el indicador personalizado me di cuenta de eso:


// так РАБОТАЕТ !!!
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:

Trabajando con el indicador personalizado me di cuenta de eso:


// так РАБОТАЕТ !!!
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(); }

En el primer caso, hay una conversión al tipo int de destino antes de la operación de asignación. Por lo tanto, la condición de comparación funciona correctamente.

Para el segundo caso necesitamos redondear los números en coma flotante a una precisión especificada antes de la comparación utilizando el

NormalizeDouble(double value, int digits)



 

Lo siento...

Mi ejemplo anterior se basa en un error.

Que era que la asignación estaba en el precio de retroceso por el indicador FATLs.

No lo noté en el EURUSD y confundí las "flechas que aparecen" con los toros 0 y 1


Sin embargo, esta variante corrigió la situación:


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(); }
 

Buenas tardes a todos.

Por favor, avisa.

Supongamos que tengo una MA lenta y una MA rápida cruzadas en el gráfico. En la primera barra.

Deja entonces que pasen unos cuantos compases más.

Cómo puedo determinar en qué barra se cruzaron los últimos МА?

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

Ni siquiera puedo pensar: ¿cómo debo enfocar el problema?

 
Rita:

Supongamos que tengo una MA lenta y una MA rápida que se cruzan en el gráfico. En la primera barra.

Deja entonces que pasen algunos bares más.

¿Cómo puedo determinar en qué barra del pasado se produjo el último cruce de la MA dada?

¿Cuál es la diferencia fundamental para usted? El cruce de la primera barra se puede ver/buscar de la misma manera que en cualquier otra barra. Se crea un bucle (por ejemplo, de la barra cero a la barra) en el que se recorren los valores de las barras y se analizan. No entiendo el sentido de la pregunta....
 

Necesito saber en la barra actual.

Cuántas barras han pasado desde el último cruce de las dos barras - MA_1 y MA_2.

¿Cómo se organiza un bucle como éste?

si (MA_1>MA_2) {

 
Rita:

Necesito saber en la barra actual.

Cuántas barras han pasado desde el último cruce de dos MA_1 MA_2.

¿Cómo hago este ciclo?

ir desde la barra actual hasta el momento en que la MA cambia de lugar. y contar.