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

 

¿Alguien puede sugerir el siguiente código?

Si una parrilla de órdenes está CERRADA (más de 2 del mismo tipo), entonces DEJA DE COMERCIAR hasta el final del día (o algún tiempo que puede ser establecido en horas, minutos).

Contando la historia como se encuentra en los mismos tipos de orden todavía de alguna manera capaz de, pero cómo parar al final del día, precisamente, no lo sé. Feliz Pentecostés a todos)

 
Igor Makanu:

no es normal, ocho bytes serían un dolor de cabeza para enviar algo

Bueno, depende del propósito, si es sólo un recordatorio, entonces ocho es suficiente :)

 
Порт-моне тв:

¿Alguien puede sugerir el siguiente código?

Si una parrilla de órdenes está CERRADA (más de 2 del mismo tipo), entonces DEJA DE COMERCIAR hasta el final del día (o algún tiempo que puede ser establecido en horas, minutos).

Contando la historia como se encuentra en los mismos tipos de orden todavía de alguna manera capaz de, pero cómo parar al final del día, precisamente, no lo sé. Feliz Pentecostés a todos)

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(int order_type)
  { double p = 0;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=время начала дня)
           { 
            if(OrderType()==order_type || order_type == -1) cnt++;
           }
        }
     }
   return(p);
  }
 
Порт-моне тв:

¿Alguien puede sugerir el siguiente código?

Si una parrilla de órdenes está CERRADA (más de 2 del mismo tipo), entonces DEJA DE COMERCIAR hasta el final del día (o algún tiempo que puede ser establecido en horas, minutos).

Contando la historia como se encuentra en los mismos tipos de orden todavía de alguna manera capaz de, pero cómo parar al final del día, precisamente, no lo sé . Felices fiestas a todos)

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

Si he entendido bien la pregunta, es aproximadamente así (el principio en sí)

 
Aleksei Stepanenko:

Bueno, depende de qué propósito, si sólo para recordarse a sí mismo, entonces ocho es suficiente :)

si quieres recordar, es mejor lanzar un evento personalizado en OnChartEvent(), es más conveniente, imho


MakarFX:

Quién puede sugerir el siguiente código:

si la parrilla de órdenes es CERRADA (más de 2 del mismo tipo), entonces DEJA DE COMERCIAR hasta el final del día (o algún tiempo que puede ser establecido en horas, minutos).

buscar en el historial de órdenes desde la fecha de inicio del día (hoy, o desde TF D1 para obtener una barra cero o desde una hora de tic de fecha para convertir)

si se ha encontrado al menos un pedido en el historial con una fecha superior a la establecida - salir de la función, dando como resultado true

en OnTick() en la parte superior de la llamada de dicha función con el parámetro de la fecha (hoy)


Me da pereza escribirlo, hay como una docena de líneas. Kim tenía funciones para buscar pedidos en el historial por fecha

 
Порт-моне тв: Contando la historia como hallazgo por el mismo tipo de orden todavía puedo manejar de alguna manera, pero cómo parar al final del día no sé exactamente. Feliz Trinidad a todos)
bool trade_buy;
bool trade_sell;

if(кол-во закрытых ордеров buy>2)
trade_buy=false;
else
trade_buy=true;

if(кол-во закрытых ордеров sell>2)
trade_sell=false;
else
trade_sell=true;
 
Maxim Kuznetsov:

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

si he entendido bien la pregunta, es algo así (el principio en sí)

Gracias por la pronta respuesta, pero esto de "prohibir el comercio", no sé cómo implementarlo, gracias por el código.
 
MakarFX:
comercio de venta / comercio de compra - ¡función cómo!
 
Порт-моне тв:
comercio de venta / comercio de compra - ¡función cómo!


//+------------------------------------------------------------------+
bool trade_buy;
bool trade_sell;
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(string symb="",int order_type)
  {
   double p = 0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderSymbol()==symb || symb=="")
           {
            if(OrderCloseTime()>=iTime(_Symbol,PERIOD_D1,0))
              { 
               if(OrderType()==order_type || order_type == -1) cnt++;
              }
           }
        }
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(GetCloseOrderType(_Symbol,0)>2)
      trade_buy=false;
   else
      trade_buy=true;

   if(GetCloseOrderType(_Symbol,1)>2)
      trade_sell=false;
   else
      trade_sell=true;
//---
   if(trade_buy)
     {
      твое условие открытия покупок
     }
   if(trade_sell)
     {
      твое условие открытия продаж
     }
//---
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

En todo caso, se toma de aquí.

Soy nuevo en la programación, no soy muy bueno, ¿puedes rehacerlo y ponerlo a disposición para su descarga?

Razón de la queja: