private void RunTest(TradeParams tradeParams, Configurator configurator, TradesPrinter printer) { tradeParams.Validate(); var advisor = new TradeAdvisor(configurator.Repository.Days.First().FiveMins); var robot = new RobotContext(tradeParams, configurator.Factory, advisor); var results = configurator.GetTradeResults(); //foreach (var day in repository.Days) foreach (var day in configurator.Repository.Days.Skip(1)) //TODO перебирать параметры по абсолютному значению, а затем искать регрессию одних на другие { foreach (var candle in day.FiveMins) { var dealEvent = robot.Process(candle) as DealEvent; if (dealEvent != null) { results.AddDeal(dealEvent.Deal); } } var ev = robot.StopTrading() as DealEvent; if (ev != null) { results.AddDeal(ev.Deal); } //printer.PrintDepoWithParamsName(tradeParams, results); Assert.That(results.DealsAreClosed); robot.Reset(); } //File.WriteAllLines("out.txt", results.GetDepositSizes().Select(s => (s - 30000).ToString())); printer.AddRow(tradeParams, results); }
public void AddRow(TradeParams parameters, TradesResult result) { var row = parameters.GetTableRow(paramsFieldNames) .Concat(result.GetTableRow(resultsFieldNames)) .ToList(); table.Add(row); }
public RobotContext(TradeParams tradeParams, StatesFactory factory, TradeAdvisor advisor, List<Candle> history = null) { Logger.Debug("I'm started"); candles = history ?? new List<Candle>(); //IMPROVE историю хранить не нужно (отправлять за историей к Advisor) Advisor = advisor; Factory = factory; StopLossSize = tradeParams.StopLoss; TrailingStopLoss = (int) (StopLossSize * tradeParams.TrailingStopPercent); BreakevenSize = (int) (StopLossSize * tradeParams.BreakevenPercent); PegtopSize = tradeParams.PegtopSize; EndTime = tradeParams.EndTime; CurrentState = DefaultState; ExtremumsRepository = ((SearchState) CurrentState).ExtremumsRepo; }
private string GetFilenameByParams(TradeParams parameters) { string filename = parameters.GetTableRow(paramsFieldNames).Aggregate("", (b, name) => b + name + "_"); return filename.Remove(filename.Length - 1) + ".txt"; }
public void PrintDepoWithParamsName(TradeParams parameters, TradesResult result) { string filename = GetFilenameByParams(parameters); File.WriteAllLines(Path.Combine(outputPath, depoPrintsDir, filename), result.GetDepositSizes().Select(s => s.ToString())); }
private void InitDefaultParams(XElement paramsNode) { var tradeParams = new TradeParams(); foreach (var param in paramsNode.Descendants()) { var name = param.Name.LocalName; if (!TradeParamsMapper.HasField(name)) throw new SettingsPropertyNotFoundException($"Can't found property {name}"); TradeParamsMapper.SetValue(name, tradeParams, param.Attribute("Size")); } loopsExecutor = new LoopsGenerator<TradeParams>(tradeParams); }
private TradeParams GetParams(XElement parameters) { var tradeParams = new TradeParams(); foreach (var param in parameters.Descendants()) { var name = param.Name.LocalName; if (!TradeParamsMapper.HasField(name)) throw new SettingsPropertyNotFoundException($"Can't found property {name}"); TradeParamsMapper.SetValue(name, tradeParams, param.Attribute("Size")); } return tradeParams; }