新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1512

 

谁能建议一下下面的代码。

如果一个网格的订单被关闭(同一类型的订单超过2个),那么就停止交易,直到一天结束(或某个可以用小时、分钟设置的时间)。

算上历史上发现的相同的订单类型 还是有一定的能力的,但如何在最后停止正是不知道的。祝大家五旬节快乐)

 
Igor Makanu:

不正常,8个字节发送的东西将是一个痛苦的屁股

嗯,这取决于目的,如果只是一个提醒,那么8个就够了 :)

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

谁能建议一下下面的代码。

如果一个网格的订单被关闭(同一类型的订单超过2个),那么就停止交易,直到一天结束(或某个可以用小时、分钟设置的时间)。

算上历史上发现的相同的订单类型 还是有一定的能力的,但如何在最后停止正是不知道的。祝大家五旬节快乐)

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -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);
  }
 
Порт-моне тв:

谁能建议一下下面的代码。

如果一个网格的订单被关闭(同一类型的订单超过2个),那么就停止交易,直到一天结束(或某个可以用小时、分钟设置的时间)。

算上历史上发现的相同的订单类型 还是有一定的能力的,但如何在最后停止正是不知道 的。祝大家节日快乐)

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

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();

}

如果我对这个问题理解正确的话,大约是这样的(原则本身)

 
Aleksei Stepanenko:

嗯,这取决于什么目的,如果只是为了提醒自己,那么八个就够了 :)

如果你想提醒自己,最好在OnChartEvent()中抛出一个自定义事件,这样更方便,我认为。


MakarFX

谁能建议以下代码。

如果订单的网格是CLOSE(超过2个相同的类型),那么就停止交易,直到一天结束(或一些可以设置为小时、分钟的时间)。

从一天的开始日期(今天,或从TF D1得到一个零条,或从一个日期时间的滴答时间转换)搜索订单历史

如果在历史上至少发现一个日期大于设定日期的订单--退出函数,结果为true。

在OnTick()中,在调用这样一个带有日期参数(今天)的函数的最上方


我懒得写了,大概有十几行。 金有按日期搜索历史上的订单的功能

 
Порт-моне тв: 把历史算作按相同的订单类型 寻找,我还是能以某种方式管理,但如何在一天结束前停止,我不知道具体是什么。祝大家三一节快乐)
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();

}

如果我对问题的理解是正确的,它是这样的(原则本身)。

谢谢你的及时回复,但这个 "禁止交易",我不知道如何实现,谢谢你的代码。
 
MakarFX:
交易卖出/交易买入--功能为!?
 
Порт-моне тв:
交易出售/交易购买--功能如何!?


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

如果有的话,那就是取自这里

我是编程新手,不是很擅长,你能重做并提供下载吗?

原因: