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

деление на 0 при котировании
Atom
7/15/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 остановлена.

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

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


Tags:


Thanks:


1 2  >
ustas

Avatar
Date: 7/15/2010
Reply


версия 2.1

Thanks:

Mikhail Sukhov

Avatar
Date: 7/15/2010
Reply


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

Thanks:

ustas

Avatar
Date: 7/15/2010
Reply


Да, включен.

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

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

           var order = base.CreateOrder(Direct, IsMarket ?

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

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

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

            base.RegisterOrder(order);
Thanks:

Mikhail Sukhov

Avatar
Date: 7/15/2010
Reply


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

Thanks:

ustas

Avatar
Date: 7/15/2010
Reply


ага 0, а MinStepPrice - null

Thanks:

Mikhail Sukhov

Avatar
Date: 7/15/2010
Reply


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

Thanks:

ustas

Avatar
Date: 7/15/2010
Reply


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

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

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

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

Thanks:

Mikhail Sukhov

Avatar
Date: 7/16/2010
Reply


Не заметил.

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

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

Thanks:

ustas

Avatar
Date: 7/16/2010
Reply


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

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

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

Thanks:

ustas

Avatar
Date: 7/16/2010
Reply


Поставил 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 остановлена.

Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy