示例#1
0
        public void SetInputParam(StInputParam param)
        {
            this.inParam = param;

            // 设置超时时间
            /// MSDN: http://msdn.microsoft.com/zh-cn/library/system.timers.timer.interval(v=vs.100).aspx
            /// 如果将 Enabled 和 AutoReset 都设置为 false,并且以前已启用了计时器,则设置 Interval 属性会引发一次 Elapsed 事件,
            /// 就好象将 Enabled 属性设置为 true 一样。 若要设置间隔而不引发事件,可以暂时将 AutoReset 属性设置为 true。
            timer1.AutoReset = timer2.AutoReset = true;
            timer1.Interval  = timer2.Interval = param.InWaitTime;
            timer1.AutoReset = timer2.AutoReset = false;

            // 设置成交明细所对应的代码
            TradeDetail_IF1BO.Stock = TradeDetail_IF1SC.Stock = param.InIF1;
            TradeDetail_IF2BC.Stock = TradeDetail_IF2SO.Stock = param.InIF2;

            TradeDetail_IF1BO.BS = TradeDetail_IF2BC.BS = PublicDefine.BUY_OR_SELL[0];
            TradeDetail_IF1SC.BS = TradeDetail_IF2SO.BS = PublicDefine.BUY_OR_SELL[1];
            TradeDetail_IF1BO.OC = TradeDetail_IF2SO.OC = PublicDefine.OPEN_OR_CLOSE[0];
            TradeDetail_IF1SC.OC = TradeDetail_IF2BC.OC = PublicDefine.OPEN_OR_CLOSE[1];
        }
示例#2
0
        private void btn_Start_Click(object sender, EventArgs e)
        {
            if (!PassCheckUIInput())
            {
                return;
            }

            // 下单类型参数
            CTPMgr.CtpTradeClient.HedgeFlagType = rB_S.Checked ? EnumHedgeFlagType.Speculation : (rB_A.Checked ? EnumHedgeFlagType.Arbitrage : EnumHedgeFlagType.Hedge);

            // 获取用户输入参数
            inInitPosition = (int)nUD_InitPosition.Value;
            inMaxWarnTimes = int.Parse(tB_MaxWarnTimes.Text);

            param                   = new StInputParam();
            param.InEPrice          = double.Parse(tB_EPrice.Text);
            param.InESpread         = double.Parse(tB_ESpread.Text);
            param.InMaxTN           = int.Parse(tB_MaxTN.Text);
            param.InMaxOpenN        = int.Parse(tB_MaxOpenN.Text);
            param.InWaitTime        = int.Parse(tB_QueryWaitTime.Text);
            param.InMaxP            = (int)nUD_MaxPosition.Value;
            param.InVolUnit         = (int)nUD_HedgeVol.Value;
            param.InKC              = double.Parse(tB_OpenSpread.Text);
            param.InPC              = double.Parse(tB_CloseSpread.Text);
            param.InReorderAppend   = (double)nUD_ReorderAppendPt.Value;
            param.InMaxReroderTimes = (int)nUD_ReorderTimes.Value;

            if (param.InMaxP >= 0)
            {// 正向开仓
                param.InIF1       = cB_IF1.Text;
                param.InIF2       = cB_IF2.Text;
                param.InIF1Append = (double)nUD_IF1.Value;
                param.InIF2Append = (double)nUD_IF2.Value;
            }
            else
            {// 反向开仓
                param.InMaxP      = -1 * param.InMaxP;
                param.InIF2       = cB_IF1.Text;
                param.InIF1       = cB_IF2.Text;
                param.InIF2Append = (double)nUD_IF1.Value;
                param.InIF1Append = (double)nUD_IF2.Value;
            }

            // 设置spread trade的输入参数
            spreadTrader.SetInputParam(param);

            // 只接受第一次开始时输入的初始仓位参数
            if (isFirstTimeClickStartBtn)
            {
                isFirstTimeClickStartBtn = false;
                spreadTrader.SetCurrentPosition(inInitPosition);
            }

            // 冻结不允许改动的控件
            foreach (var c in noResetCtrls)
            {
                c.Enabled = false;
            }

            // 禁止再次点击开始,但可以停止
            ResetControls(false);

            // 开始价差交易
            spreadTrader.Enable(true);

            // 检查风控指标
            //timer.Start();
            //OnTimer(null, null);
        }