大神们,如何禁止任意4小时内(不是H4的K线)重复下单?(问题已经解决!!!谢谢!我用if和Timehour定义变量配合iTime函数用在H1周期上解决的 )

CHARLES_CHUI  

大神们,因为现在的服务器基本上4小时K的开盘和收盘时间跟格林威治错开了2个小时,遇到的其中一个问题就是,如果按照以往那样用4小时K线限制重复下单的话,因为不同服务器4小时K线的错位,会重复下一次单,所以现在想问问大家有没有什么方法和思路?因为旧的服务器H4的开始时间是0-4  现在的服务器是2-6,我想在新服务器限定,譬如2点下的单但是我想在0-4点这个时间段只下一次单而不是2-6这四个小时下一次,所以用现在服务器的H4去限制重复下单这个老办法不行, 现在想用1小时图转换下 ,大家有什么好的思路吗?  题外话,MT5还不能选择自己喜欢的服务器时间或者转换成自己喜欢的服务器时间,这个有待改进,毕竟不同标的的交易需要不同的服务器时间的。

Ziheng Zhuang  

简单点, 你可以用全局变量记录每次开仓后的当下时间,这样每次开仓前比较当下的时间是否大于记录时间+4小时.

参考:

datetime LastTradeTime = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
    if(TimeCurrent()>LastTradeTime+4*3600)
    {
      int ticket = OrderSend(...);
      if(ticket>0)
      {
         LastTradeTime = TimeCurrent();
      }
    }
} 
CHARLES_CHUI  
Ziheng Zhuang #:

简单点, 你可以用全局变量记录每次开仓后的当下时间,这样每次开仓前比较当下的时间是否大于记录时间+4小时.

参考:

首先谢谢你的回复。

其实我的意思是任意指定的4小时内,不是下单后的4小时内。你看看我上面的详细说明就知道我说的意思,譬如我在1点或者2点或者3点下的单,但我想在0-4点这个固定的时间段不重复下第二单,或者在1-5这个固定的时间段内不再重复下单。原因是交易商的服务器4小时K线开始和起始时间变了,以前是0-4, 现在是2-6,但我想按0-4这个时间段内不重复下单,所以不能用datetime 来定义H4的K线的Itime开盘时间去限制下单次数。现在在想代替办法,希望你能发表下意见和建议 谢谢你

原因: