public void Inputs_open_short_position() { BarSettings barSettings = new BarSettings(this.strategyHeader, "RTS-9.13_FT", 60, 10); this.tradingData.Get <ICollection <BarSettings> >().Add(barSettings); SMASettings smaSettings = new SMASettings(this.strategyHeader, 5, 10); this.tradingData.Get <ICollection <SMASettings> >().Add(smaSettings); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 0, 0), 120, 125, 119, 124, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 5, 0), 119, 124, 118, 123, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 10, 0), 118, 123, 117, 122, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 15, 0), 117, 122, 116, 121, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 20, 0), 116, 121, 115, 120, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 25, 0), 115, 110, 114, 119, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 30, 0), 114, 119, 113, 118, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 35, 0), 113, 118, 112, 117, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 40, 0), 112, 117, 111, 116, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 45, 0), 111, 116, 110, 115, 10)); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar("RTS-9.13_FT", barSettings.Interval, new DateTime(2013, 8, 8, 10, 50, 0), 110, 115, 109, 114, 10)); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick("RTS-9.13_FT", new DateTime(2013, 8, 8, 10, 50, 0), 114, 10, TradeAction.Sell)); Assert.AreEqual(1, this.signalQueue.Count); Signal signal = this.signalQueue.Dequeue(); Assert.AreEqual(this.strategyHeader, signal.Strategy); Assert.AreEqual(this.strategyHeader.Id, signal.StrategyId); Assert.AreEqual(TradeAction.Sell, signal.TradeAction); Assert.AreEqual(OrderType.Limit, signal.OrderType); Assert.AreEqual(114, signal.Price); Assert.AreEqual(114, signal.Limit); Assert.AreEqual(0, signal.Stop); }
private string GetCommentForChart(string ticker, BarSettings timeframe, List <BaseRobot> robots) { var robotStates = robots.Where(r => r.Graphics.Any(g => g.a == ticker && g.b == timeframe)).Select(s => "Робот \"" + s.GetUniqueName() + "\"\n" + s.ReportState()); return(string.Join("\n\n", robotStates)); }
public static bool PutForecast(int categoryId, string ticker, BarSettings timeframe, string xmlForecast) { var wc = new WebClient(); if (!string.IsNullOrEmpty(username)) { wc.Credentials = new NetworkCredential(username, pass); } var requestParams = new NameValueCollection { { TradeSignalXml.ReqPtrForecastCategory, categoryId.ToString() }, { TradeSignalXml.ReqPtrForecastTicker, ticker }, { TradeSignalXml.ReqPtrForecastTimeframe, timeframe.ToString(TradeSignalXml.TimeframeSeparator) } }; wc.QueryString = requestParams; try { var responseBytes = wc.UploadData(url, "PUT", TradeSignalXml.DefaultEncoding.GetBytes(xmlForecast)); var respString = TradeSignalXml.DefaultEncoding.GetString(responseBytes); return(respString == "OK"); } catch (Exception ex) { Logger.Error("Ошибка в PutForecast()", ex); return(false); } }
public override void Initialize(BacktestServerProxy.RobotContext grobotContext, CurrentProtectedContext xprotectedContext) { base.Initialize(grobotContext, xprotectedContext); // проверка настроек графиков if (Graphics.Count == 0) { Logger.DebugFormat("MultiIndexRobot: настройки графиков не заданы"); return; } if (Graphics.Count > 1) { Logger.DebugFormat("MultiIndexRobot: настройки графиков должны описывать один тикер / один ТФ"); return; } ticker = Graphics[0].a; timeframe = Graphics[0].b; lastBids = new Dictionary <string, double>(); foreach (var ind in IndexList) { ind.Initialize(); ind.lastIndicies = new List <double>(); ind.indexPeaks = new List <Cortege3 <decimal, int, decimal> >(); } candles = new List <CandleData>(); packer = new CandlePacker(Graphics[0].b); tickerNames = DalSpot.Instance.GetTickerNames(); randomGener = new Random(DateTime.Now.Millisecond); lastBidLists = new Dictionary <string, List <double> >(); // по каждой валютной паре найти макс. количество отсчетов (из формулы индекса) InitLastBidLists(); }
public string GetTradeSignalXml(int signalCatId, string ticker, BarSettings timeframe) { return(GetTradeSignalXml(new SignalStorageKey { categoryId = signalCatId, ticker = ticker, timeframe = timeframe })); }
public void Handlers_Make_Fifteen_Minutes_Bars() { DateTime start = new DateTime(2013, 5, 15, 0, 0, 0); DateTime end = new DateTime(2013, 5, 16, 11, 0, 0); FakeTimeTracker tt = new FakeTimeTracker(start, end); StrategyHeader s = new StrategyHeader(1, "Strategy 2", "BP12345-RF-01", "RTS-12.12_FT", 10); BarSettings settings = new BarSettings(s, "RTS-12.12_FT", 900, 10); MakeBarsOnTick updateBars = new MakeBarsOnTick(settings, tt, this.tradingData, new NullLogger()); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar { Symbol = "RTS-12.12_FT", DateTime = start, Open = 150000, High = 160000, Low = 140000, Close = 145000, Volume = 100 }); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar { Symbol = "RTS-12.12_FT", DateTime = end, Open = 150000, High = 160000, Low = 140000, Close = 145000, Volume = 100 }); Assert.AreEqual(2, this.tradingData.Get <ObservableCollection <Bar> >().Count); for (int i = 0; i < settings.Interval * 4; i++) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = end.AddSeconds(i), Symbol = "RTS-12.12_FT", Price = 150000 + i, TradeAction = TradeAction.Buy, Volume = 100 }); if (i == 1000) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = end.AddSeconds(1000), Symbol = "RTS-12.12_FT", Price = 149000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = end.AddSeconds(2000), Symbol = "RTS-12.12_FT", Price = 154500, TradeAction = TradeAction.Buy, Volume = 100 }); } tt.IncrementStopDate(1); } this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = end.AddSeconds(-1), Symbol = "RTS-12.12_FT", Price = 148000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = end.AddSeconds(3600), Symbol = "RTS-12.12_FT", Price = 155500, TradeAction = TradeAction.Buy, Volume = 100 }); Assert.AreEqual(6, this.tradingData.Get <ObservableCollection <Bar> >().Count); Bar bar = this.tradingData.Get <ObservableCollection <Bar> >().Last(); Assert.AreEqual("RTS-12.12_FT", this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).Symbol); Assert.AreEqual(end.AddHours(1), this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).DateTime); Assert.AreEqual(152700, this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).Low); Assert.AreEqual(153599, this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).High); Assert.AreEqual(152700, this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).Open); Assert.AreEqual(153599, this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).Close); Assert.AreEqual(90000, this.tradingData.Get <ObservableCollection <Bar> >().ElementAt(5).Volume); }
/// <summary> /// Обработчик появления нового бара /// </summary> /// <param name="item">Bar</param> //public override void OnItemAdded(Bar item) public void OnItemAdded(Bar item) { //bar = item; if (item.Symbol != this.strategyHeader.Symbol) { return; } bs = this.tradingData.Get <IEnumerable <BarSettings> >().SingleOrDefault(s => s.StrategyId == this.strategyHeader.Id); if (bs == null) { throw new System.Exception("BarSettings bs == null"); //return; } //barsSet <= bars //IEnumerable<Bar> bars = this.tradingData.Get<IEnumerable<Bar>>().GetNewestBars(bs.Symbol, bs.Interval); IEnumerable <Bar> barsSet = this.tradingData.Get <IEnumerable <Bar> >().GetNewestBars(bs.Symbol, bs.Interval, bs.Period + 1); //int barsCount = bars.Count(); int barsCount = this.tradingData.Get <IEnumerable <Bar> >().GetNewestBars(bs.Symbol, bs.Interval).Count(); if (barsSet == null || barsSet.Count() == 0) { return; } IEnumerable <double> close = from b in barsSet select b.Close; IEnumerable <double> volume = from b in barsSet select b.Volume; Close = close.ToList <double>(); Volume = volume.ToList <double>(); }
public bool PutTextMessage(int signalCatId, string message, string ticker, BarSettings timeFrame) { if (!AccountStatus.Instance.isAuthorized) { return(false); } try { var acEvent = new UserEvent { Code = AccountEventCode.TradeSignal, Action = AccountEventAction.DefaultAction, Title = Localizer.GetString("TitleTradeSignal"), Text = string.Join("#-#", ticker, timeFrame, message) }; serverProxyTrade.proxy.SendTradeSignalEvent(CurrentProtectedContext.Instance.MakeProtectedContext(), AccountStatus.Instance.accountID, signalCatId, acEvent); // показать окно - пресигнал отправлен var signalTitle = string.Format(Localizer.GetString("MessageTradeSignalSentFmt"), ticker, BarSettingsStorage.Instance.GetBarSettingsFriendlyName(timeFrame)); AddMessageToStatusPanelSafe(DateTime.Now, signalTitle); return(true); } catch (Exception ex) { Logger.Error("Ошибка в PutTextMessage()", ex); return(false); } }
public ActionResult EditSection(long?sectionId = null) { pageResourceManager.InsertTitlePart("帖吧设置"); if (sectionId.HasValue) { BarSection section = barSectionService.Get(sectionId ?? 0); if (section == null) { return(HttpNotFound()); } ViewData["UserId"] = section.UserId; ViewData["ManagerUserIds"] = barSectionService.GetSectionManagers(sectionId ?? 0).Select(n => n.UserId); ISettingsManager <BarSettings> manager = DIContainer.Resolve <ISettingsManager <BarSettings> >(); BarSettings settings = manager.Get(); ViewData["SectionManagerMaxCount"] = settings.SectionManagerMaxCount; BarSectionEditModel model = section.AsEditModel(); IEnumerable <Category> categories = categoryService.GetCategoriesOfItem(section.SectionId, 0, TenantTypeIds.Instance().BarSection()); if (categories != null && categories.Count() > 0) { model.CategoryId = categories.ElementAt(0).CategoryId; } return(View(model)); } else { ViewData["UserId"] = UserContext.CurrentUser.UserId; } return(View(new BarSectionEditModel())); }
public ForecastQueueItem(string forecastXml, int categoryId, string ticker, BarSettings timeframe) { this.forecastXml = forecastXml; this.categoryId = categoryId; this.ticker = ticker; this.timeframe = timeframe; }
public TradeSignalUpdate(int serviceId, string ticker, BarSettings timeframe, DateTime timeUpdated) { ServiceId = serviceId; Ticker = ticker; Timeframe = timeframe; TimeUpdated = timeUpdated; }
private static TradeSignalUpdate ParseFileName(string fileName) { var parts = fileName.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 3) { return(null); } var catId = parts[0].ToIntSafe(); if (!catId.HasValue) { return(null); } var ticker = parts[1]; if (string.IsNullOrEmpty(ticker)) { return(null); } if (!DalSpot.Instance.GetTickerNames().Contains(ticker)) { return(null); } var timeframe = BarSettings.TryParseString(parts[2]); if (timeframe == null) { return(null); } return(new TradeSignalUpdate(catId.Value, ticker, timeframe, DateTime.Now)); }
private static SignalStorageKey GetKeyFromFilePath(int catId, string filePath) { var fileName = Path.GetFileNameWithoutExtension(filePath); var nameParts = fileName.Split('_'); if (nameParts.Length != 2) { return(default(SignalStorageKey)); } if (string.IsNullOrEmpty(nameParts[0]) || string.IsNullOrEmpty(nameParts[1])) { return(default(SignalStorageKey)); } if (!DalSpot.Instance.GetTickerNames().Contains(nameParts[0])) { return(default(SignalStorageKey)); } var ticker = nameParts[0]; try { var timeframe = new BarSettings(nameParts[1]); return(new SignalStorageKey { categoryId = catId, ticker = ticker, timeframe = timeframe }); } catch { return(default(SignalStorageKey)); } }
public void Handlers_Do_Nothing_If_Bar_With_Same_Date_Exists() { StrategyHeader s = new StrategyHeader(1, "Strategy 1", "BP12345-RF-01", "RTS-12.12_FT", 10); BarSettings barSettings = new BarSettings(s, "RTS-12.12_FT", 3600, 19); DateTime start = new DateTime(2013, 5, 15, 10, 0, 0); FakeTimeTracker tt = new FakeTimeTracker(start, start); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar { Symbol = barSettings.Symbol, DateTime = start.AddHours(1), Open = 100, High = 100, Low = 100, Close = 100, Volume = 100 }); MakeBarsOnTick updateBars = new MakeBarsOnTick(barSettings, tt, this.tradingData, new NullLogger()); Assert.AreEqual(1, this.tradingData.Get <ObservableCollection <Bar> >().Count); for (int i = 0; i < barSettings.Interval; i++) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(i), Symbol = "RTS-12.12_FT", Price = 150000 + i, TradeAction = TradeAction.Buy, Volume = 100 }); if (i == 1000) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(1000), Symbol = "RTS-12.12_FT", Price = 149000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(2000), Symbol = "RTS-12.12_FT", Price = 154500, TradeAction = TradeAction.Buy, Volume = 100 }); } tt.IncrementStopDate(1); } this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(-1), Symbol = "RTS-12.12_FT", Price = 148000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(3600), Symbol = "RTS-12.12_FT", Price = 155500, TradeAction = TradeAction.Buy, Volume = 100 }); IEnumerable <Tick> ticks = this.tradingData.Get <ObservableCollection <Tick> >().Where(t => t.DateTime >= start && t.DateTime < start.AddSeconds(3600)); Assert.AreEqual(3602, ticks.Count()); Assert.AreEqual(1, this.tradingData.Get <ObservableCollection <Bar> >().Count); Bar bar = this.tradingData.Get <ObservableCollection <Bar> >().First(); Assert.AreEqual("RTS-12.12_FT", bar.Symbol); Assert.AreEqual(start.AddHours(1), bar.DateTime); Assert.AreEqual(100, bar.Low); Assert.AreEqual(100, bar.High); Assert.AreEqual(100, bar.Open); Assert.AreEqual(100, bar.Close); Assert.AreEqual(100, bar.Volume); }
/// <summary> /// пример переопределения /// Program.Sample1.SetupStrategy() /// </summary> /// <param name="args"></param> override public void SetupStrategy(string[] args) { Console.WriteLine("BackTest.Converter.SetupStrategy()"); // инициализация обработчиков стратегии //strategySample1 = new Strategy.Sample1(args); //strategyHeader = strategySample1.strategyHeader; //AppSettings.GetStringValue("Symbol") string symbol = System.Configuration.ConfigurationManager.AppSettings["Symbol"]; //Console.WriteLine(String.Format("Sybol: {0}", symbol)); if (symbol == "") { symbol = null; } StrategyHeader strategyHeader = new StrategyHeader(1, "Sample strategyHeader", null, symbol, 1); BarSettings barSettings = new BarSettings( strategyHeader, strategyHeader.Symbol, //null, AppSettings.GetValue <int>("Interval"), AppSettings.GetValue <int>("Period")); TradingData.Instance.Get <ICollection <StrategyHeader> >().Add(strategyHeader); //BarSettings barSettings = new BarSettings(strategyHeader, "RIH4", 3600, 3); //BarSettings barSettings = new BarSettings(strategyHeader, "SPFB.RTS-3.14", 3600, 3); //TradingData.Instance.Get<ICollection<BarSettings>>().Add(barSettings); MakeRangeBarsOnTick updateBarsHandler = new MakeRangeBarsOnTick(barSettings, new TimeTracker(), TradingData.Instance, DefaultLogger.Instance); }
public UpdateBarsOnTick(BarSettings barSettings, ITimeTrackable timeTracker, IDataContext tradingData, ILogger logger) : base(tradingData.Get <ObservableCollection <Tick> >()) { this.tradingData = tradingData; this.barSettings = barSettings; this.timeTracker = timeTracker; this.logger = logger; }
static void Main(string[] args) { TradingData.Instance.Get <ICollection <Strategy> >().Add(strategy); //BarSettings barSettings = new BarSettings(strategy, "RIH4", 3600, 3); BarSettings barSettings = new BarSettings(strategy, "SPFB.RTS-3.14", 3600, 3); TradingData.Instance.Get <ICollection <BarSettings> >().Add(barSettings); BreakOutOnBar breakOnBar = new BreakOutOnBar(strategy, TradingData.Instance, SignalQueue.Instance, DefaultLogger.Instance); StopLossOnBar stopLossOnBar = new StopLossOnBar(strategy, 100, TradingData.Instance, SignalQueue.Instance, DefaultLogger.Instance); TakeProfitOnBar takeProfitOnBar = new TakeProfitOnBar(strategy, 100, TradingData.Instance, SignalQueue.Instance, DefaultLogger.Instance); ITransaction importBars = new ImportBarsTransaction(TradingData.Instance.Get <ObservableCollection <Bar> >(), "bars.txt"); importBars.Execute(); while (true) { try { string command = Console.ReadLine(); if (command == "stop") { break; } if (command == "pnl") { Console.WriteLine(String.Format("Реализованный профит и лосс составляет {0} пунктов", TradingData.Instance.GetProfitAndLossPoints(strategy))); } } catch (System.Runtime.InteropServices.COMException e) { DefaultLogger.Instance.Log(e.Message); } } }
public DiversByTimeframe(DiversByTimeframe div) { timeframe = new BarSettings(div.timeframe); foreach (var ind in div.IndexList) { var cpy = new IndexDivergencyInfo(ind); indexList.Add(cpy); } }
//[TestMethod] public void Handlers_Do_Nothing_When_MarketData_Already_Contains_Bar_For_This_Date() { StrategyHeader s = new StrategyHeader(1, "Strategy 1", "BP12345-RF-01", "RTS-12.12_FT", 10); BarSettings barSettings = new BarSettings(s, "RTS-12.12_FT", 3600, 19); DateTime start = new DateTime(2013, 5, 15, 10, 0, 0); DateTime stop = start.AddSeconds(3600); FakeTimeTracker tt = new FakeTimeTracker(start, start); MakeRangeBarsOnTick updateBars = new MakeRangeBarsOnTick(barSettings, tt, this.tradingData, new NullLogger()); this.tradingData.Get <ObservableCollection <Bar> >().Add(new Bar { Symbol = "RTS-12.12_FT", DateTime = stop, Open = 150000, High = 160000, Low = 140000, Close = 145000, Volume = 100 }); Assert.AreEqual(1, this.tradingData.Get <ObservableCollection <Bar> >().Count); for (int i = 0; i < barSettings.Interval; i++) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(i), Symbol = "RTS-12.12_FT", Price = 150000 + i, TradeAction = TradeAction.Buy, Volume = 100 }); if (i == 1000) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(1000), Symbol = "RTS-12.12_FT", Price = 149000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(2000), Symbol = "RTS-12.12_FT", Price = 154500, TradeAction = TradeAction.Buy, Volume = 100 }); } tt.IncrementStopDate(1); } this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(-1), Symbol = "RTS-12.12_FT", Price = 148000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(3600), Symbol = "RTS-12.12_FT", Price = 155500, TradeAction = TradeAction.Buy, Volume = 100 }); Assert.AreEqual(1, this.tradingData.Get <ObservableCollection <Bar> >().Count); Bar bar = this.tradingData.Get <ObservableCollection <Bar> >().First(); Assert.AreEqual("RTS-12.12_FT", bar.Symbol); Assert.AreEqual(start.AddHours(1), bar.DateTime); Assert.AreEqual(140000, bar.Low); Assert.AreEqual(160000, bar.High); Assert.AreEqual(150000, bar.Open); Assert.AreEqual(145000, bar.Close); Assert.AreEqual(100, bar.Volume); }
private static int Bar(CommandContext context, BarSettings settings) { for (var index = 0; index < settings.Count; index++) { AnsiConsole.WriteLine("Bar"); } return(0); }
public BreakOutOnTick(StrategyHeader strategyHeader, IDataContext tradingData, ObservableQueue <Signal> signalQueue, ILogger logger) : base(tradingData.Get <ObservableCollection <Tick> >()) { this.strategyHeader = strategyHeader; this.tradingData = tradingData; this.signalQueue = signalQueue; this.logger = logger; this.barSettings = this.tradingData.Get <IEnumerable <BarSettings> >().SingleOrDefault(s => s.StrategyId == this.strategyHeader.Id); }
public void Setup() { var barSettings = new BarSettings { Intervals = new List <int> { 60 }, Title = "H1" }; packer = new CandlePacker(barSettings); }
public static void MakeOrderComments(MarketOrder order, BarSettings timeframe, decimal priceA, decimal priceB, int sequence = 1) { order.ExpertComment = RobotNamePreffix; order.Comment = string.Join(";", BarSettingsStorage.Instance.GetBarSettingsFriendlyName(timeframe), priceA.ToStringUniformPriceFormat(), priceB.ToStringUniformPriceFormat(), sequence); }
public void Handlers_Make_First_Bar_For_Hour() { DateTime start = new DateTime(2013, 5, 15, 10, 0, 0); StrategyHeader s = new StrategyHeader(1, "Strategy 1", "BP12345-RF-01", "RTS-12.12_FT", 10); BarSettings barSettings = new BarSettings(s, "RTS-12.12_FT", 3600, 19); barSettings.DateTimeStart = start; FakeTimeTracker tt = new FakeTimeTracker(start, start); MakeTimeBarsOnTick updateBars = new MakeTimeBarsOnTick(barSettings, this.tradingData, new NullLogger()); Assert.AreEqual(0, this.tradingData.Get <ObservableCollection <Bar> >().Count); for (int i = 0; i < barSettings.Interval; i++) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(i), Symbol = "RTS-12.12_FT", Price = 150000 + i, TradeAction = TradeAction.Buy, Volume = 100 }); if (i == 1000) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(1000), Symbol = "RTS-12.12_FT", Price = 149000, TradeAction = TradeAction.Buy, Volume = 100 }); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(2000), Symbol = "RTS-12.12_FT", Price = 154500, TradeAction = TradeAction.Buy, Volume = 100 }); } tt.IncrementStopDate(1); } // приход тика до начала торгов //this.tradingData.Get<ObservableCollection<Tick>>().Add(new Tick { DateTime = start.AddSeconds(-1), Symbol = "RTS-12.12_FT", Price = 148000, TradeAction = TradeAction.Buy, Volume = 100 }); //Assert.AreEqual(0, this.tradingData.Get<ObservableCollection<Bar>>().Count); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick { DateTime = start.AddSeconds(3600), Symbol = "RTS-12.12_FT", Price = 155500, TradeAction = TradeAction.Buy, Volume = 100 }); Assert.AreEqual(1, this.tradingData.Get <ObservableCollection <Bar> >().Count); Bar bar = this.tradingData.Get <ObservableCollection <Bar> >().First(); Assert.AreEqual("RTS-12.12_FT", bar.Symbol); Assert.AreEqual(start.AddHours(1), bar.DateTime); Assert.AreEqual(149000, bar.Low); Assert.AreEqual(154500, bar.High); Assert.AreEqual(150000, bar.Open); Assert.AreEqual(153599, bar.Close); Assert.AreEqual(360200, bar.Volume); }
public ActionResult SectionSettings() { IEnumerable <PointCategory> pointCategories = pointService.GetPointCategories(); ViewData["prePoint"] = pointCategories.FirstOrDefault(n => n.CategoryKey.Equals("ReputationPoints")).CategoryName; ISettingsManager <BarSettings> manager = DIContainer.Resolve <ISettingsManager <BarSettings> >(); BarSettings settings = manager.Get(); return(View(settings.AsEditModel())); }
private static void MakeForecastResponseString(Dictionary <string, string> queryParams, StringBuilder response) { if (!queryParams.ContainsKey(TradeSignalXml.ReqPtrForecastCategory) || string.IsNullOrEmpty(queryParams[TradeSignalXml.ReqPtrForecastCategory])) { response.Append("error:param \"" + TradeSignalXml.ReqPtrForecastCategory + "\" is missed"); return; } if (!queryParams.ContainsKey(TradeSignalXml.ReqPtrForecastTicker) || string.IsNullOrEmpty(queryParams[TradeSignalXml.ReqPtrForecastTicker])) { response.Append("error:param \"" + TradeSignalXml.ReqPtrForecastTicker + "\" is missed"); return; } if (!queryParams.ContainsKey(TradeSignalXml.ReqPtrForecastTimeframe) || string.IsNullOrEmpty(queryParams[TradeSignalXml.ReqPtrForecastTimeframe])) { response.Append("error:param \"" + TradeSignalXml.ReqPtrForecastTimeframe + "\" is missed"); return; } var catId = queryParams[TradeSignalXml.ReqPtrForecastCategory].ToIntSafe(); if (!catId.HasValue) { response.Append("error:param \"" + TradeSignalXml.ReqPtrForecastCategory + "\" should be a number"); return; } var ticker = queryParams[TradeSignalXml.ReqPtrForecastTicker]; if (!DalSpot.Instance.GetTickerNames().Contains(ticker)) { response.Append("error:param \"" + TradeSignalXml.ReqPtrForecastTicker + "\" refers to a wrong symbol"); return; } BarSettings timeframeSets; try { timeframeSets = new BarSettings(queryParams[TradeSignalXml.ReqPtrForecastTimeframe], TradeSignalXml.TimeframeSeparator); } catch { response.Append("error:param \"" + TradeSignalXml.ReqPtrForecastTimeframe + "\" was not recognized"); return; } var respXml = SignalStorage.Instance.GetTradeSignalXml(catId.Value, ticker, timeframeSets); if (string.IsNullOrEmpty(respXml)) { response.Append("error:not found"); return; } response.Append(respXml); }
public void BarSettingsParse() { Assert.AreEqual(BarSettings.TryParseString("30;#60"), new BarSettings { Intervals = new List <int> { 60 }, StartMinute = 30 }); Assert.IsNull(BarSettings.TryParseString("-30#60")); Assert.IsNotNull(BarSettings.TryParseString("5#180;240;180")); }
public SendItemOnBar(BarSettings barSettings, IDataContext tradingData) : base(tradingData.Get <ObservableCollection <Bar> >()) { this.tradingData = tradingData; this.barSettings = barSettings; //подменяем тип бара на RangeBar if (this.barSettings.BarType != Enums.DataModelType.RangeBar) { this.barSettings.BarType = Enums.DataModelType.RangeBar; } this.Handlers = new List <ItemAddedNotification <Bar> >(); }
public void Handlers_make_bar_for_one_strategy_test() { StrategyHeader strategyHeader = new StrategyHeader(2, "Strategy 2", "BP12345-RF-01", "RTS-9.13_FT", 10); this.tradingData.Get <ObservableHashSet <StrategyHeader> >().Add(strategyHeader); DateTime start = new DateTime(2013, 7, 10, 10, 0, 0, 0); BarSettings barSettings = new BarSettings(strategyHeader, strategyHeader.Symbol, 60, 0); barSettings.DateTimeStart = start; this.tradingData.Get <ObservableHashSet <BarSettings> >().Add(barSettings); FakeTimeTracker ftt = new FakeTimeTracker(start, start); MakeTimeBarsOnTick handler = new MakeTimeBarsOnTick(barSettings, this.tradingData, new NullLogger()); Assert.AreEqual(0, this.tradingData.Get <ObservableCollection <Bar> >().Count); // приход тика до начала торгов //this.tradingData.Get<ObservableCollection<Tick>>().Add(new Tick(barSettings.Symbol, start.AddMilliseconds(-500), 150000, 25)); for (int i = 0; i < barSettings.Interval * 2; i++) { this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick(barSettings.Symbol, start.AddMilliseconds(i * 500), 150000, 25)); } ftt.IncrementStopDate(barSettings.Interval); Assert.AreEqual(120, this.tradingData.Get <ObservableCollection <Tick> >().Count); Assert.AreEqual(new DateTime(2013, 7, 10, 10, 0, 59, 500), this.tradingData.Get <ObservableCollection <Tick> >().Last().DateTime); Assert.AreEqual(0, this.tradingData.Get <ObservableCollection <Bar> >().Count); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick(barSettings.Symbol, new DateTime(2013, 7, 10, 10, 0, 59, 600), 151000, 25)); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick(barSettings.Symbol, new DateTime(2013, 7, 10, 10, 0, 59, 700), 149000, 25)); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick(barSettings.Symbol, new DateTime(2013, 7, 10, 10, 0, 59, 800), 150000, 25)); this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick(barSettings.Symbol, new DateTime(2013, 7, 10, 10, 0, 59, 900), 149500, 25)); Assert.AreEqual(0, this.tradingData.Get <ObservableCollection <Bar> >().Count); // Обработчик генерирует новый бар, только когда время пришедшего тика располагается в диапазоне следующего бара. this.tradingData.Get <ObservableCollection <Tick> >().Add(new Tick(barSettings.Symbol, new DateTime(2013, 7, 10, 10, 1, 0, 0), 150000, 25)); Assert.AreEqual(1, this.tradingData.Get <ObservableCollection <Bar> >().Count); Bar bar = this.tradingData.Get <ObservableCollection <Bar> >().Last(); Assert.AreEqual(start.AddSeconds(60), bar.DateTime); Assert.AreEqual(barSettings.Symbol, bar.Symbol); Assert.AreEqual(barSettings.Interval, bar.Interval); Assert.AreEqual(150000, bar.Open); Assert.AreEqual(151000, bar.High); Assert.AreEqual(149000, bar.Low); Assert.AreEqual(149500, bar.Close); Assert.AreEqual(3100, bar.Volume); }
/// <summary> /// Создаем екземпляр построителя баров /// </summary> /// <param name="barSettings"></param> /// <param name="barType"></param> /// <returns></returns> private static BarBuilderRangeBar CreateBarBuilderRangeBar(out BarSettings barSettings, out Common.Enums.DataModelType barType) { string symbol = "SBER"; StrategyHeader strategyHeader = new StrategyHeader(1, "Break out strategyHeader", "BP12345-RF-01", symbol, 10); int interval = 50; barType = Common.Enums.DataModelType.RangeBar; barSettings = new BarSettings(strategyHeader, symbol, interval, 0, barType); return(new BarBuilderRangeBar(barSettings)); }