Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        private void M_autoTrader_OnStateChanged(AutoTraderWorkType workType, AutoTraderState state)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new AutoTraderStateChangedEventHandle(M_autoTrader_OnStateChanged), workType, state);
                return;
            }

            ShowRunButton();
        }
Exemplo n.º 3
0
        /// <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);
                }
            }
        }
Exemplo n.º 4
0
        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();
 }
Exemplo n.º 6
0
 private void AutoTrader_OnStateChanged(AutoTraderWorkType workType, AutoTraderState state)
 {
     SafeFireAutoTraderStateChanged(workType, state);
 }