Здравствуйте. Ситуация такая: в роботе получаю значения 20и последних свечек таким образом arg.Value = TimeSpan.FromMinutes(TimeFrame); secur = Securities.FirstOrDefault(secc =\u003e secc.Code == this.sec.Text); _candleManager.RegisterTimeFrameCandles(secur, (TimeSpan)arg.Value); var candles = _candleManager.GetTimeFrameCandles(secur, TimeSpan.FromMinutes(TimeFrame), 20); Сначала они считались грамотно и верно, однако сегодня какая то неожиданная ошибка: последние 3 свечки не соответствуют действительности, т.е. там цена какая то не та и время свечи указано которого на текущий момент еще не было. Из за чего такое может быть?
Релиз -http://stockmarketdotnet.blogspot.com/2010/03/stock-18.html
вот в мануале вычитал что \"Менеджер создания свечек. По торговому шлюзу ITrader подключается к событию NewTrades, и на основе полученных данных формирует свечки по заданным критериям. \" то есть свечки строятся по сделкам, я правильно понимаю? А есть возможнолсть строить свечки по Bid/Ask из таблицы Инструменты?
Строчка из хелпа var candles = _candleManager.GetTimeFrameCandles(lkoh, TimeSpan.FromMinutes(5), 100); переработанная в VB : Svechi = CandleMan.GetTimeFrameCandles(Instrument, TimeSpan.FromMinutes(5), 10) всегда возвращает массив нулевой длины. Параметр Instrument задан правильно. Насколько я понимаю для прошлых свечей не нужно регистрировать RegisterTimeFrameCandles и обрабатывать событие NewCandles? Тогда не пойму в чем дело :( ... Кстати метод GetTimeFrameCandle(Instrument, TimeSpan.FromMinutes(5), Trader.MarketTime) тоже возвращает значение Nothing.
Я ожидал захода в OnProcess c окончанием свечи,началом новой свечи. На деле при тайм-фрейме в 5 минут идет запоздание вызова OnProcess на время более минуты. Новая свеча при этом рисуется вовремя.
Добрый день. Ваша библиотека сама по себе мощный инструмент. спасибо за ее создание и обнародование. Однако при построении робота я столкнулся с вопросом расчета индикаторов. Более менее простые не составляет труда рассчитать самостоятельно в программе (всяческие средние и каналы). Посложнее - Параболик или Ишимоку - тоже в побщем- то можно. Но возникает такая проблема - расчетные значения отличаются от полученных автоматически в том же Квике. Этот эффект видимо появляется потому что значения сложных индикаторов сильно зависят от метода их расчета (например от выбора начальной точки) Поскольку я сейчкас переписываю роботов с Qpile (внутреннего языка Квика) под .NET, это несколько напрягает: результаты работы с квиковскими индикаторами вполне удовлетворяли. Есть ли возможность получить значения индикаторов из Квика (кроме тормозной передачи через текстовый файл)? Если нет - что посоветуете?
делаю так var order = base.CreateOrder(direction, base.Security.GetMarketPrice(direction, MarketPriceTypes.Following), base.Volume); // регистрируем ее (обычным способом лимитированной заявкой) //base.Trader.RegisterOrder(order); // добавляем зарегистрированную заявку в стратегию base.AddOrder(order); // регистрируем на котирование var strategy = new MarketQuotingStrategy(base.Trader, order, base.Interval, false, MarketPriceTypes.Following, new Unit()); strategy.Start(); base.ChildStrategies.Add(strategy); вылетает это 2010-03-18T14:10:16.8750000+03:00 None =\u003e Quoting new order Buy price 1720,99 volume 1 2010-03-18T14:10:17.9531250+03:00 Error =\u003e System.ArgumentException: An item with the same key has already been added. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) at Ecng.Collections.SynchronizedDictionary`2.Add(K key, V value) at Ecng.Trading.Algo.BasePositionManager.RegisterPosition(Order order) at Ecng.Trading.Algo.StrategyPositionManager.OnNewOrder(Order order) at System.Action`1.Invoke(T obj) at Ecng.Common.DelegateHelper.SafeInvoke(Action`1 handler, T arg) at Ecng.Trading.Algo.Strategy.AddOrder(Order order) at Ecng.Trading.Algo.Strategy. (Order ) at System.Action`1.Invoke(T obj) at Ecng.Common.DelegateHelper.SafeInvoke(Action`1 handler, T arg) at Ecng.Trading.Algo.Strategy.AddOrder(Order order) at Ecng.Trading.Algo.QuotingStrategy.OnProcess() at Ecng.Trading.Algo.Strategy.Process() т.е. уже есть, надо убрать выражение base.AddOrder(order); а без него было так https://docs.google.com/leaf?id=0Bw2gQDvf41vtOWIzZjIwM2EtMjI2ZS00ZDcwLTg0NjktZjRjN2VjMWJiNzIy\u0026sort=name\u0026layout=list\u0026num=50 бежал за рынком почти четыре рубля, а проскальзывание равно нулю. Значит надо самому корректировать через base.SlippageManager.RegisterOrder(myOrder, newEstimatedPrice); ? вывод проскальзывания делаю так private void OnStrategyPropertyChanged(object sender, PropertyChangedEventArgs e) { this.Sync(() =\u003e { this.Status.Content = _strategy.ProcessState; //this.PnL.Content = _strategy.PnL; //this.Slippage.Content = _strategy.Slippage; this.PnL.Content = _strategy.PnLManager.AbsoluteValue; this.Slippage.Content = _strategy.SlippageManager.Slippage; this.Position.Content = _strategy.PositionManager.Position; }); }
http://stockmarketdotnet.blogspot.com/2010/02/s-17.html Кто уже скачал - обновите. В документацию вкралась досадная ошибка в настройками инструментов. Обратите особое внимание на расположение полей в инструментах. Что касается индексов - теперь должно работать. Поддержка индексов сейчас практически на нуле, но получить из через ДДЕ теперь возможно.
Здесь все написал -http://stockmarketdotnet.blogspot.com/2010/02/s-17.html Комментарии по версии сюда, по новости - в блог.
Собственно, наконец-то, выпустилhttp://stockmarketdotnet.blogspot.com/2010/01/stock-16.html