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

 
first_may:
¿Hay alguna función de ejemplo para trabajar con fechas, es decir, para determinar la diferencia entre dos fechas, si es mayor que cero o no?

y ¿qué es una fecha en su comprensión y en la comprensión de MQL?
 

Gente, ayúdenme a entender el código. La tarea principal es eliminar una orden pendiente cuando se alcanza un determinado nivel.

if (OrdersTotal()!=0 && Bid == Delete_Level)
   {
   for (int i=1; i<=OrdersTotal(); i++) //Cycle for all orders..
      { 
         if(OrderSelect(i-1,SELECT_BY_POS)==true)//If there is the next one
            { 
               if(OrderType()>1) 
                  {
                  if(OrderDelete(OrderTicket())==true)
                  {
                  Alert ("Ордера удалены");
                  }
                  }
            } 
      }
   }

El nivel de borrado está determinado por la posición de la MA 30 en 3 barras hasta el momento actual.

double MA3 = iMA(NULL, 0, MA_Period_2, 0, MODE_SMA, PRICE_CLOSE, 2); //определение уровня MA

double Delete_Level = MA3;// Определение значения переменной

Pero la orden no se elimina en este nivel de eliminación. Ayúdame a entender cuál es mi error.

 
¿a dónde llega el algoritmo? Imprime el código y compruébalo.
 
¿Qué quiere decir con "dónde va el algoritmo"?
 
vovan-gogan:
¿Qué quiere decir con "dónde va el algoritmo"?

Dices que no se borra, lo que significa que no va a OrderDelete.

Así que la pregunta es, ¿a dónde va? ¿Qué condición la bloquea?

 
sergeev:

Dices que no se borra, lo que significa que no llega a OrderDelete.

La pregunta es: ¿a dónde llega? ¿Qué condición la bloquea?


Entiendo la lógica. Intentaré arreglarlo ahora.
 

Algo se ha aclarado. Pero sigo sin saber cómo resolverlo. Usando Alert, encuentro que la condición

if (OrdersTotal()!=0 && Bid == Delete_Level)

no está satisfecho. Sólo "if(OrdersTotal()!=0" por separado sí, pero no junto con "Bid == Delete_Level". ¿Cuál es la razón de esto? Por qué cuando se alcanza el Nivel_de_eliminación, la orden pendiente no se elimina. Por favor, sugiera algo o sugiera una solución alternativa para eliminar una orden pendiente cuando alcanza el nivel de eliminación.

 
vovan-gogan:

Algo se ha aclarado. Pero sigo sin saber cómo resolverlo. Usando la Alerta, encuentro que la condición

no está satisfecho. Sólo "if(OrdersTotal()!=0" por separado sí, pero no junto con "Bid == Delete_Level". ¿Cuál es la razón de esto? Por qué cuando se alcanza el Nivel_de_eliminación, la orden pendiente no se elimina. Por favor, sugiera algo o sugiera una solución alternativa para eliminar una orden pendiente cuando alcanza el nivel de eliminación.


Normalice estas variables, "redúzcalas a un denominador común" - por ejemplo, utilice alguna tolerancia (+/-) del valor de la variable Delete_Level, porque no hay una igualdad exacta como la tiene ahora - Bid == Delete_Level.
 
vovan-gogan:

Algo se ha aclarado. Pero sigo sin saber cómo resolverlo. Usando Alert, encuentro que la condición

no está satisfecho. Sólo "if(OrdersTotal()!=0" por separado sí, pero no junto con "Bid == Delete_Level". ¿Cuál es la razón de esto? Por qué cuando se alcanza el Nivel_de_eliminación, la orden pendiente no se elimina. Por favor, sugiera algo o sugiera una solución alternativa para eliminar una orden pendiente cuando alcanza el nivel de eliminación.


Por ejemplo,
if(Bid-MarketInfo(Symbol(),MODE_SPREAD)*Point< Delete_Level && Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point > Delete_Level) - считать за 
if( Bid == Delete_Level )  
 

Lo siento, pero ¿podrías tomarlo con calma?) Ayúdame a entender el error en

Bid == Delete_Level