Пример #1
0
        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));
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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();
        }
Пример #5
0
 public string GetTradeSignalXml(int signalCatId, string ticker, BarSettings timeframe)
 {
     return(GetTradeSignalXml(new SignalStorageKey
     {
         categoryId = signalCatId, ticker = ticker, timeframe = timeframe
     }));
 }
Пример #6
0
        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);
        }
Пример #7
0
        /// <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>();
        }
Пример #8
0
        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);
            }
        }
Пример #9
0
        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()));
        }
Пример #10
0
 public ForecastQueueItem(string forecastXml, int categoryId, string ticker, BarSettings timeframe)
 {
     this.forecastXml = forecastXml;
     this.categoryId  = categoryId;
     this.ticker      = ticker;
     this.timeframe   = timeframe;
 }
Пример #11
0
 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));
        }
Пример #13
0
        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));
            }
        }
Пример #14
0
        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);
        }
Пример #15
0
        /// <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);
        }
Пример #16
0
 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;
 }
Пример #17
0
        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);
                }
            }
        }
Пример #18
0
 public DiversByTimeframe(DiversByTimeframe div)
 {
     timeframe = new BarSettings(div.timeframe);
     foreach (var ind in div.IndexList)
     {
         var cpy = new IndexDivergencyInfo(ind);
         indexList.Add(cpy);
     }
 }
Пример #19
0
        //[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);
        }
Пример #20
0
    private static int Bar(CommandContext context, BarSettings settings)
    {
        for (var index = 0; index < settings.Count; index++)
        {
            AnsiConsole.WriteLine("Bar");
        }

        return(0);
    }
Пример #21
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);
        }
Пример #22
0
        public void Setup()
        {
            var barSettings = new BarSettings {
                Intervals = new List <int> {
                    60
                }, Title = "H1"
            };

            packer = new CandlePacker(barSettings);
        }
Пример #23
0
 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);
 }
Пример #24
0
        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);
        }
Пример #25
0
        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()));
        }
Пример #26
0
        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);
        }
Пример #27
0
 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"));
 }
Пример #28
0
 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> >();
 }
Пример #29
0
        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);
        }
Пример #30
0
        /// <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));
        }