Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1749

 
makssub #:
Por la tarde. Utilizo este código para cerrar todos los pedidos. Pero me he dado cuenta de que si hay muchos, no todos están cerrados. Qué puedo añadir para cerrar todas, aunque no sea la primera vez. Si es posible, danos un ejemplo.

https://www.mql5.com/ru/docs/common/sleep

   if(AccountInfoDouble(ACCOUNT_EQUITY)<=TargetLoss || AccountInfoDouble(ACCOUNT_EQUITY)>=TargetProfit)
     {
      AllClose();
      Sleep(1000);
      AllClose();
      ExpertRemove();
     }
//---
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Sleep - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Última pregunta )

Quien portara su EA de la plataforma mql a windows o linux. Permítanme explicar, una vez hace mucho tiempo escribió guiones para el mu en línea, que el juego en sí bombea el héroe, mientras duerme. Así que la pregunta es, ¿tal vez quién trasladó al asesor, fuera de la plataforma? Como si se tratara de una persona, no de un robot.

Lo siento si no lo he explicado correctamente )

 
makssub #:

Última pregunta )

Quien portara su EA de la plataforma mql a windows o linux. Permítanme explicar, una vez hace mucho tiempo escribió guiones para el mu en línea, que el juego en sí bombea el héroe, mientras duerme. Así que la pregunta es, ¿tal vez quién trasladó al asesor, fuera de la plataforma? Como si se tratara de una persona, no de un robot.

Si no se ha explicado correctamente, lo siento )

en un servidor Windows (VDS o VPS) se coloca MetaTrader, en él se ejecuta el Asesor Experto. Eso es todo: el soldado duerme, el servicio va :-)

La plataforma de negociación es algorítmica y está diseñada para la participación activa de un robot, si no lo es en su totalidad.

Aunque, los clickers (software que "pincha" en los botones emulando a un humano) alguien los utiliza. Y los autónomos son solicitados periódicamente y hay vendedores en Internet.

 

¡Hola!

¿Puede alguien conocer un EA o un trozo de código (para incluir en el código del búho), para cambiar el SL TP para la siguiente orden?

Digamos que la orden se abrió con 0.01 SL= 30 TP=100

la siguiente orden se abrió con 0.02SL= 30 TP=95

etc.

¿Qué función debo utilizar para describir esto?

Así es como se asigna actualmente miTP deSL:

//+-----------------------------------------------------------------------------------------------+
//|                                                                    Функция модификации ордера |
//+-----------------------------------------------------------------------------------------------+
void vOrderModify(int iOTi)
  {
   int    iOTy = -1;    // Тип ордера
   double dOOP = 0;     // Цена открытия ордера
   double dOSL = 0;     // Стоп Лосс
   int    iMag = 0;     // Идентификатор советника
   double dSL  = 0;     // Уровень убытка
   double dTP  = 0;     // Уровень прибыли

// Выберем по тикету открытый ордер, получим некоторые значения
   if(OrderSelect(iOTi, SELECT_BY_TICKET, MODE_TRADES))
     {
      iOTy = OrderType();
      dOOP = OrderOpenPrice();
      dOSL = OrderStopLoss();
      iMag = OrderMagicNumber();
     }

// Если ордер открыл данный советник, то входим в условие
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMag)
     {
// Если Стоп Лосс текущего ордера равен нулю, то модифицируем ордер
      if(dOSL == 0)
        {
         if(iOTy == OP_BUY)
           {
            dSL = NormalizeDouble(dOOP - StopLoss * Point, Digits);
            dTP = NormalizeDouble(dOOP + TakeProfit * Point, Digits);

            bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
           }

         if(iOTy == OP_SELL)
           {
            dSL = NormalizeDouble(dOOP + StopLoss * Point, Digits);
            dTP = NormalizeDouble(dOOP - TakeProfit * Point, Digits);

            bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE);
           }
        }
     }
  }
 

Señores profesionales, aconsejen por favor, no se me ocurre nada (acabo de empezar a aprender a programar).

Aquí hay una parte de un Asesor Experto, no importa cuál. En la función OnInit() hay dos operadores de retorno.

No consigo poner entre paréntesis los números -1 y 0, ¿de dónde salen y a dónde vuelve el programa abortado?

//| Función de inicialización de expertos |

//+------------------------------------------------------------------+
int OnInit()
{
*******************************************
if(********* || *********)
{
Alert("***************",******(),"!!");
return(-1);
}


**** = *******;
*** = *********;
if(_******** || _********)
{
************;
************;
}
return(0);
}
//+------------------------------------------------------------------+
//| Función de desinicialización experta |
 
vladeimirami #:

No consigo poner entre paréntesis los números -1 y 0, ¿de dónde salen y a dónde vuelve el programa abortado?

https://www.mql5.com/ru/docs/event_handlers/oninit

Siga leyendo. Cero es un éxito y el programa seguirá funcionando. Los otros números son el final del trabajo.

Документация по MQL5: Обработка событий / OnInit
Документация по MQL5: Обработка событий / OnInit
  • www.mql5.com
OnInit - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksei Stepanenko #:

https://www.mql5.com/ru/docs/event_handlers/oninit

Siga leyendo. Cero es un éxito y el programa continúa. Los otros números son el final del trabajo.

Mierda. Lo tengo. No he leído bien la enumeraciónENUM_INIT_RETCODE. Gracias. De todos modos cuando la inicialización falla salimos con cualquier número distinto de cero. Al menos se ha movido del punto muerto. Gracias.
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Функции обработки событий - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

La tarea de comprobar si faltan barras en los gráficos de símbolos

No encuentro una solución a este problema

Necesito escribir el script según el siguiente principio: Print(date), Print(date), Print(date) si hay un hueco en la barra

Por ejemplo, el script debe ser de 48 barras en el gráfico M30 yPrint(date) si hay un hueco de 47 barras.

¿Cómo se escribe? Es deseable una solución multiplataforma.

P.D. Esto debería hacerse en toda la historia disponible.

 

Vitaly, ¿cómo estimas el pase del bar? ¿48 barras al día? A veces el trabajo se detiene a las 11 de la noche, a veces empieza a las 2. Si se mira el rublo, no se negocia por la noche.

Si es estrictamente 24 horas 5 días a la semana, entonces probaremos cada barra en orden con comprobación de la secuencia. Pero entonces habrá señales sobre barras perdidas, que no deberían existir.

 
Vitaly Muzichenko Print(date), Print(date) si hay un hueco en la barra

Por ejemplo, el script debe ser de 48 barras en el gráfico M30 yPrint(date) si hay un hueco de 47 barras.

¿Cómo se escribe? Es deseable una solución multiplataforma.

P.D. Esto debería hacerse en toda la historia disponible.

Hay una tarea similar - hacer un marco de tiempo con barras perdidas. Esto es, por ejemplo, tener exactamente 1440 minutos en un día. No importa si algunas están vacías.

nada rápido, ordenado y bonito se me ocurrió :-( Sólo formar un array al principio del día, contar los minutos transcurridos desde 0:00 y rellenar de esta manera.

Y el hecho de que falten minutos se puede comprobar comparando iBars(hora_actual,0:01 del día actual) y (hora_actual_inicio del día)/PERIOD_SECONDS...