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

 
first_may:


Sí, estoy de acuerdo, lo pronuncié mal. Después de leer la ayuda, decidí escribirlo así:

// el Asesor Experto puede colocar órdenes todos los días de la sesión
// durante el periodo de 10-45 a 18-30
if (Hour()>=10 && Minute()>=45 && Hour()<=18 && Minute()<=30)
{
...
}

¿Es esta la condición correcta para comprobar la hora?


No. Usted no operará con esta condición en absoluto, ya que Minuto()>=45 && Minuto()<=30 es imposible en principio.

 
sergeev:

No. Con esta condición no podrá operar en absoluto porque Minuto()>=45 && Minuto()<=30 es, en principio, imposible


Entonces, ¿no se pueden comparar las horas y los minutos por separado? Así, 11-55, por ejemplo, corresponde a la primera condición, ya que 11>=10 y 55>=45, pero no a la segunda, ya que 11<=18 y 55<=30. Aunque en la vida real, 11-55 está justo en el vintervalo de horas que va de 10-45 a 18-30.
 
first_may:

Resulta que no podemos comparar las horas y los minutos por separado... Por ejemplo, 11-55 se ajusta a la primera condición, ya que 11>=10 y 55>=45, pero no a la segunda, ya que 11<=18 y 55<=30. Aunque en la vida real, 11-55 está justo en el vintervalo de horas que va de 10-45 a 18-30.

debes crear tu hora de inicio y fin con, por ejemplo, StrToTime
 
sergeev:

tienes que crear tus propias horas de inicio y fin, por ejemplo, StrToTime


Aquí, usando la última hora conocida del servidor, escribió:
if (TimeCurrent()>=StrToTime("10:45") && TimeCurrent()<=StrToTime("18:30"))
{
...
}

¿Ahora el 11-55 entrará en el intervalo de 10-45 a 18:30?

 
first_may:

¿El 11-55 se situará ahora entre el 10-45 y el 18-30?

Sí.
 
sergeev:
Sí.


¡Muchas gracias! :)
 

Gente, con todas estas variables globales y locales, estoy a punto de empezar a correr descalzo y a soplar gorriones. ¡¡¡¡Hombre, no entiendo por qué hay tanto dolor de cabeza en medio de la nada!!!!

int Orders=0;                          // Объявление глобальной еременной суммы ордеров
int start()                            // Спец. функция start
  {
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //Сигнал на пересечении МА
        {
          if (OrdersTotal()>= 1) 
              return(0);               //Если ордеров больше 1, уходим.
   
          SL = 30;                     // Стоп лосс
          TP = 12;                     // Тейк профит
          S_Price = Low[1] - 1* Point; // Уровень установки SELLSTOP
          if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0) // Установка
//ордера SELLSTOP. Если OrderSend возвращает больше 0, то выполняем следующее.
            {
               Orders++;               //Увеличить величину Orders на 1. 
               Alert ("Ордер выставлен.Orders = ",Orders ); //Вывод нового значения Orders.
            }
        }    
   return(0);                             // Выход из start()
  }
Por lo que sé del tutorial de MQL4, ahora el nuevo valor de la variable global Pedidos debe ser igual a 1. La siguiente iteración debería ser la 2, y luego la 3. Entonces 4. Y así sucesivamente, hasta que el Asesor Experto coloque órdenes pendientes. ¡Pero no entiendo por qué el EA no coloca órdenes pendientes! Después de colocar otra orden SELLSTOP pendiente, cada vez veo un solo mensaje: ¡Ordenes = 1! ¿Cuál es la razón? ¿Puede ser por el MetaEditor?
 
vovan-gogan:

Gente, con todas estas variables globales y locales, estoy a punto de empezar a correr descalzo y a soplar gorriones. ¡¡¡¡Hombre, no entiendo por qué hay tanto dolor de cabeza en medio de la nada!!!!

Por lo que sé del tutorial de MQL4, ahora el nuevo valor de la variable global Pedidos debe ser igual a 1. La siguiente iteración debería ser la 2, y luego la 3. Entonces 4. Y así sucesivamente, hasta que el Asesor Experto coloque órdenes pendientes. ¡Pero no entiendo por qué el EA no coloca órdenes pendientes! Después de colocar otra orden SELLSTOP pendiente, cada vez veo un solo mensaje: ¡Ordenes = 1! ¿Cuál es la razón? ¿Puede ser por el MetaEditor?

La razón es que tiene más órdenes de mercado abiertas en esta cuenta de operaciones.
 
Roman.:

La razón es que tiene más órdenes de mercado abiertas en esta cuenta de operaciones.

Lo más triste es que esto sucede en el tester. y las órdenes pendientes son colocadas por el EA, pero las Órdenes siempre son iguales a 1
 
vovan-gogan:

Lo más triste es que esto sucede en el probador. El Asesor Experto coloca órdenes pendientes y las órdenes siempre son iguales a 1

Creo que no has formulado bien tu pregunta.