private void _t_OnRtnOrder(object sender, OrderArgs e) { Log($"order:{e.Value.InstrumentID}\t{e.Value.Direction}\t{e.Value.Offset}\t{e.Value.LimitPrice}\t{e.Value.Volume}"); if (e.Value.IsLocal) { _t.ReqOrderAction(e.Value.OrderID); } }
private void TradeExt_OnRtnOrder1(object sender, OrderArgs e) { if (!e.Value.IsLocal) { return; } ShowInfo($"报单,{e.Value.Custom:000000000000},{e.Value.InstrumentID,-8},{e.Value.Direction,4},{e.Value.Offset,6},{e.Value.LimitPrice,8},{e.Value.Volume,4},剩{e.Value.VolumeLeft,4},{e.Value.StatusMsg}"); }
private void OnOrder(object sender, OrderArgs e) { this.Invoke(new Action(() => { if (_bsOrder.IndexOf(e.Value) < 0) { _bsOrder.Add(e.Value); } })); }
private void TradeExt_OnRtnOrder(object sender, OrderArgs e) { if (!e.Value.IsLocal) { return; } if (_floConfig.WaitSecondsAfterOrder == 0) { return; //0:不追单 } new Thread((id) => { Thread.Sleep(_floConfig.WaitSecondsAfterOrder * 1000); ReqOrderAction((string)id); //直接撤单,如果成功则继续,否则报错则不处理 }).Start(e.Value.OrderID); }
private void _t_OnRtnOrder(object sender, OrderArgs e) { Log($"OnRtnOrder 挂单回报:{e.Value.InstrumentID}\t{e.Value.Direction}\t{e.Value.Offset}\t{e.Value.LimitPrice}\t{e.Value.Volume}\t{e.Value.OrderID}\t{e.Value.SysID}\t{e.Value.StatusMsg}"); OrderField orderField = e.Value; if (e.Value.Status == OrderStatus.Filled) { this.placeReverseOrder(orderField); } this.updateAllOrders(orderField); IList <OrderField> openOrderEnumerable = this.getOpenOrders(); this.fileAction.WriteOpenOrders(root_dir, openOrderEnumerable); //if (e.Value.IsLocal) // _t.ReqOrderAction(e.Value.OrderID); }
private void TradeExt_OnRtnCancel(object sender, OrderArgs e) { if (!e.Value.IsLocal) { return; } if (_q == null) { ShowInfo("请先赋值行情接口"); return; } MarketData tick; if (!_q.DicTick.TryGetValue(e.Value.InstrumentID, out tick)) { return; } var id = e.Value.Custom + 1; var times = e.Value.Custom % 100; if (times >= _floConfig.FollowTimes) //达到最大追单次数 { var price = e.Value.Direction == DirectionType.Buy ? tick.UpperLimitPrice : tick.LowerLimitPrice; ShowInfo($"[{e.Value.Custom}]达到最大追单次数({_floConfig.FollowTimes},板价追单[custom:{id}][{e.Value.InstrumentID},{e.Value.Direction},{ e.Value.Offset},{ e.Value.Direction},{price},{ e.Value.VolumeLeft}])"); ReqOrderInsert(e.Value.InstrumentID, e.Value.Direction, e.Value.Offset, price, e.Value.VolumeLeft, OrderType.Limit, id); } else { InstrumentField instField; if (!DicInstrumentField.TryGetValue(e.Value.InstrumentID, out instField)) { return; } var price = e.Value.Direction == DirectionType.Buy ? (tick.AskPrice + _floConfig.NotFirstAddticks * instField.PriceTick) : (tick.BidPrice - _floConfig.NotFirstAddticks * instField.PriceTick); ShowInfo($"[{e.Value.Custom}]第{times - 1}次追单[id:{id}][{e.Value.InstrumentID},{e.Value.Direction},{ e.Value.Offset},{ e.Value.Direction},{price},{ e.Value.VolumeLeft}]"); ReqOrderInsert(e.Value.InstrumentID, e.Value.Direction, e.Value.Offset, price, e.Value.VolumeLeft, OrderType.Limit, id); } }
private void OnCancel(object sender, OrderArgs e) { }
private void _t_OnRtnCancel(object sender, OrderArgs e) { Log($"cancel:{e.Value.StatusMsg}\t{e.Value.InstrumentID}\t{e.Value.Direction}\t{e.Value.Offset}\t{e.Value.LimitPrice}\t{e.Value.Volume}\t{e.Value.StatusMsg}"); }