Трехсторонняя стратегия супертенденции

Автор:Чао Чжан, Дата: 2024-02-26 10:04:18
Тэги:

img

Обзор

Это стратегия, которая принимает торговые решения на основе трех перекрывающихся индикаторов SuperTrend.

Логика стратегии

Стратегия использует функцию ta.supertrend() для расчета трех индикаторов SuperTrend с различными параметрами, а именно SuperTrend1 с 10 днями и множителем 3, SuperTrend2 с 14 днями и множителем 2 и SuperTrend3 с 20 днями и множителем 2.5. Сигнал покупки генерируется, когда цена пересекает все три линии SuperTrend. Сигнал продажи генерируется, когда цена пересекает все три линии SuperTrend.

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

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

  1. Механизм трех фильтров предотвращает ложные сигналы и улучшает качество сигнала
  2. Сам SuperTrend обладает хорошей способностью снижения шума
  3. Многочисленные комбинации гиперпараметров могут быть сконфигурированы для большего количества рыночных условий
  4. Хорошие исторические результаты с высоким коэффициентом доходности к риску

Риски

  1. Многочисленные фильтрующие сигналы могут упустить некоторые возможности
  2. Не работает хорошо на различных рынках
  3. Требует оптимизации комбинаций трех наборов гиперпараметров
  4. Концентрированное время торговли подвержено неожиданным событиям

Для снижения рисков можно рассмотреть следующее:

  1. Настройка условий фильтрации, сохранить один или два SuperTrends
  2. Добавить стратегию стоп-лосса
  3. Оптимизировать гиперпараметры для улучшения скорости победы

Руководство по оптимизации

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

Заключение

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Combined Supertrend Strategy - Ajit Prasad', overlay=true)

// Function to calculate Supertrend
supertrendFunc(atrLength, factor) =>
    [supertrend, direction] = ta.supertrend(factor, atrLength)
    [supertrend, direction]

// Input parameters for the first Supertrend
atrPeriod1 = input(10, 'ATR Length 1')
factor1 = input(3, 'Factor 1')

// Calculate the first Supertrend
[supertrend1, direction1] = supertrendFunc(atrPeriod1, factor1)

// Input parameters for the second Supertrend
atrPeriod2 = input(14, 'ATR Length 2') // Change values as needed
factor2 = input(2, 'Factor 2') // Change values as needed

// Calculate the second Supertrend
[supertrend2, direction2] = supertrendFunc(atrPeriod2, factor2)

// Input parameters for the third Supertrend
atrPeriod3 = input(20, 'ATR Length 3') // Change values as needed
factor3 = input(2.5, 'Factor 3') // Change values as needed

// Calculate the third Supertrend
[supertrend3, direction3] = supertrendFunc(atrPeriod3, factor3)

// Define market opening and closing times
marketOpenHour = 9
marketOpenMinute = 15
marketCloseHour = 15
marketCloseMinute = 30
exitTimeHour = 15
exitTimeMinute = 10

// Fetch historical close values using security function
histClose = request.security(syminfo.tickerid, "D", close)

// Buy condition
buyCondition = close > supertrend1 and close > supertrend2 and close > supertrend3 and close[1] <= supertrend1[1]

// Sell condition
sellCondition = close < supertrend1 and close < supertrend2 and close < supertrend3 and close[1] >= supertrend1[1]

// Exit conditions
buyExitCondition = close < supertrend1[1] or close < supertrend2[1] or close < supertrend3[1]
sellExitCondition = close > supertrend1[1] or close > supertrend2[1] or close > supertrend3[1]

// Execute orders with market timing
if true
    // Buy condition without 'and not'
    strategy.entry('Buy', strategy.long, when = buyCondition)

    // Sell condition without 'and not'
    strategy.entry('Sell', strategy.short, when = sellCondition)

    // Close conditions
    strategy.close('Buy', when = buyExitCondition )
    strategy.close('Sell', when = sellExitCondition)

// Close all trades at 3:10 pm IST
if true
    strategy.close_all()

// Plot Supertrends
plot(supertrend1, 'Supertrend 1', color=color.new(color.green, 0), style=plot.style_linebr)
plot(supertrend2, 'Supertrend 2', color=color.new(color.red, 0), style=plot.style_linebr)
plot(supertrend3, 'Supertrend 3', color=color.new(color.blue, 0), style=plot.style_linebr)

// Plot labels
plotshape(buyCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.large, text='Buy Signal', textcolor=color.new(color.white, 0))
plotshape(sellCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.large, text='Sell Signal', textcolor=color.new(color.white, 0))

Больше