我之前是用麦语言写策略的,麦语言很简单,很快就能实现策略,但是后期无法扩展,想加入一些其他的功能无法做到, 现在用JS把之前的策略重新实现了一遍,但是遇到了几个问题:
第一个问题: 麦语言买入开仓, 卖出平仓, 他们走的是限价挂单委托, 但是限价限的是实时的CLOSE报价 还是买一价, 卖一价.
我现在用JS实现的逻辑是: 买入的时候用最新实时close价+滑点 进行挂单委托, 但是会有未成交的订单. 用exchange.Orders()可以得到未成交的订单
但是我用以下代码, 只要碰到没有未成交的订单的时候,就会出错. 显示TypeError: Cannot read properties of undefined (reading ‘Id’). 求解决办法.
var wei_order =exchange.GetOrders(); //未成交的订单
while (wei_order)
//我尝试用 while (wei_order!=[]) 或 while (wei_order!=null) 仍然无法解决,我的想法就是wei_order变量只有有未成交的订单,才处理
//然而这个while后面的条件怎么限定都没有用, 运行都会报错:TypeError: Cannot read properties of undefined (reading ‘Id’), 而我想要的是 当有没有成交的订单才去取消订单, 重新用更高的一个价格下单.
{
var wei_order_id =wei_order[0].Id;
exchange.CancelOrder(wei_order_id);
Sleep(1000);
order_id = exchange.Buy(now_records.Close+ huadian, KaiCangNum);
Sleep(5000);
}
第二个问题: 因为有未成交的订单, 所以我用exchange.GetPosition()函数来获取持仓的数量, 在卖出的时候, 遇到未成交的订单, 会显示:平仓仓位不足. 我就很奇怪了, 这个exchange.GetPostion()函数里的Amount不是获取已经成功持仓的数量吗? 然后我试着换 exchange.GetOrder(order_id) 去查订单, 再获取订单的Amount, 这个是下单的数量, 成没成交他管不了, 它只负责按价格数量下单, 这样得到的数也不对啊. 我应该如何去处理这个问题?
第三个问题: 对于委托挂单买卖, 如何在维持好的利润的情况下下单(不想用市价下单), 如何处理未成交的订单(重试几次,间隔多久), 平仓的时候, 如何确保平仓的数量是正确的? 而不会显示平仓仓位不足.
caibingbo7639 你最后怎么解决的,成交数量不足真的头疼
syue 下单会返回一个orderid,写程序要进入循环,跟踪这个ORDER ID 成交,否则就再2秒内删除