/// <summary> /// 平仓追单对齐。 /// </summary> /// <remarks> /// 1.优先合约未成交单撤单 /// 2.反手合约未成交单撤单 /// 3.反手合约以市价委托持仓仓差。 /// </remarks> public void CloseChaseOrder() { CheckBackgroundWorker("平仓追单"); Debug.Assert(m_arbitrageOrder != null); Debug.Assert(m_worker == null); try { m_worker = new BackgroundWorker(); m_worker.ProgressChanged += WorkerForCloseChaseOrderProgressChanged; m_worker.RunWorkerCompleted += WorkerForCloseChaseOrderCompleted; m_worker.DoWork += WorkerDoWorkForCloseChaseOrder; m_backgroundRunFlag = true; m_backgroundWorkerType = AutoTraderWorkType.CloseChaseOrder; m_worker.RunWorkerAsync(); } catch (Exception ex) { m_backgroundRunFlag = false; m_backgroundWorkerType = AutoTraderWorkType.None; m_worker.ProgressChanged -= WorkerForCloseChaseOrderProgressChanged; m_worker.RunWorkerCompleted -= WorkerForCloseChaseOrderCompleted; m_worker.DoWork -= WorkerDoWorkForCloseChaseOrder; m_worker = null; Debug.Assert(false, ex.Message); throw new Exception(string.Format("{0}启动平仓追单失败,{1}", this, ex.Message)); } SafeFireAutoTraderStateChanged(AutoTraderWorkType.CloseChaseOrder, AutoTraderState.Enable); }
private void M_autoTrader_OnStateChanged(AutoTraderWorkType workType, AutoTraderState state) { if (this.InvokeRequired) { this.BeginInvoke(new AutoTraderStateChangedEventHandle(M_autoTrader_OnStateChanged), workType, state); return; } ShowRunButton(); }
/// <summary> /// 安全触发套利单状态变更事件。 /// </summary> /// <param name="workType">工作类型。</param> /// <param name="state">状态。</param> private void SafeFireAutoTraderStateChanged(AutoTraderWorkType workType, AutoTraderState state) { AutoTraderStateChangedEventHandle handle = this.OnAutoTraderStateChanged; if (handle != null) { try { handle(workType, state); } catch (Exception ex) { Debug.Assert(false, ex.Message); } } }
public static string ToDescription(this AutoTraderWorkType workerType) { switch (workerType) { case AutoTraderWorkType.OpenOrClose: return("开平仓"); case AutoTraderWorkType.OpenAlignment: return("开仓对齐"); case AutoTraderWorkType.OpenChaseOrder: return("开仓追单"); case AutoTraderWorkType.CloseChaseOrder: return("平仓追单"); default: Debug.Assert(false); return("未知类型"); } }
private void AutoTraderManager_OnAutoTraderStateChanged(AutoTraderWorkType workType, AutoTraderState state) { UpdateStacInfo(); }
private void AutoTrader_OnStateChanged(AutoTraderWorkType workType, AutoTraderState state) { SafeFireAutoTraderStateChanged(workType, state); }