Следующая стратегия линии

Автор:Чао Чжан, Дата: 2023-12-01 18:31:39
Тэги:

img

Обзор

Стратегия Follow Line - это стратегия отслеживания тренда, основанная на полосах Боллинджера и среднем истинном диапазоне (ATR). Она динамически корректирует линию оценки тренда для отслеживания тренда, перемещая ее вверх, когда цена превышает верхнюю полосу полос Боллинджера, и перемещая ее вниз, когда цена превышает нижнюю полосу полос Боллинджера.

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

Стратегия сначала рассчитывает верхние и нижние полосы полос Боллинджера, а также средний истинный диапазон. Затем она оценивает, превышает ли цена верхнюю полосу Боллинджера или ниже нижней полосы.

Когда цена превышает верхнюю полосу, если фильтр ATR включен, линия тренда устанавливается на самую низкую цену минус ATR. Если фильтр ATR отключен, линия тренда устанавливается непосредственно на самую низкую цену.

Когда цена проходит ниже нижней полосы, если фильтр ATR включен, линия тренда устанавливается на самую высокую цену плюс ATR. Если фильтр ATR отключен, линия тренда устанавливается непосредственно на самую высокую цену.

Таким образом, линия определения тренда может быть динамически скорректирована на основе ценовых прорывов полос Боллинджера для отслеживания тренда.

Когда текущая линия тренда выше предыдущей, она указывает на тенденцию к росту. Когда текущая линия тренда ниже предыдущей, она указывает на тенденцию к снижению.

Торговые сигналы затем могут быть сгенерированы на основе тенденции суждения идти длинным или коротким.

Анализ преимуществ

  • Динамическая корректировка линии тренда позволяет гибко отслеживать ценовые тенденции
  • В сочетании с полосами Боллинджера можно своевременно оценить изменение тренда на прорывах полос
  • Введение фильтра ATR может избежать некоторых ложных сигналов прорыва

Анализ рисков

  • Неправильные параметры BB могут вызывать частые ложные прорывы
  • Чрезмерный параметр ATR может упустить возможности для изменения тренда
  • Необходимо рассмотреть возможность остановки потерь для предотвращения потерь от экстремальных движений

Некоторые риски могут быть смягчены с помощью настройки параметров, внедрения стоп-лосса.

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

  • Оптимизировать параметры BB и ATR для поиска наилучшей конфигурации
  • Добавить другие индикаторы для фильтрации ложных прорывов
  • Выбрать периоды BB и ATR на основе конкретных торговых инструментов

Заключение

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


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © Dreadblitz
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy Follow Line Indicator ",
         shorttitle = "S-FLI",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=1,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2014, title = "Year", minval = 2000)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2000)

Config            = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
BBperiod          = input(defval = 21,     title = "BB Period",    type = input.integer, minval = 1)
BBdeviations      = input(defval = 1.00,     title = "BB Deviations",    type = input.float, minval = 0.1, step=0.05)
UseATRfilter      = input(defval = true, title = "ATR Filter",  type = input.bool)
ATRperiod         = input(defval = 5,     title = "ATR Period",    type = input.integer, minval = 1)
hl                = input(defval = false, title = "Hide Labels",  type = input.bool)


backTestPeriod() => true

//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

BBUpper=sma (close,BBperiod)+stdev(close, BBperiod)*BBdeviations
BBLower=sma (close,BBperiod)-stdev(close, BBperiod)*BBdeviations
//
TrendLine = 0.0
iTrend = 0.0
buy = 0.0
sell = 0.0
//
BBSignal = close>BBUpper? 1 : close<BBLower? -1 : 0
// 
if BBSignal == 1 and UseATRfilter == 1
    TrendLine:=low-atr(ATRperiod)
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 1
    TrendLine:=high+atr(ATRperiod)
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 1
    TrendLine:=TrendLine[1]
//
if BBSignal == 1 and UseATRfilter == 0
    TrendLine:=low
    if TrendLine<TrendLine[1] 
        TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 0
    TrendLine:=high
    if TrendLine>TrendLine[1]
        TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 0
    TrendLine:=TrendLine[1]
//
iTrend:=iTrend[1]
if TrendLine>TrendLine[1] 
    iTrend:=1
if TrendLine<TrendLine[1] 
    iTrend:=-1
//
buy:=iTrend[1]==-1 and iTrend==1 ? 1 : na
sell:=iTrend[1]==1 and iTrend==-1? 1 : na
//
plot(TrendLine, color=iTrend > 0?color.blue:color.red ,style=plot.style_line,linewidth=2,transp=0,title="Trend Line") 
plotshape(buy == 1 and hl == false? TrendLine-atr(8) :na, text='💣', style= shape.labelup, location=location.absolute, color=color.blue, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 and hl == false ?TrendLine+atr(8):na, text='🔨', style=shape.labeldown, location=location.absolute, color=color.red, textcolor=color.white, offset=0, transp=0,size=size.auto)

// Strategy Entry
if (backTestPeriod())
    strategy.entry("long", true, 1, when = buy == 1)
    strategy.entry("short", false, 1, when = sell == 1) 

Больше