← 返回

RealTimeEmulationTrader

Добрый день. Прошу помочь со следующим вопросом.

Итак, создаю трейдера RealTimeEmulationTrader

_trader = new RealTimeEmulationTrader<QuikTrader>(new QuikTrader(QuikTerminal.GetDefaultPath()));

Портфель и инструменты забираются из квика, в реальном портфеле 0 рублей (тестируем стратегию в условиях приближенных к боевым). Как можно добавить в RealTimeEmulationTrader новый портфель, со значением допустим в 1000000?

При создании стратегии,допустим

_strategy = new Strategy { Connector = _trader, Security = (Security)CbSecurities.SelectedItem, Portfolio = new Portfolio(){Name = "Test_account", BeginValue = 1000000, CurrentValue = 1000000}, Volume = 1 };

свойство нового портфеля не работает, все равно при работе стратегии забирает данные портфеля из трейдера. А так как на счете 0 рублей, при регистрации заявки пишет нехватка денежных средств. Прошу помочь, добрым людям, два дня бьюсь на решением проблемы. Спасибо! P.S. версия библиотеки S# 4.2.2.6

本主题对您有帮助吗?

分享主题

评论 (5)

登录创建账户, 登录或注册以发表评论

esper
esper

В примере SampleRealTimeTesting показано как создать портфель для тестирования.

FireSpirit
FireSpirit 作者

Спасибо за совет, но не работает и данная реализация. Код добавил следующий: var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000, CurrentValue = 1000000 }; _trader = new RealTimeEmulationTrader<QuikTrader>(new QuikTrader(QuikTerminal.GetDefaultPath())); _trader.TransactionAdapter.SendInMessage(portfolio.ToMessage()); _trader.TransactionAdapter.SendInMessage(new PortfolioChangeMessage .Add(PositionChangeTypes.BeginValue, portfolio.BeginValue)); _trader.TransactionAdapter.SendInMessage(new PortfolioChangeMessage .Add(PositionChangeTypes.CurrentValue, portfolio.CurrentValue));

Также при выборе данного портфеля при создании стратегии, денег в нем по нулям.

FireSpirit
FireSpirit 作者

Млин, не работает до сих пор... Чего ж делать то)

Rebelion
Rebelion

FireSpirit: Млин, не работает до сих пор... Чего ж делать то)

                            realTimeTradeEmulation.RegisterPortfolio(instrument.portfolio);

                            realTimeTradeEmulation.TransactionAdapter.SendInMessage(instrument.portfolio.ToMessage());
                            realTimeTradeEmulation.TransactionAdapter.SendInMessage(new PortfolioChangeMessage
                            {
                                PortfolioName = instrument.portfolio.Name
                            }.Add(PositionChangeTypes.BeginValue, instrument.portfolio.BeginValue));

У меня с этим кодом всё замечательно работает на эмуляшке под квик.

FireSpirit
FireSpirit 作者

Спасибо rebelion. действительно метод _trader.RegisterPortfolio(_portfolio) был необходим!!!