Добрый день. Ваша библиотека сама по себе мощный инструмент. спасибо за ее создание и обнародование. Однако при построении робота я столкнулся с вопросом расчета индикаторов. Более менее простые не составляет труда рассчитать самостоятельно в программе (всяческие средние и каналы). Посложнее - Параболик или Ишимоку - тоже в побщем- то можно. Но возникает такая проблема - расчетные значения отличаются от полученных автоматически в том же Квике. Этот эффект видимо появляется потому что значения сложных индикаторов сильно зависят от метода их расчета (например от выбора начальной точки) Поскольку я сейчкас переписываю роботов с 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