Здравствуйте.
Я хочу реализовать trailing stop на своем собственном алгоритме. То есть изменять цену сразатывания стопа во время работы.
Допустим, уровнем стопа будет служить SMA.
Тогда я наследуюсь от StopLossStrategy, в OnProcess рассчитываю новое значение стоп-цены и... Что делаю? Какой параметр в базовом классе изменить, чтобы стратегия начала работать от новой цены?
protected override StrategyProcessResults OnProcess()
{
if(/* Значение МА не изменилось, переставлять стоп не надо */)
{
return base.OnProcess();
}
double newStopPrice = /* Новое значение МА */;
/* Как привести новое значение цены в вид, который примет терминал?
Скажем, для фьюча РТС надо отбросить дробную часть и сделать шаг цены кратным 5 */
/* Собственно вопрос:
Как указать, что теперь StopLossStrategy должа сработать по достижении newStopPrice? */
return base.OnProcess();
}
Заранее спасибо.
Comentarios (11)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
Нужно переопределять GetNewPrice.
Спасибо.
Oppositus, а можно пример увидеть?
В документации сказано, что метод GetNewPrice (унаследован от QuotingStrategy) получает новую цену для заявки. Как он связан со свойствами StopLossStrategy:
BasePrice ProtectiveLevel ProtectivePrice ?
Иными словами, чтобы переопределить GetNewPrice, нужно понять, что он изначально определяет!
Никак не связан. Он ничего не устанавливает, он лишь возвращает новую цену для заявки в зависимости от алгоритма. К примеру - встречную по стакану.
Тогда, для чего его переопределять, чтобы получить скользящий стоп (см. выше пост Михаила Сухова)?
Логичнее менять ProtectivePrice:
Только как его изменить - не соображу. ProtectivePrice только на чтение: public override decimal ProtectivePrice { get; }
Унаследуйтесь от стратегии СТопЛосс и переопределите свойства типо вот так
Общий вопрос по работе стратегии StopLossStrategy:
я правильно понимаю, что при срабатывании условия - цена последнего тика >/< ProtectivePrice регистрируется лимитированная заявка с ценой ProtectivePrice?
Если есть желание регистрировать рыночную заявку, что лучше предпринять? Готов попробовать дописать в родительский класс QuotingStrategy свойство типа "IsMarketOrderUsed" (по умолчанию false).
P.S. на предыдущие мои посты о скользящем стопе достаточно было ответить, что уже реализовано свойство "IsTrailing"... Этого нет в документации, и нет в примерах. Узнать об этом, кроме как последовательно просматривая свойства StopLossStrategy, нельзя.
В предыдущих своих постах речь шла о стопе на базе скользящей. Простой галочкой в свойствах это не решается :)
Если быть честным, то у меня уже накопилось достаточно вопросов "как это работает". Настолько, что чувство досады и разочарования от необходимости обращаться на форум по мелочам растет с каждым днем.
Я ценю чужой труд и предпочел бы заплатить за входной билет в "клуб с открытым кодом".
Есть платная поддержка. По поводу исходников - можете обратиться в скайп (amukhanchikov).