挂单过期时间设定的问题,还没搞定啊

 

本人曾经问道:在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,即参数无效。我保证代码的其它地方没问题。

亟待指点啊!!

 
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的方法也可以。时间是以秒计的。。我以为时间单位跟图表上时间周期的单位一致。

原因: