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]; }
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); }