деление на 0 при котировании
Atom
15.07.2010
ustas


Приветствую!

Уважаемый Михаил.

Пытаюсь работать в стратегии через котирование

если выставляю лимитный Ордер - всё ок

// создаем заявку

           var order = base.CreateOrder(Direct, IsMarket ?

base.Security.GetMarketPrice(Direct, MarketPriceTypes.Opposite):base.Security.GetMarketPrice(Direct, MarketPriceTypes.Following), base.Volume);

           // регистрируем заявку (обычным способом -

лимитированной заявкой)

            base.RegisterOrder(order);

тут всё ок - заявка выставляется

если же выставляю через котирование т.е. так:

           var order = base.CreateOrder(Direct, IsMarket ?

base.Security.GetMarketPrice(Direct, MarketPriceTypes.Opposite):base.Security.GetMarketPrice(Direct, MarketPriceTypes.Following),

           // регистрируем заявку (через котирование)

           var strategy = new MarketQuotingStrategy(base.Trader,

order, IsMarket ? MarketPriceTypes.Opposite : MarketPriceTypes.Following, new Unit());

           strategy.Start();

           base.ChildStrategies.Add(strategy);

получаю ошибку:

System.DivideByZeroException: Попытка деления на нуль.

в System.Decimal.FCallDivide(Decimal& result, Decimal d1, Decimal d2)

в System.Decimal.Remainder(Decimal d1, Decimal d2)

в System.Decimal.op_Modulus(Decimal d1, Decimal d2)

в Ecng.Trading.Algo.TraderHelper.ShrinkPrice(Security security, Double price)

в Ecng.Trading.Algo.QuotingStrategy.OnProcess()

в Ecng.Trading.Algo.Strategy.♫()

MQS_SRU0 останавливается.

Котирование закончилось.

MQS_SRU0 остановлена.

Пожалуйста, подскажите что же я делаю неправильно?

Спасибо и с уважением!


Теги:


Спасибо:


1 2  >
ustas

Фотография
Дата: 15.07.2010
Ответить


версия 2.1

Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.07.2010
Ответить


Для котирование необходим экспорт стакана. Он включен?

Спасибо:

ustas

Фотография
Дата: 15.07.2010
Ответить


Да, включен.

Ведь работает же такая (ниже) конструкция для лимитной заявки, а ведь цена в ней тоже берётся из стакана ( как я понимаю).

// создаем заявку

           var order = base.CreateOrder(Direct, IsMarket ?

base.Security.GetMarketPrice(Direct,MarketPriceTypes.Opposite) : base.Security.GetMarketPrice(Direct,MarketPriceTypes.Following), base.Volume);

           // регистрируем заявку (обычным способом -

лимитированной заявкой)

            base.RegisterOrder(order);
Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.07.2010
Ответить


Так, кажется начинает вырисовываться. А MinStepSize чему равен? Случайно не 0?

Спасибо:

ustas

Фотография
Дата: 15.07.2010
Ответить


ага 0, а MinStepPrice - null

Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.07.2010
Ответить


А почему 0? Что за инструмент? Насчет MinStepPrice - это отдельная настройкаhttp://stocksharp.com/doc/help/html/448078e0-339b-4817-a97a-210b1ad2966f.htm

Спасибо:

ustas

Фотография
Дата: 15.07.2010
Ответить


а инструмент как видно из лога - фьюч на сбер обыкновенный (SRU0)

MQS_SRU0 останавливается.

Котирование закончилось.

MQS_SRU0 остановлена.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.07.2010
Ответить


Не заметил.

И у него по спецификацииhttp://www.rts.ru/ru/forts/contract.html?isin=SBRF-9.10

шаг цены должен быть равен 1. Откуда тогда 0? Вы в ручную создаете объект Security?

Спасибо:

ustas

Фотография
Дата: 16.07.2010
Ответить


да нет, всё честно из таблицы инструментов, всё настроено как у Вас написано. В таблице инструментов там оно стоит 0. может брокер кривой (uralsib)

Хорошо, попробую поставлю MinStepSize=1, MinStepPrice=1 ручками - отпишу что получится

Спасибо и с уважением!

Спасибо:

ustas

Фотография
Дата: 16.07.2010
Ответить


Поставил security

sbrf.MinStepSize = 1; sbrf.MinStepPrice = 1;

Теперь другая ошибка - Десятичное число может округляться только с точностью от 0 до 28 разрядов.

OnProcess Buy price:8117 minstepsize:1 minstepprice:1 System.ArgumentOutOfRangeException: Десятичное число может округляться только с точностью от 0 до 28 разрядов. Имя параметра: decimals в System.Decimal.FCallRound(Decimal& result, Decimal d, Int32 decimals) в System.Decimal.Round(Decimal d, Int32 decimals) в Ecng.Trading.Algo.TraderHelper.ShrinkPrice(Security security, Double price)

в Ecng.Trading.Algo.QuotingStrategy.OnProcess() в Ecng.Trading.Algo.Strategy.♫() MQS_SRU0 останавливается. Котирование закончилось. MQS_SRU0 остановлена.

Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy