Базовая стратегия «Супер тренд»


Дата создания: 2023-10-11 15:14:54 Последнее изменение: 2023-10-11 15:14:54
Копировать: 0 Количество просмотров: 907
1
Подписаться
1617
Подписчики

Обзор

Основная стратегия супертенденции - это надежная и прибыльная алгоритмическая торговая стратегия, основанная на трех мощных показателях: супертенденционный показатель (ATR), относительно сильный индекс (RSI) и индикаторная движущаяся средняя (EMA). Эта стратегия предназначена для определения направления и силы рыночных тенденций, входа в рынок в оптимальной точке входа и выхода из рынка при достижении точки остановки или остановки.

Стратегический принцип

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

Относительно сильный индекс используется для обнаружения перегрева и перекупа или перепродажи. Когда RSI выше 50, это сильный рынок, а наоборот - слабый. RSI может отфильтровывать ложные прорывы.

Индексные скользящие средние используются для определения долгосрочного направления тренда. Когда цена выше, чем EMA, это тенденция к росту, а когда она ниже, это тенденция к снижению.

Торговые сигналы этой стратегии следующие:

Многоголовый вход: цена выше супертронда, RSI выше 50 и цена выше EMA Многоголовый выход: цена закрывается ниже супертенденции или остановка или остановка

Пустой вход: пустота при цене ниже супертенденции и RSI ниже 50 и цене ниже EMA
Пустой выход: цена закрывается выше супертенденции или остановка или остановка

Стоп-лост и стоп-стоп могут быть установлены в процентах от цены входа.

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

Эта стратегия имеет следующие преимущества:

  1. Используйте комбинацию из трех показателей, чтобы надежно определить направление тренда

  2. Супертенденциальный индикатор позволяет четко определить тенденции к росту и снижению

  3. RSI может отфильтровывать ложные прорывы, чтобы избежать перекупа и перепродажи

  4. EMA используется для определения направления основных тенденций

  5. Стратегические сигналы просты, понятны и просты в использовании

  6. Настраиваемые ATR-циклы, RSI параметры и EMA-циклы для оптимизации

  7. Можно установить стоп-стоп для контроля риска

  8. Вы можете работать больше или меньше, чтобы адаптироваться к различным рыночным условиям.

  9. Используется в любом временном цикле

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

Основные риски этой стратегии:

  1. В случае реверсии большого тренда, индикатор супертенденции задерживается и может привести к убыткам.

  2. Некоторые из них могут быть слишком маленькими, чтобы поймать крупную рыночную ситуацию.

  3. EMA не может определить, когда произойдет обратный тренд

  4. Невозможно определить, откуда они пришли.

  5. Существует определенный уровень риска волатильности и риска торговли временем.

Решение проблемы:

  1. В сочетании с другими показателями, мы видим обратный тренд.

  2. Оптимизация параметров стоп-стоп

  3. В сочетании с другими показателями, мы видим обратный тренд.

  4. В сочетании с отклонением от показателя

  5. Правильная корректировка управления позициями

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров цикла ATR для баланса чувствительности и стабильности

  2. Оптимизация параметров RSI для повышения точности

  3. Оптимизация циклов EMA для адаптации к различным рынкам

  4. Добавление других показателей для определения обратного направления, таких как MACD, KD и т. д.

  5. Увеличение отклонения от показателей

  6. Возвращение в сочетании с теорией волн

  7. Параметры динамической оптимизации с использованием алгоритмов машинного обучения

  8. Добавление продвинутых алгоритмов остановки, таких как отслеживание остановки, мобильная остановка и т. д.

  9. Оптимизация управления позициями, адаптация к различным волатильным рынкам

  10. Тестирование более сложных комбинаций входных и выходных условий

Подвести итог

Основная стратегия супертронда объединяет три основных индикатора: супертронда, RSI и EMA в одну простую и практичную стратегию отслеживания тренда. Она позволяет четко идентифицировать направление тренда, отфильтровывать ложные сигналы и подтверждать большую тенденцию.

Исходный код стратегии
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JS_TechTrading

//@version=5
// strategy("Supertrend", overlay=true,default_qty_type =strategy.percent_of_equity,default_qty_value = 1,process_orders_on_close = false)

// group string////
var string group_text000="Choose Strategy"
var string group_text0="Supertrend Settings"
var string group_text0000="Ema Settings"
var string group_text00="Rsi Settings"
var string group_text1="Backtest Period"
var string group_text2="Trade Direction"
// var string group_text3="Quantity Settings"
var string group_text4="Sl/Tp Settings"
////////////////////
option_ch=input.string('Pullback',title = "Type Of Strategy",options =['Pullback','Simple'])

//atr period input supertrend 
atrPeriod = input(10, "ATR Length",group = group_text0)
factor = input.float(3.0, "Factor", step = 0.01,group=group_text0)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)

long=direction < 0 ? supertrend : na
short=direction < 0? na : supertrend

longpos=false
shortpos=false

longpos :=long?true :short?false:longpos[1]
shortpos:=short?true:long?false:shortpos[1]

fin_pullbuy= (ta.crossunder(low[1],long) and long and high>high[1])
fin_pullsell=(ta.crossover(high[1],short) and short and low<low[1]) 

//Ema 1
on_ma=input.bool(true,"Ema Condition On/Off",group=group_text0000)
ma_len= input.int(200, minval=1, title="Ema Length",group = group_text0000)
ma_src = input.source(close, title="Ema Source",group = group_text0000)
ma_out = ta.ema(ma_src, ma_len)

ma_buy=on_ma?close>ma_out?true:false:true
ma_sell=on_ma?close<ma_out?true:false:true

// rsi indicator and condition
// Get user input
en_rsi    = input.bool(true,"Rsi Condition On/Off",group = group_text00)
rsiSource = input(title='RSI Source', defval=close,group = group_text00)
rsiLength = input(title='RSI Length', defval=14,group = group_text00)
rsiOverbought = input(title='RSI BUY Level', defval=50,group = group_text00)
rsiOversold   = input(title='RSI SELL Level', defval=50,group = group_text00)

// Get RSI value
rsiValue = ta.rsi(rsiSource, rsiLength)

rsi_buy=en_rsi?rsiValue>=rsiOverbought ?true:false:true
rsi_sell=en_rsi?rsiValue<=rsiOversold?true:false:true

// final condition
buy_cond=option_ch=='Simple'?long and not(longpos[1]) and rsi_buy and ma_buy:option_ch=='Pullback'?fin_pullbuy and rsi_buy and ma_buy:na
sell_cond=option_ch=='Simple'?short and not(shortpos[1]) and rsi_sell and ma_sell:option_ch=='Pullback'?fin_pullsell and rsi_sell and ma_sell:na

//backtest engine
start = input(timestamp('2005-01-01'), title='Start calculations from',group=group_text1)
end=input(timestamp('2045-03-01'), title='End calculations',group=group_text1)
time_cond =true

// Make input option to configure trade direction

tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both',group = group_text2)

// Translate input into trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")



// strategy start
if buy_cond and longOK and time_cond and strategy.position_size==0
    strategy.entry('long',direction = strategy.long)
if sell_cond and shortOK and time_cond and strategy.position_size==0
    strategy.entry('short',direction =strategy.short)

// fixed percentage based stop loss and take profit 

// User Options to Change Inputs (%)
stopPer = input.float(1.0,step=0.10, title='Stop Loss %',group =group_text4) / 100
takePer = input.float(1.0,step =0.10, title='Take Profit %',group =group_text4) / 100

// Determine where you've entered and in what direction
longStop  = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake  = strategy.position_avg_price * (1 + takePer)


if strategy.position_size > 0
    strategy.exit(id='Close Long',stop=longStop, limit=longTake)
if strategy.position_size < 0
    strategy.exit(id='Close Short',stop=shortStop, limit=shortTake)

//PLOT FIXED SLTP LINE
plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Fixed SL')
plot(strategy.position_size < 0 ? shortStop :na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Short Fixed SL')
plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Long Take Profit')
plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Short Take Profit')

//