public IStrategyExecutor CreateExecutor(IDataPackage_Code dataPackage, IStrategy strategy, KLinePeriod period) { StrategyReferedPeriods referedPeriods = new StrategyReferedPeriods(); referedPeriods.UsedKLinePeriods.Add(period); StrategyForwardPeriod forwardPeriod = new StrategyForwardPeriod(false, period); return(StrategyCenter.Default.GetStrategyExecutorFactory_History().CreateExecutorByDataPackage(dataPackage, referedPeriods, forwardPeriod, compChart1.StrategyHelper)); }
/// <summary> /// 运行策略,并且将策略运行结果绑定到该 /// </summary> public void Run() { if (this.strategyData == null || this.strategyData.Strategy == null) { return; } IStrategy strategy = this.strategyData.Strategy; StrategyReferedPeriods referedPeriods = strategy.GetReferedPeriods(); if (referedPeriods == null) { referedPeriods = new StrategyReferedPeriods(); KLinePeriod currentPeriod = this.compChart.Controller.ChartComponentData.KlinePeriod; referedPeriods.UsedKLinePeriods.Add(currentPeriod); if (strategy is StrategyAbstract) { ((StrategyAbstract)strategy).MainKLinePeriod = currentPeriod; } } KLinePeriod mainPeriod = referedPeriods.MainPeriod; StrategyForwardPeriod forwardPeriod = new StrategyForwardPeriod(referedPeriods.UseTickData, mainPeriod); IStrategyExecutorFactory executorFactory = StrategyCenter.Default.GetStrategyExecutorFactory(); 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 ChartComponentStrategyDrawer(this.compChart.Drawer, dic_KLinePeriod_StartPos, 0, 0); StrategyArguments_DataPackage strategyDataPackage = new StrategyArguments_DataPackage(dataPackage, referedPeriods, forwardPeriod);; StrategyHelper strategyOperator = new StrategyHelper(); strategyOperator.Drawer = drawOperator; strategyExecutor = executorFactory.CreateExecutor_History(strategyDataPackage); strategyExecutor.Strategy = strategy; //strategyExecutor.Run(); //strategyExecutor.ExecuteFinished += StrategyExecutor_ExecuteFinished; strategyExecutor.Execute(); }
/// <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(); }
private void RunStrategy(IStrategy strategy) { IDataPackage_Code dataPackage = this.compChart1.CompChartData.DataPackage; StrategyReferedPeriods referedPeriods = new StrategyReferedPeriods(); //compChart1.KlinePeriod KLinePeriod period = compChart1.GetKLinePeriod(); referedPeriods.UsedKLinePeriods.Add(period); //referedPeriods.UsedKLinePeriods.Add(this.n) StrategyForwardPeriod forwardPeriod = new StrategyForwardPeriod(false, period); IStrategyExecutor strategyRunner = StrategyCenter.Default.GetStrategyExecutorFactory_History().CreateExecutorByDataPackage(dataPackage, referedPeriods, forwardPeriod, compChart1.StrategyHelper); //compChart1.StrategyHelper.DrawHelper.ClearShapes(); //compChart1.CurrentPriceRectDrawer.cl //compChart1.CurrentPriceRectDrawer.ClearPriceShapes(); if (strategy is StrategyAbstract) { ((StrategyAbstract)strategy).MainKLinePeriod = period; } strategyRunner.SetStrategy(strategy); strategyRunner.Run(); compChart1.Refresh(); }