Estrategia básica de supertendencia


Fecha de creación: 2023-10-11 15:14:54 Última modificación: 2023-10-11 15:14:54
Copiar: 0 Número de Visitas: 907
1
Seguir
1617
Seguidores

Descripción general

La estrategia de base de supertrend es una estrategia de trading algorítmica confiable y rentable basada en tres indicadores fuertes: el indicador de supertrend (ATR), el índice de resistencia relativamente fuerte (RSI) y el índice de media móvil (EMA). La estrategia tiene como objetivo identificar la dirección y la fuerza de las tendencias del mercado, entrar en el mercado en el punto de entrada óptimo y salir del mercado cuando se alcanza el punto de parada o de pérdida.

Principio de estrategia

La estrategia utiliza un indicador de tendencia súper para determinar si el precio está en una tendencia ascendente o descendente. El indicador de tendencia súper se basa en la amplitud real promedio y un factor que indica una tendencia ascendente cuando el precio es superior a la tendencia súper y una tendencia descendente cuando el precio es inferior a la tendencia súper.

El índice de fuerza relativa se utiliza para detectar si hay sobrecalentamiento y sobrecompra o sobreventa. Cuando el RSI está por encima de 50, es un mercado fuerte y, por el contrario, un mercado débil. El RSI puede filtrar brechas falsas.

Los promedios móviles indicativos se utilizan para determinar la dirección de la tendencia a largo plazo. Cuando el precio está por encima de la EMA, es una tendencia al alza, y cuando está por debajo, es una tendencia a la baja. Se puede utilizar para confirmar la dirección de la operación.

Las señales de negociación para esta estrategia son las siguientes:

Entrada múltiple: el precio es superior a la tendencia súper y el RSI es superior a 50 y el precio es superior a la EMA La salida de varios jefes: el cierre de los precios por debajo de la tendencia súper o el cierre o la parada

Entrada en blanco: se abre cuando el precio está por debajo de la tendencia súper y el RSI está por debajo de 50 y el precio está por debajo de la EMA
Salida en blanco: el precio se cierra por encima de la tendencia super o se detiene o se detiene

El Stop Loss y el Stop Stop se pueden establecer como porcentajes del precio de entrada.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Utiliza una combinación de tres indicadores para determinar de manera fiable la dirección de la tendencia

  2. El indicador de tendencia súper permite determinar con claridad las tendencias al alza y a la baja

  3. El RSI puede filtrar brechas falsas para evitar sobrecompras y sobreventas

  4. La EMA se puede utilizar para determinar la dirección de las grandes tendencias

  5. Las señales de estrategia son simples, claras y fáciles de manejar.

  6. Se pueden personalizar los ciclos ATR, los parámetros RSI y los ciclos EMA para optimización

  7. Se puede configurar el Stop Loss Stop para controlar el riesgo

  8. Solo puede hacer más o solo hacer menos para adaptarse a diferentes entornos de mercado

  9. Se puede usar en cualquier ciclo de tiempo

Análisis de riesgos

Los principales riesgos de esta estrategia son los siguientes:

  1. Los indicadores de supertrend se quedan rezagados y pueden causar pérdidas cuando la tendencia general se invierte

  2. El parador de pérdidas ajustado es demasiado pequeño para capturar el mercado en general.

  3. La EMA no puede determinar el punto de inflexión

  4. No se puede juzgar la desviación.

  5. Hay un cierto grado de riesgo de fluctuación y el riesgo de tiempo de negociación

Resolución de las mismas:

  1. Combinado con otros indicadores, el cambio de tendencia

  2. Optimización de los parámetros de la parada de pérdida

  3. Combinado con otros indicadores, el cambio de tendencia

  4. Combinado con el indicador de desviación

  5. Ajuste adecuado de la gestión de posiciones

Dirección de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimización de los parámetros del ciclo ATR para equilibrar la sensibilidad y la estabilidad

  2. Optimización de los parámetros del RSI para mejorar la precisión

  3. Optimizar el ciclo de EMA para adaptarlo a los diferentes mercados

  4. Adición de otros indicadores para juzgar la inversión, como MACD, KD, etc.

  5. Aumento de la reversión de los juicios desviados de los indicadores

  6. La inversión de juicio combinado con la teoría de la onda

  7. Parámetros de optimización dinámica con algoritmos como el aprendizaje automático

  8. La adición de algoritmos avanzados de parada de pérdidas, como el seguimiento de la parada, la parada móvil, etc.

  9. Optimización de la gestión de posiciones para adaptarse a los mercados con diferentes tipos de volatilidad

  10. Prueba de una combinación más compleja de condiciones de entrada y salida

Resumir

La estrategia básica de supertrends integra las tres grandes indicadores de supertrends, RSI y EMA, formando una estrategia de seguimiento de tendencias sencilla y práctica. Identifica claramente la dirección de la tendencia, filtra los falsos señales y confirma la tendencia principal.

Código Fuente de la Estrategia
/*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')

//