Супертензионная стратегия - это надежная и прибыльная алгоритмическая стратегия торговли, основанная на трех сильных показателях: супертензионный индикатор (ATR), относительно сильный индикатор (RSI) и индексный движущийся средний (EMA). Эта стратегия предназначена для определения направления и интенсивности рыночных тенденций, для того, чтобы войти в рынок в оптимальных точках входа и выйти из рынка при достижении точки остановки или остановки.
Эта стратегия использует сверхтенденционный индикатор, чтобы определить, находится ли цена в восходящем или нисходящем тренде. Сверхтенденционный индикатор основан на среднем истинном диапазоне волн и факторе, который является восходящим, когда цена выше сверхтенденции, и нисходящим, когда цена ниже сверхтенденции.
Относительно сильный и слабый индекс используется для обнаружения того, что рынок перегревается и перекупает или перепродает. Когда RSI выше 50, это сильный рынок, а наоборот, слабый.
Индексные движущиеся средние используются для определения долгосрочного направления тренда. При цене выше ЕМА - рост, при цене ниже - падение.
Например, в Китае, в Китае, в Китае, в Китае, в Китае, в Китае, в Китае.
Многоголовый вход: больше делать, когда цена выше супертенденции и RSI выше 50 и цена выше EMA Многократный выход: цена закрывается ниже сверхтенденции или остановки убытков или остановки
Белый вход: белый, когда цена ниже супертенденции и RSI ниже 50 и цена ниже EMA
Пустой выход: цена закрывается выше сверхтенденции или остановки убытков или остановки
Стоп-лосс и стоп-офф могут быть установлены как процент от входной цены.
В частности, в частности:
Использование комбинации трех индикаторов для надежного определения направления тренда
Супертензивные индикаторы позволяют четко определить рост и спад.
Индекс RSI может фильтровать ложные прорывы, чтобы избежать перекупки
EMA может быть использован для определения направления больших тенденций.
Стратегические сигналы просты, понятны и просты в использовании
Оптимизация ATR циклов, параметров RSI и EMA
Установка препятствий для предотвращения потерь для контроля риска
Можно делать больше или меньше, чтобы адаптироваться к различным условиям рынка
Используется в любой период времени
В частности, в этом случае, если вы не хотите, чтобы ваша компания была вынуждена отказаться от своих услуг, вы должны отказаться.
Когда большие тенденции меняются, сверхтенденционные показатели могут задерживаться, что может привести к потерям.
Определенные остановки могут быть слишком малыми, чтобы охватить большую часть рынка.
EMA не может определить, где изменить тенденцию
Невозможность отделиться от явления
Есть определенные риски волатильности и риски временной торговли.
Относительное решение:
В сочетании с другими показателями, тенденция изменилась.
Оптимизация параметров предотвращения потерь
В сочетании с другими показателями, тенденция изменилась.
Объединенные показатели отклонения
Соответствующая адаптация управления позициями
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров цикла ATR для баланса чувствительности и стабильности
Оптимизация параметров RSI, повышение точности
Оптимизировать циклы EMA для адаптации к различным рынкам
Добавить другие показатели, которые могут повлиять на решение, например, MACD, KD и т.д.
Увеличение отклонения от показателя реверсии
В сочетании с волновой теорией, мы делаем обратный выбор.
Параметры динамической оптимизации с использованием алгоритмов, таких как машинное обучение
Добавление передовых алгоритмов остановки, таких как отслеживание остановки, мобильные остановки и т.д.
Оптимизировать управление позициями, чтобы адаптироваться к различным рынкам волатильности
Испытать более сложные комбинации условий входа и выхода
Основная стратегия сверхтенденции объединяет три основных показателя сверхтенденции, 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') //