Esempio n. 1
0
        private static ITradeMode GetTradeMode()
        {
            ITradeMode result = null;

            SettingsRepository repo      = ServiceLocator.Current.GetInstance <SettingsRepository>();
            WebApiClient       apiClient = ServiceLocator.Current.GetInstance <WebApiClient>();

            var list = repo.GetAll().Result;

            Settings settings = list.First();

            if (settings.Mode == "Test")
            {
                result = new TestMode(apiClient, repo);
            }

            if (settings.Mode == "Work")
            {
                result = new WorkMode(apiClient);
            }

            if (settings.Mode == "Demo")
            {
                result = new DemoMode(apiClient);
            }

            return(result);
        }
Esempio n. 2
0
        public TradeModel(TradeSessionRepository TradeSessionRepository,
                          CandleRepository CandleRepository,
                          OrderRepository OrderRepository,
                          PositionRepository PositionRepository,
                          DealRepository DealRepository,
                          WebApiClient client,
                          ITradeMode mode, Mode modeProperties, object token)
        {
            _token = token;
            _tradeSessionRepository = TradeSessionRepository;
            _candleRepository       = CandleRepository;
            _orderRepository        = OrderRepository;
            _positionRepository     = PositionRepository;
            _dealRepository         = DealRepository;
            _apiClient = client;

            _mode           = mode;
            _modeProperties = modeProperties;

            _candles = new Dictionary <string, IDictionary <string, IList <ICandle> > >();

            Messenger.Default.Register <InitTradeModelMessage>(this, _token, async(msg) =>
            {
                var temp_sessions = await _tradeSessionRepository.GetAll();
                _sessions         = temp_sessions.OrderBy(t => t.Date).ToList();

                _mode.SetAction("init", () =>
                {
                    foreach (string sec in msg.securities)
                    {
                        _candles[sec] = new Dictionary <string, IList <ICandle> >();
                        foreach (string frame in msg.frames)
                        {
                            string res = InitCandles(sec, frame).Result;
                        }
                    }
                });

                _mode.SetAction("initEmpty", () =>
                {
                    foreach (string sec in msg.securities)
                    {
                        _candles[sec] = new Dictionary <string, IList <ICandle> >();
                        foreach (string frame in msg.frames)
                        {
                            _candles[sec][frame] = new List <ICandle>();
                        }
                    }
                });

                _mode.SetAction("update", () =>
                {
                    IEnumerable <Candle> candles = _candleRepository.GetAll().Result;

                    _positionlist = _positionRepository.GetAll().Result;

                    foreach (string sec in msg.securities)
                    {
                        var tempData = candles.Where(c => c.Code == sec).OrderBy(c => c.begin);
                        UpdateCadles(sec, tempData, msg.frames);
                    }

                    this._positions = GetPositions(_positionlist, msg.securities);
                });

                _mode.SetAction("sendToRobo", () =>
                {
                    Messenger.Default.Send <GetCandlesResponseMessage>(new GetCandlesResponseMessage()
                    {
                        DateTime  = mode.GetDate(),
                        Сandles   = _candles,
                        Positions = _positions
                    }, _token);
                });

                _mode.SetAction("showData", () =>
                {
                    _dealRepository.GetAll().ContinueWith(t =>
                    {
                        Messenger.Default.Send <ShowDataMessage>(new ShowDataMessage()
                        {
                            Сandles   = CopyCandles(_candles),
                            Deals     = t.Result,
                            Positions = _positionlist
                        });
                    });
                });

                mode.Start();
            });

            Messenger.Default.Register <CreateOrderMessage>(this, msg =>
            {
                Order order = new Order()
                {
                    Code           = msg.Code,
                    OrderOperation = msg.OrderOperation,
                    Account        = _modeProperties.Account,
                    Price          = msg.Price,
                    Count          = msg.Count,
                    Class          = _modeProperties.Class,
                    Client         = _modeProperties.Client,
                    Comment        = _modeProperties.Client,
                    Profit         = msg.Profit,
                    StopLoss       = msg.StopLoss
                };

                string result = _orderRepository.Create(order).Result;
            });

            //Messenger.Default.Register<GetCandlesMessage>(this, (msg) =>
            //{
            //    Messenger.Default.Send<GetCandlesResponseMessage>(new GetCandlesResponseMessage()
            //    {
            //        Сandles = _candles
            //    });
            //});

            Messenger.Default.Register <ClosePositionMessage>(this, msg =>
            {
                string result = _apiClient.GetData(string.Format("{0}admin/ClosePosition?sec={1}", this.ServerURL, msg.Code)).Result;
            });
        }