В процессе загрузки ресурсов... загрузка...

Продвинутая стратегия следования тренду с адаптивной остановкой отслеживания

Автор:Чао Чжан, Дата: 2024-12-20 14:12:05
Тэги:ATRSLТС

img

Обзор

Это стратегия, основанная на индикаторе Supertrend, в сочетании с адаптивным механизмом остановки потери. Стратегия в основном использует индикатор Supertrend для определения направления тренда рынка и использует динамически регулируемые остановки для управления рисками и оптимизации сроков выхода.

Принципы стратегии

Основная логика стратегии основана на следующих ключевых элементах:

  1. Использует индикатор Supertrend в качестве основной основы для определения тренда, который сочетает в себе ATR (Average True Range) для измерения волатильности рынка.
  2. Сигналы входа запускаются изменениями направления Supertrend, поддерживающими длинную, короткую или двустороннюю торговлю.
  3. Механизм остановки потери использует адаптивные остановки, которые автоматически корректируются в зависимости от волатильности рынка
  4. Система управления торговлей включает механизмы размещения позиций (по умолчанию 15% от собственного капитала счета) и временного фильтрации

Преимущества стратегии

  1. Сильная способность улавливать тенденции: эффективно определяет основные тенденции с помощью индикатора Supertrend, уменьшая ложные сигналы
  2. Всеобъемлющий контроль рисков: использует различные механизмы остановки потерь, подходящие для различных рыночных условий.
  3. Высокая гибкость: поддерживает конфигурацию нескольких направлений торговли и методов остановки потерь
  4. Высокая адаптивность: остановки автоматически корректируются в зависимости от волатильности рынка, повышая адаптивность стратегии
  5. Полная система обратного тестирования: встроенная функция фильтрации времени для анализа исторической производительности

Стратегические риски

  1. Риск изменения тенденции: на сильно волатильных рынках могут возникать ложные сигналы
  2. Риск скольжения: на выполнение сдерживания сдвига может повлиять ликвидность рынка
  3. Чувствительность параметров: параметры супертенденционного фактора и параметры периода ATR оказывают существенное влияние на эффективность стратегии
  4. Зависимость от рыночной среды: Частые сделки на различных рынках могут увеличивать затраты

Направления оптимизации стратегии

  1. Оптимизация фильтрации сигнала: дополнительные технические показатели могут быть добавлены для фильтрации ложных сигналов
  2. Оптимизация управления позициями: размер позиции может динамически корректироваться в зависимости от волатильности рынка
  3. Улучшение механизма стоп-лосса: может быть разработана более сложная логика стоп-лосса, включающая среднюю цену затрат
  4. Оптимизация времени входа: анализ структуры цен может быть добавлен для улучшения точности входа
  5. Улучшение системы обратного тестирования: можно добавить больше статистических показателей для оценки эффективности стратегии

Резюме

Это хорошо продуманный тренд, следующий за стратегией с контролируемым риском. Сочетая индикатор Supertrend с гибкими механизмами стоп-лосса, стратегия может поддерживать высокую прибыльность, эффективно контролируя риск. Стратегия очень конфигурируема и пригодна для использования в различных рыночных средах, но требует тщательной оптимизации параметров и проверки обратного тестирования. В будущем улучшения могут быть внесены путем добавления большего количества инструментов технического анализа и мер контроля риска для дальнейшего повышения стабильности и прибыльности стратегии.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Supertrend Strategy with Adjustable Trailing Stop [Bips]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// Inputs
atrPeriod = input(10, "ATR Länge", "Average True Range „wahre durchschnittliche Schwankungsbreite“ und stammt aus der technischen Analyse. Die ATR misst die Volatilität eines Instruments oder eines Marktes. Mit ihr kann die Wahrscheinlichkeit für einen Trendwechsel bestimmt werden.", group="Supertrend Settings")
factor = input.float(3.0, "Faktor", step=0.1, group="Supertrend Settings")
tradeDirection = input.string("Long", "Trade Direction", options=["Both", "Long", "Short"], group="Supertrend Settings")
sl_type    = input.string("%", "SL Type", options=["%", "ATR", "Absolute"])
// Parameter für ST nur für einstieg -> Beim Ausstieg fragen ob der bool WWert true ist -> Für weniger und längere Trädes 

sl_perc    = input.float(4.0, "% SL", group="Stop Loss Einstellung")
atr_length = input.int(10, "ATR Length", group="Stop Loss Einstellung")
atr_mult   = input.float(2.0, "ATR Mult", group="Stop Loss Einstellung")
sl_absol   = input.float(10.0, "Absolute SL", group="Stop Loss Einstellung")

//-------------------------//
// BACKTESTING RANGE
fromDay   = input.int(defval=1, title="From Day", minval=1, maxval=31, group="Backtesting Einstellung")
fromMonth = input.int(defval=1, title="From Month", minval=1, maxval=12, group="Backtesting Einstellung")
fromYear  = input.int(defval=2016, title="From Year", minval=1970, group="Backtesting Einstellung")
toDay     = input.int(defval=1, title="To Day", minval=1, maxval=31, group="Backtesting Einstellung")
toMonth   = input.int(defval=1, title="To Month", minval=1, maxval=12, group="Backtesting Einstellung")
toYear    = input.int(defval=2100, title="To Year", minval=1970, group="Backtesting Einstellung")

startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond  = time >= startDate and time <= finishDate

//-------------------------//
// Supertrend calculation
[_, direction] = ta.supertrend(factor, atrPeriod)

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * ta.atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// Init Variables
var pos         = 0
var float trailing_sl = 0.0

// Signals
long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 

// Calculate SL
trailing_sl := short_signal     ? high + sl_val : 
               long_signal      ? low  - sl_val : 
               nz(pos[1]) ==  1 ? math.max(low  - sl_val, nz(trailing_sl[1])) :  
               nz(pos[1]) == -1 ? math.min(high + sl_val, nz(trailing_sl[1])) : 
               nz(trailing_sl[1])
               
// Position var               
pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 

// Entry logic
if ta.change(direction) < 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Long"
        strategy.entry("Long", strategy.long, stop=trailing_sl)
    else
        strategy.close_all("Stop Short")

if ta.change(direction) > 0 and time_cond
    if tradeDirection == "Both" or tradeDirection == "Short"
        strategy.entry("Short", strategy.short, stop=trailing_sl)
    else
        strategy.close_all("Stop Long")

// Exit logic: Trailing Stop and Supertrend
//if strategy.position_size > 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Long", from_entry="Long", stop=trailing_sl)

//if strategy.position_size < 0 and not na(trailing_sl)
    //strategy.exit("SL-Exit Short", from_entry="Short", stop=trailing_sl)

// Trailing Stop visualization
plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)
//plot(not na(trailing_sl) ? trailing_sl : na, color=pos == 1 ? color.green : color.red, linewidth=2, title="Trailing Stop")


Связанные

Больше