Стратегия отслеживания тренда Stop Loss Take Profit

Автор:Чао Чжан, Дата: 2024-01-24 14:17:28
Тэги:

img

Обзор

Это стратегия отслеживания тренда, которая использует полосы Боллинджера для определения тренда и ATR для установки стоп-лосса и получения прибыли.

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

  1. Вычислите верхние и нижние рельсы полос Боллинджера.
  2. Судите, находится ли цена закрытия выше верхней рельсы или ниже нижней рельсы.
  3. Если это рынок с тенденцией, вычислите линию тренда. Линия тренда основана на самой низкой цене минус значение ATR (бычий рынок) или самой высокой цене плюс значение ATR (медвежий рынок).
  4. Если это не трендовый рынок, держите линию тренда такой же, как предыдущая строка.
  5. Сравните линию тренда, чтобы определить направление тренда.
  6. Создание сигналов покупки/продажи при изменении направления линии тренда.
  7. Установите стоп-лосс и принимайте прибыль: фиксированное расстояние стоп-лосса составляет 100 раз цены входа; плавающая прибыль составляет 1,1 раза (бык) или 0,9 раза (медведь) цены входа.

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

  1. Может определять рыночную тенденцию, избегать ложных сделок.
  2. Установите линию тренда, чтобы избежать ловушки.
  3. Разумные параметры стоп-лосса и прибыли для контроля риска и обеспечения прибыли.

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

  1. Неправильное настройка параметров может привести к упущению торговых возможностей.
  2. Болинджерские полосы имеют высокую вероятность ошибочного суждения на рынках с диапазоном.
  3. Стоп-потеря слишком близко может быть легко остановить.

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

  1. Оптимизировать параметры полос Боллинджера для различных продуктов.
  2. Оптимизировать методы расчета линии тренда, например, внедряя другие показатели.
  3. Проверьте и оптимизируйте параметры стоп-лосса и прибыли.

Заключение

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


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

// © Dreadblitz
//@version=4
strategy(shorttitle="FLI", title="Follow Line Indicator", overlay=true)
// 
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)
//
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)
//
alertcondition(sell == 1 ,title="Sell",message="Sell")
alertcondition(buy == 1 ,title="Buy",message="Buy")
alertcondition(buy == 1 or sell == 1 ,title="Buy/Sell",message="Buy/Sell")
if (buy==1)
    strategy.entry("Buy", strategy.long)
if (sell==1)
    strategy.entry("Sell", strategy.short)
// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*0.9)

Больше