自己试了很多遍,总是不能在0号k线收盘时平仓。在mt4里面是不能这样编写吗?
if(当前时间 >= (openTime + K线周期)){
平仓;
}
以上三个变量都有函数可以获取,应该可以在收盘附近平仓。
这里面有服务器延迟问题,100%精确的平仓很难。
自己试了很多遍,总是不能在0号k线收盘时平仓。在mt4里面是不能这样编写吗?
試試看這樣的方法
if(TimeCurrent()/(Period()*60)==0)
{
OrderClose();
}
或是
if(TimeCurrent()/(Period()*60)==(Period()*60-1))
{
OrderClose();
}
我沒時間驗證 你自己試看看 結果如何還請告知
只能在结束前几秒,不可能恰好在那个时间点上。
外汇品种,要注意周五的收盘时间,最后一个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(...); }
試試看這樣的方法
if(TimeCurrent()/(Period()*60)==0)
{
OrderClose();
}
或是
if(TimeCurrent()/(Period()*60)==(Period()*60-1))
{
OrderClose();
}
我沒時間驗證 你自己試看看 結果如何還請告知
非常感谢!刚刚试了一下,它在运行当中没有出现错误,但是在实际操作中不能平仓。或许是我使用的方法不对
再試試這個看看
OnInit()
{
EventSetMillisecondTimer(300);
}
datetime time_flag;//全局變量
viod OnTimer()
{
if(time_flag!=iTime(Symbol(),0,0))
OrderClose(.....);
time_flag=iTime(Symbol(),0,0);//每天只执行一次
}
這個是我今天看到的方法改編
我自己也套用了 懒的測試 行不行我明天就知道了 你可以再試試看
理應兩種方法都可以 再不行 我就自己測試