← 返回

Сеттер у QuotingStrategy.Order

Михаил, верните пожалуйста сеттер у QuotingStrategy.Order. У меня котировщик, унаследованный от QuotingStrategy и переопределяющий OnProcess, но использующий вспомогательные методы QuotingStrategy, ему никак без сеттера.

本主题对您有帮助吗?

分享主题

评论 (6)

登录创建账户, 登录或注册以发表评论

Mikhail Sukhov
Mikhail Sukhov

Alter: Михаил, верните пожалуйста сеттер у QuotingStrategy.Order. У меня котировщик, унаследованный от QuotingStrategy и переопределяющий OnProcess, но использующий вспомогательные методы QuotingStrategy, ему никак без сеттера.

Сеттер убрал потому есть два пути. Или напрямую передавать конструктор, или переопределять QuotingStrategy.CreateOrder.

Alter
Alter 作者

Что-то я не понимаю. Вот у меня в OnProcess вызывается ReRegisterOrder, он возвращает некий newOrder, который потом в случае ошибки пересоздается через CreateOrder и в итоге присваивается свойству Order для следующего цикла котирования. Что мне даст переопределение CreateOrder?

Mikhail Sukhov
Mikhail Sukhov

Alter: Что-то я не понимаю. Вот у меня в OnProcess вызывается ReRegisterOrder, он возвращает некий newOrder, который потом в случае ошибки пересоздается через CreateOrder и в итоге присваивается свойству Order для следующего цикла котирования. Что мне даст переопределение CreateOrder?

Приведите код (хотя бы схематично). Я не все понял.

Alter
Alter 作者

В OnProcess что-то типа


if (newOrder != null)
{
	Order = newOrder;
}
else if (...)
{
	newOrder = CreateOrder(Order.Direction, Order.Price, GetNewVolume());
}

...

 if (CanReRegister(GetNewPrice()))
{
	newOrder = ReRegisterOrder(Order, GetNewPrice, GetNewVolume, IsForts);
	...
}

Alter
Alter 作者

Я просто не понимаю, зачем скрывать от наследников сеттер. Пусть он будет protected, но будет.

Mikhail Sukhov
Mikhail Sukhov

Alter: Я просто не понимаю, зачем скрывать от наследников сеттер. Пусть он будет protected, но будет.

Я предложил переопределить QuotingStrategy.CreateOrder, а не Strategy.Order.

Скрывать, чтобы было меньше путей для ошибок. Вот например то, что Вы привели, выглядит на первый взгляд как ошибка. Вы сами переставляете заявку, хотя это нужно чтобы делало котирование, раз уж от него наследуетесь. Попробуйте обойтись базовой логикой. Я подозреваю что переопределение QuotingStrategy.CreateOrder будет как раз в этом случае удобнее, чем установка через сеттер.