各位大神请问0号k线的收盘价平仓怎么写 谢谢各位了 自己研究好几天没有办法

 
自己试了很多遍,总是不能在0号k线收盘时平仓。在mt4里面是不能这样编写吗?
 
1055088409:
自己试了很多遍,总是不能在0号k线收盘时平仓。在mt4里面是不能这样编写吗?

if(当前时间 >= (openTime + K线周期)){

平仓;

}

以上三个变量都有函数可以获取,应该可以在收盘附近平仓。

这里面有服务器延迟问题,100%精确的平仓很难。

 
1055088409:
自己试了很多遍,总是不能在0号k线收盘时平仓。在mt4里面是不能这样编写吗?

試試看這樣的方法

if(TimeCurrent()/(Period()*60)==0)

     {

      OrderClose();

     }

或是

if(TimeCurrent()/(Period()*60)==(Period()*60-1))

     {

      OrderClose();

     }

我沒時間驗證 你自己試看看 結果如何還請告知

 
在0号K线收盘前几秒平仓就可以了,不可能完全是以收盘价平仓的,接近就就可以了
 

只能在结束前几秒,不可能恰好在那个时间点上。

外汇品种,要注意周五的收盘时间,最后一个K线是否是完整周期。

期货,CFD,Index等等,有交易时段问题,每个时段的最后一个K线是否是完整周期。

   datetime closeTime = iTime(NULL,0,0)+PeriodSeconds(0);//K线结束时间
   int leftSeconds = 5;//K线还剩余5秒
   if(TimeCurrent()>=closeTime-leftSeconds && TimeCurrent()<closeTime)//TimeCurrent()<closeTime 可以不用,写上逻辑上更直观
   {
      //CloseOrders(...);
   }
 
非常感谢!刚刚试了一下,它在运行当中没有出现错误,但是在实际操作中不能平仓。或许是我使用的方法不对

 
Hung Wen Lin:

試試看這樣的方法

if(TimeCurrent()/(Period()*60)==0)

     {

      OrderClose();

     }

或是

if(TimeCurrent()/(Period()*60)==(Period()*60-1))

     {

      OrderClose();

     }

我沒時間驗證 你自己試看看 結果如何還請告知

 
非常感谢大家的帮助,谢谢!
 
1055088409:
非常感谢!刚刚试了一下,它在运行当中没有出现错误,但是在实际操作中不能平仓。或许是我使用的方法不对

 

再試試這個看看

OnInit()

{

 EventSetMillisecondTimer(300);

}

datetime time_flag;//全局變量

viod OnTimer()

{

  if(time_flag!=iTime(Symbol(),0,0))

       OrderClose(.....);

  time_flag=iTime(Symbol(),0,0);//每天只执行一次

}


這個是我今天看到的方法改編

我自己也套用了 懒的測試 行不行我明天就知道了 你可以再試試看

理應兩種方法都可以 再不行 我就自己測試 

原因: