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


деление на 0 при котировании
Atom
7/15/2010


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

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

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

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

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

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