You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Исходим из того, что защищаем лонговую позицию со стоплосом в 1% и трейлинговым режимом без таймаута, используем рыночные заявки StopValue = new Unit(1, UnitTypes.Percent)
То есть при входе в позицию мы должны установить стоп на уровень -1% от точки входа и далее при увеличении цены передвигать стоплос на уровень -1% от новой цены на рынке. При ходе цены вниз мы должны выставить заявку при достижении последнего обновленного уровня стоплос.
Если так, рассмотрим пример из репозитория SmpleHistoryTesting и последний код из master ветки
На первом трейде вызывается метод
И только после того, как цена дернется выше _prevBestPrice (хотя делать должны наоборот, двигать лучшую цену вверх, да еще и учитывать -1%) ми закрываем позицию.
При стоп трейлинге getActivationPrice используется один раз вначале и далее не учитывается
Исходим из того, что защищаем лонговую позицию со стоплосом в 1% и трейлинговым режимом без таймаута, используем рыночные заявки
StopValue = new Unit(1, UnitTypes.Percent)
То есть при входе в позицию мы должны установить стоп на уровень -1% от точки входа и далее при увеличении цены передвигать стоплос на уровень -1% от новой цены на рынке. При ходе цены вниз мы должны выставить заявку при достижении последнего обновленного уровня стоплос.
Если так, рассмотрим пример из репозитория SmpleHistoryTesting и последний код из master ветки
На первом трейде вызывается метод
StockSharp/Algo/Strategies/Protective/IProtectiveBehaviourFactory.cs
Line 173 in 836a7aa
И инициализируем ProtectiveProcessor
StockSharp/Algo/Strategies/Protective/IProtectiveBehaviourFactory.cs
Lines 251 to 254 in 836a7aa
_stop = StopValue.IsSet() ? new(protectiveSide, _posPrice, protectiveSide == Sides.Sell, IsStopTrailing, StopValue, UseMarketOrders, new(), StopTimeout, this) : null;
То есть конструктор будет вызван с параметрами:
Далее по коду примера вызываем
_posController?.TryActivate(candle.ClosePrice, CurrentTime)
на каждомProcessCandle
из стратегнии.Еще раз подчеркну, у нас
_isUpTrend = False
Далее, первый раз попадая сюда
StockSharp/Algo/Strategies/Protective/ProtectiveProcessor.cs
Lines 130 to 137 in 836a7aa
Мы считаем activationPrice
StockSharp/Algo/Strategies/Protective/ProtectiveProcessor.cs
Lines 109 to 112 in 836a7aa
Как
_protectivePrice - _protectiveLevel.Value
тоесть 180-1%=178.2 что выглядит правильноНо назначаем
StockSharp/Algo/Strategies/Protective/ProtectiveProcessor.cs
Lines 131 to 135 in 836a7aa
Только если текущая цена ниже этого уровня,
StockSharp/Algo/Strategies/Protective/ProtectiveProcessor.cs
Lines 121 to 122 in 836a7aa
Хотя должны уже закрывать позицию, но код делает иначе,
мы сдвигаем
_prevBestPrice
еще нижеStockSharp/Algo/Strategies/Protective/ProtectiveProcessor.cs
Lines 149 to 152 in 836a7aa
И только после того, как цена дернется выше _prevBestPrice (хотя делать должны наоборот, двигать лучшую цену вверх, да еще и учитывать -1%) ми закрываем позицию.
При стоп трейлинге getActivationPrice используется один раз вначале и далее не учитывается
StockSharp/Algo/Strategies/Protective/ProtectiveProcessor.cs
Line 130 in 836a7aa
The text was updated successfully, but these errors were encountered: