[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 411

 
kolyango:

Cómo se hace:

si se cumple la Condición1, entonces no se comprueba más en cada tick, y en los siguientes ticks se comprueba también la Condición2 y luego la Condición3 hasta que declaremos todas las banderas como falsas?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

lee el código varias veces hasta que te quede claro lo que está escrito, y estarás contento.

 
costy_:

lee los datos de la barra que ya ha establecido (anterior) i+1 quitar. Pero el algoritmo del creador se romperá (él sabe mejor, yo también trabajo en datos abiertos y generados +1)


Como dice el creador, i+1 es sólo para alimentar los datos de otro indicador, entonces se comprueba la condición de desglose, pero todos los cálculos posteriores se realizan sobre i.

El caso es que el indicador no se actualiza automáticamente, sólo con la recarga (cambio de TF, cambio de propiedades).

No entiendo cuál es la razón.

Intenté usar sólo i, metiendo el cálculo de datos del indicador requerido en la barra anterior, al final del ciclo, pero no sirvió.

 
costy_:

Todavía no lo entiendo.

Probablemente sea más fácil explicarlo con una imagen.


Sí, gracias. Donde lo tienes resaltado en azul tienes que encontrar la vela que cerró por encima del máximo en D1.
 
costy_:

Lee el código varias veces hasta que te quede claro lo que está escrito, y estarás contento.


Gracias de nuevo.
 
LOA:


Como creador digo que i+1 es sólo para alimentar los datos de otro indicador, entonces comprueba la condición de ruptura, pero todo el cálculo posterior en i.

El caso es que el indicador no se actualiza automáticamente en ningún momento, sólo con la recarga (cambio de TF, visualización de propiedades).

No entiendo la razón.

Traté de usar sólo i, empujando el cálculo de datos del indicador requerido en la barra anterior, al final del ciclo, pero no ayudó.

tienes

           int  proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 

Sospecho que debería ser así.

           double proboy_5_UP = iCustom (NULL,0,"ME_Proboy_F5_For_EX",0,i+1);/*запрос значения индикатора 
 
costy_:

Usted tiene

Sospecho que debería ser así.


no.... No tomamos el valor del precio, sino la lectura del indicador (histograma), cuyo valor puede ser 1 o -1.
 
costy_:

Lee el código varias veces hasta que te quede claro lo que está escrito, y estarás contento.


¿Cómo se reescriben las condiciones de dicho código, no lo entiendo?

static bool Val_max, Cl_dn, Val_min; //static or global
                                        |
//+------------------------------------------------------------------+
int start()
  {
   int j;
   double bid;                                         
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1=Open[1];
double Close_1=Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "Название Польз. Индикатора",0,0);   // Присваиваем пер. Val значение польз. индикатора
if (Условие1)
{
 Val_max=true;                  // 
 Alert("Значение инд. >= Value_max (исп. 1-е усл.)");
}
if (Условие2)
{
 Cl_dn=true;
 Alert("1 бар закрылся падением (исп. 2-е усл.)");
}
if (Условие3 && Cl_dn==true)
{
 Val_min=true;
 Alert("Значение инд. <= Value_min (исп. 3-е усл.)");
}
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }
   
   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 
LOA:

no.... No tomamos el valor del precio, sino el indicador (histograma), que puede tener un valor de 1 o -1.

Sigo sin poder responder, ¿dónde están los inds invocados que devuelven int doble, pueden realmente ser >1 para que se asigne int >0 y viceversa (al menos *.ex4)?

ME_Proboy_F5_Para_EX

ME_Order_ATR_For_EX

2011.12.07 18:10:42 No se puede abrir el archivo 'experts\indicators\ME_Proboy_F5_For_EX.ex4' en el AUDUSD,M30

Reemplazado todo con MACD, ¡todo funciona!

Archivos adjuntos:
temp_1.mq4  14 kb
 
kolyango:


¿Cómo puedo reescribir las condiciones de dicho código, no lo entiendo?

bool проверять_ус1=true;
bool проверять_ус2=true;
bool проверять_ус3=true;
void start(){
      if(проверять_ус1)
         if(Open[0]>Close[1]){//условие 1
            проверять_ус1=false; //заглушка
         }
      if(проверять_ус2)
         if(Open[0]<Close[2]){//условие 1
            проверять_ус2=false; //заглушка
         }
      if(проверять_ус3)
         if(Open[0]==Close[3]){//условие 1
            проверять_ус3=false; //заглушка
         }
      if(!проверять_ус1&&!проверять_ус2&&!проверять_ус3){
            проверять_ус1=true;
            проверять_ус2=true;
            проверять_ус3=true;      
      }
}

Lee el código varias veces hasta que te quede claro lo que está escrito, y estarás contento.

¿Por qué necesitas banderas?) Puedes prescindir de ellas.

   if(Close[i+3]>Open[i+3]&&Close[i+2]>Open[i+3]&&Close[i+2]<Close[i+3]&&Close[i]>Close[i+3]) //открываем бай

 
costy_:

Sigo sin poder responder, ¿dónde están los inds invocados que devuelven int doble, pueden ser realmente >1 para que se asigne int >0 y viceversa (al menos *.ex4)?

ME_Proboy_F5_Para_EX

ME_Order_ATR_For_EX

2011.12.07 18:10:42 No se puede abrir el archivo 'experts\indicators\ME_Proboy_F5_For_EX.ex4' en el AUDUSD,M30

Reemplazado todo con MACD, ¡todo funciona!


Sí, el indicador en el historial funciona con cualquier indicador disparado.No funciona en la vida real, comprobado en M1.

Si te he entendido bien, intentaré sustituir en las condiciones >0, <0 por ==1 o ==-1.

Razón de la queja: