Изменение StopLossStrategy

Изменение StopLossStrategy
Atom
4/19/2011
Oppositus


Здравствуйте.

Я хочу реализовать trailing stop на своем собственном алгоритме. То есть изменять цену сразатывания стопа во время работы.

Допустим, уровнем стопа будет служить SMA.

Тогда я наследуюсь от StopLossStrategy, в OnProcess рассчитываю новое значение стоп-цены и... Что делаю? Какой параметр в базовом классе изменить, чтобы стратегия начала работать от новой цены?

protected override StrategyProcessResults OnProcess()
{
    if(/* Значение МА не изменилось, переставлять стоп не надо */)
    {
        return base.OnProcess();
    }

    double newStopPrice = /* Новое значение МА */;

    /* Как привести новое значение цены в вид, который примет терминал?
       Скажем, для фьюча РТС надо отбросить дробную часть и сделать шаг цены кратным 5 */

    /* Собственно вопрос:
       Как указать, что теперь StopLossStrategy должа сработать по достижении newStopPrice? */

    return base.OnProcess();
}

Заранее спасибо.


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 4/19/2011
Reply


Oppositus: Здравствуйте.

Я хочу реализовать trailing stop на своем собственном алгоритме. То есть изменять цену сразатывания стопа во время работы.

Нужно переопределять GetNewPrice.

Thanks: Oppositus

Oppositus

Avatar
Date: 4/19/2011
Reply


Спасибо.

Thanks:

Daenur

Avatar
Date: 2/23/2012
Reply


Oppositus, а можно пример увидеть?

Thanks:

SelfDeleted

Avatar
Date: 4/16/2012
Reply


В документации сказано, что метод GetNewPrice (унаследован от QuotingStrategy) получает новую цену для заявки. Как он связан со свойствами StopLossStrategy:

BasePrice ProtectiveLevel ProtectivePrice ?

Иными словами, чтобы переопределить GetNewPrice, нужно понять, что он изначально определяет!

Thanks:

Alexander

Avatar
Date: 4/16/2012
Reply


Никак не связан. Он ничего не устанавливает, он лишь возвращает новую цену для заявки в зависимости от алгоритма. К примеру - встречную по стакану.

Thanks:

SelfDeleted

Avatar
Date: 4/16/2012
Reply


Alexander Mukhanchikov: Никак не связан. Он ничего не устанавливает, он лишь возвращает новую цену для заявки в зависимости от алгоритма. К примеру - встречную по стакану.

Тогда, для чего его переопределять, чтобы получить скользящий стоп (см. выше пост Михаила Сухова)?

Логичнее менять ProtectivePrice:

  • начальное значение ProtectivePrice = BasePrice + ProtectiveLevel
  • последующие в зависимости от движения цены.

Только как его изменить - не соображу. ProtectivePrice только на чтение: public override decimal ProtectivePrice { get; }

Thanks:

ra81

Avatar
Date: 4/16/2012
Reply


Унаследуйтесь от стратегии СТопЛосс и переопределите свойства типо вот так

        public override decimal ProtectivePrice
        {
            get
            {
                if(ProtectiveDirection == OrderDirections.Buy)
                {
                    if (_sma.LastValue > _stopPrice)
                        _stopPrice = _sma.LastValue;
                }
                else
                {
                    if (_sma.LastValue < _stopPrice)
                        _stopPrice = _sma.LastValue;
                }

                return _stopPrice;
            }
        }
Thanks: SelfDeleted

SelfDeleted

Avatar
Date: 4/26/2012
Reply


Общий вопрос по работе стратегии StopLossStrategy:

я правильно понимаю, что при срабатывании условия - цена последнего тика >/< ProtectivePrice регистрируется лимитированная заявка с ценой ProtectivePrice?

Если есть желание регистрировать рыночную заявку, что лучше предпринять? Готов попробовать дописать в родительский класс QuotingStrategy свойство типа "IsMarketOrderUsed" (по умолчанию false).

P.S. на предыдущие мои посты о скользящем стопе достаточно было ответить, что уже реализовано свойство "IsTrailing"... Этого нет в документации, и нет в примерах. Узнать об этом, кроме как последовательно просматривая свойства StopLossStrategy, нельзя.

Thanks:

ra81

Avatar
Date: 4/26/2012
Reply


topic959: Общий вопрос по работе стратегии StopLossStrategy:

я правильно понимаю, что при срабатывании условия - цена последнего тика >/< ProtectivePrice регистрируется лимитированная заявка с ценой ProtectivePrice?

Если есть желание регистрировать рыночную заявку, что лучше предпринять? Готов попробовать дописать в родительский класс QuotingStrategy свойство типа "IsMarketOrderUsed" (по умолчанию false).

P.S. на предыдущие мои посты о скользящем стопе достаточно было ответить, что уже реализовано свойство "IsTrailing"... Этого нет в документации, и нет в примерах. Узнать об этом, кроме как последовательно просматривая свойства StopLossStrategy, нельзя. Поскольку базовой является стратегия котирования, то заявка будет исполняться через котирование. Ну если я не прав то пусть меня поправят. Опять же в ProtectiveStrategy есть свойство говорящее о выставлении простой рыночной заявки вместо котирования, как это работает я не скажу.

В предыдущих своих постах речь шла о стопе на базе скользящей. Простой галочкой в свойствах это не решается :)

Thanks:

SelfDeleted

Avatar
Date: 4/26/2012
Reply


Если быть честным, то у меня уже накопилось достаточно вопросов "как это работает". Настолько, что чувство досады и разочарования от необходимости обращаться на форум по мелочам растет с каждым днем.

Я ценю чужой труд и предпочел бы заплатить за входной билет в "клуб с открытым кодом".

Thanks:
1 2  >

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

loading
clippy