Order 订单结构, 由GetOrder函数返回 { Id :交易单唯一标识 Price :下单价格 Amount :下单数量 DealAmount :成交数量 Status :订单状态, 参考常量里的订单状态 Type :订单类型, 参考常量里的订单类型 } 在这个结构中多一个下单时间, 在在很多挂单没有成交的情况下,每个挂单的时间有效就很重要了
比如:要删除超过一定时间的挂单的代码: function DelPendingOrderstime(time) { while (true) { var orders = GetRecords(); if (!orders) { Sleep(2000); continue; } var counter = 0; for (var i = 0; i < orders.length; i++) { if (new Date().getTime()-orders[i].Time >= time) { exchange.CancelOrder(orders[i].Id); counter++; Sleep(2000); } } if (counter === 0) { break; } } } 这个能成立的话,前提是ORDER这个结构中要有下单时间 time这个属性。orders.time 在mql4语言中,下单函数专门有一个订单有效期的参数, 希望老大能在orders结构中能加入这个time
Zero 好的,我会加上的, 更新之前可以这样解决 创建一个全局的字典,把orderId与下单时间对应起来. 获取时间的时候,查表获取
发明者量化-小小梦 #### 用了个函数封装返回对象。 function createNewOrder(order){ var opTime = new Date(); return { Id : order.Id, //交易单唯一标识 Price : order.Price, //下单价格 Amount : order.Amount, //下单数量 DealAmount : order.DealAmount, //成交数量 Status : order.Status, //订单状态, 参考常量里的订单状态 Type time : opTime // 新增加的属性,为调用该函数的时间,该函数 在下单后 用GetOrder(ID) 函数 获取order结构 后调用新封装入时间 }; } function main(){ var id = exchange.Buy(-1,1); var order = exchange.GetOrder(id); var newOrder = createNewOrder(order); Log("the newOrder `s time:",newOrder.time); Log("the newOrder is:",newOrder); Log("ORDER_STATE_PENDING:",ORDER_STATE_PENDING);//ORDER_STATE_PENDING :未完成 Log("ORDER_STATE_CLOSED:",ORDER_STATE_CLOSED);//ORDER_STATE_CLOSED :已关闭 Log("ORDER_STATE_CANCELED",ORDER_STATE_CANCELED);//ORDER_STATE_CANCELED } https://dn-filebox.qbox.me/0a03aebe3da604456adfc4f97dea02d5f8a74309.png 这样行么?我也是 试试~~嘿嘿
xuanxuan 好吧,玩不了高大上的字碘,只能等老大更新了