datetime TimeCurrent()
返回最后访问的服务器时间(最新的行情输入时间)作为秒钟数字从00:00 1970 年1月1 日开始。
注解: 在测试中, 时间格式为最后设定的服务器模式。
例子:
#define Sell_Color PaleGreen #define TimeOut 60 // 挂单过期时间:60分钟 void OpenOrder() { double op, sl, tp, cp=20*10.0*Point; int err; string str; datetime ep, curr; // 开空仓 op = Bid; sl = op + cp; tp = op - cp; curr = TimeCurrent(); ep = TimeOut + curr; ticket = OrderSend(Symbol(), OP_SELLLIMIT, lots, op, 3, sl, tp, "test", 1234, ep, Sell_Color); err = GetLastError(); if (ticket < 0) { str = TimeToStr(curr) + "OrderSend fail! #" + err + " " + ErrorDescription(err); Debug(-1, str); } else if (OrderSelect(ticket, SELECT_BY_TICKET) == true) OrderPrint(); else { str = TimeToStr(curr) + "OrderSelect fail! #" + err + " " + ErrorDescription(err); Debug(-1, str); } str = "OpenOrder(): sell " + Symbol() + " OK!"; Debug(0, str); } void Debug(int flag, string str) { if (flag != 0) Print(str); }
谢谢!搞定了。。其实前面keyila的方法也可以。时间是以秒计的。。我以为时间单位跟图表上时间周期的单位一致。
本人曾经问道:在ordersend()中,如果挂单,想设定过期时间,虽然该函数参数中有expiration,但不知道怎么用,恳请指点迷津,不胜感激。
keyila 的热心回答:
OrderSend(Symbol(),OP_BUYLIMIT,Lots,buy,slippage,buy-SL*point,buy+TP*point,"buy",pd,Time[0]+900,Red); 具体的需要可以根据你自己要的更改
也可以 OrderSend(Symbol(),OP_BUYLIMIT,Lots,buy,slippage,buy-SL*point,buy+TP*point,"buy",pd,Time[0]+(time[1]-time[2])*n,Red);
谢谢keyila,可我实在菜鸟,还没,请弄好看:
if(sellme||buyclose&&!buyme)
{
opl=Bid+bbb*Point;
ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lots,opl,3,opl+stoploss*Point,opl-TakeProfit*Point,"liupuMACD2",000000, Time[0]+3,Red);
或者
datetime tt=Time[0];
ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lots,opl,,3,opl+stoploss*Point,opl-TakeProfit*Point,"liupuMACD2",000000, tt+3,Red);
Time[0] 我直接调用,或者另设变量赋值使用,系统测试给的错误代码都是3,即参数无效。我保证代码的其它地方没问题。
亟待指点啊!!