public ExecutionStrategy(StrategyOperator op, params Rule[] rs) { rules = new List <Rule>(); if (rules != null) { rules.AddRange(rs); } Operator = op; next = null; }
private void writeStrategyOperator(StrategyOperator op) { switch (op) { case StrategyOperator.SEQUENCE: owt.Write("\"sequence\""); break; case StrategyOperator.ARBITRARY: owt.Write("\"aribtrary\""); break; case StrategyOperator.MAX: owt.Write("\"max\""); break; case StrategyOperator.CHOICE: owt.Write("\"choice\""); break; } }
/// <summary> /// 运行策略,并且将策略运行结果绑定到该 /// </summary> public void Run() { Strategy_MultiMa strategy = new Strategy_MultiMa(); strategy.MainKLinePeriod = this.compChart.Controller.CompData.KlinePeriod; this.strategy = strategy; if (this.strategy == null) { return; } StrategyReferedPeriods referedPeriods = this.strategy.GetReferedPeriods(); if (referedPeriods == null) { referedPeriods = new StrategyReferedPeriods(); KLinePeriod currentPeriod = this.compChart.Controller.CompData.KlinePeriod; referedPeriods.UsedKLinePeriods.Add(currentPeriod); } KLinePeriod mainPeriod = referedPeriods.MainPeriod; StrategyForwardPeriod forwardPeriod = new StrategyForwardPeriod(referedPeriods.UseTickData, mainPeriod); IStrategyExecutorFactory_History executorFactory = StrategyCenter.Default.GetStrategyExecutorFactory_History(); IDataPackage_Code dataPackage = this.compChart.Controller.CurrentNavigater.DataPackage; Dictionary <KLinePeriod, int> dic_KLinePeriod_StartPos = new Dictionary <KLinePeriod, int>(); for (int i = 0; i < referedPeriods.UsedKLinePeriods.Count; i++) { KLinePeriod period = referedPeriods.UsedKLinePeriods[i]; dic_KLinePeriod_StartPos.Add(period, dataPackage.GetKLineData(period).BarPos); } drawOperator = new StrategyDrawOperator(this.compChart.Drawer, dic_KLinePeriod_StartPos, 0, 0); IStrategyOperator strategyOperator = new StrategyOperator(drawOperator); IStrategyExecutor executor = executorFactory.CreateExecutorByDataPackage(dataPackage, referedPeriods, forwardPeriod, strategyOperator); executor.SetStrategy(strategy); executor.Run(); }
public ExecutionStrategyHelper(StrategyOperator op) : this() { Operator = op; }