Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1512

 

Qualquer pessoa pode sugerir o seguinte código:

Se uma grade de ordens for FECHADA (mais de 2 do mesmo tipo), então PARE DE TRADAR até o final do dia (ou algum tempo que possa ser ajustado em horas, minutos).

A história da contagem, encontrada nos mesmos tipos de ordem ainda é de alguma forma capaz, mas como parar no final do dia, não se sabe exatamente. Feliz Pentecostes para todos)

 
Igor Makanu:

não normal, oito bytes seriam uma dor de cabeça para enviar algo

Bem, depende do propósito, se for apenas um lembrete, então oito é suficiente :)

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

Qualquer pessoa pode sugerir o seguinte código:

Se uma grade de ordens for FECHADA (mais de 2 do mesmo tipo), então PARE DE TRADAR até o final do dia (ou algum tempo que possa ser ajustado em horas, minutos).

A história da contagem, encontrada nos mesmos tipos de ordem ainda é de alguma forma capaz, mas como parar no final do dia, não se sabe exatamente. Feliz Pentecostes para 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);
  }
 
Порт-моне тв:

Qualquer pessoa pode sugerir o seguinte código:

Se uma grade de ordens for FECHADA (mais de 2 do mesmo tipo), então PARE DE TRADAR até o final do dia (ou algum tempo que possa ser ajustado em horas, minutos).

A história da contagem, encontrada nos mesmos tipos de ordem ainda é de alguma forma capaz, mas como parar no final do dia, não se sabe exatamente . Boas festas para 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();

}

Se entendi a pergunta corretamente, é aproximadamente assim (o princípio em si)

 
Aleksei Stepanenko:

Bem, depende de que propósito, se apenas para se lembrar de si mesmo, então oito é suficiente :)

se você quiser se lembrar, é melhor lançar um evento personalizado no OnChartEvent(), é mais conveniente, imho


MakarFX:

Quem pode sugerir o seguinte código:

se a grade de ordens for FECHADA (mais de 2 do mesmo tipo), então PARE DE TRADAR até o final do dia (ou algum tempo que possa ser ajustado em horas, minutos).

procurar no histórico de pedidos desde a data de início do dia (hoje, ou da TF D1 para obter uma barra de zero ou a partir de uma data hora de marcar o tempo para converter)

se pelo menos uma ordem foi encontrada na história com uma data maior do que a data definida - sair da função, resultando em verdadeira

em OnTick() no topo da chamada de tal função com o parâmetro de data (hoje)


Sou preguiçoso demais para escrevê-lo, há cerca de uma dúzia de linhas. Kim tinha funções de busca de pedidos na história por data

 
Порт-моне тв: Contando o histórico como sendo encontrado pelo mesmo tipo de ordem que eu ainda posso de alguma forma administrar, mas como parar até o final do dia não sei exatamente. Feliz Trindade para 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();

}

se entendi bem a pergunta, é algo assim (o princípio em si)

Obrigado pela resposta rápida, mas esta coisa de "proibir o comércio", não sei como implementar, obrigado pelo código.
 
MakarFX:
comercial venda / comércio compra - função como!?
 
Порт-моне тв:
comercial venda / comércio compra - função como!?


//+------------------------------------------------------------------+
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:

Se alguma coisa, é tirada daqui.

Sou novo em programação, não sou muito bom, você pode refazê-la e torná-la disponível para download ???

Razão: