ATR Stop Loss Ichimoku Kijun estrategia de fuga

El autor:¿ Qué pasa?, Fecha: 14 de septiembre de 2023 20:06:11
Las etiquetas:

Este artículo explica en detalle una estrategia de negociación cuantitativa que utiliza ATR para el stop loss y Kijun-Sen breakouts para la entrada, con validación adicional de la señal utilizando el indicador Williams %R para controlar el riesgo de negociación.

I. Lógica de la estrategia

Los indicadores centrales de esta estrategia incluyen:

  1. ATR como el indicador de stop loss, que refleja dinámicamente la volatilidad del mercado.

  2. Ichimoku Kijun-Sen para determinar la dirección de la tendencia y proporcionar señales de entrada.

  3. Williams %R para la validación de señales adicionales para evitar entradas falsas.

La lógica específica del comercio es la siguiente:

Tomar posiciones largas cuando el precio se rompe por debajo y se recupera por encima de la línea Kijun-Sen. Tomar posiciones cortas cuando el precio se rompe por encima y cae por debajo de la línea. Esto permite seguir la tendencia.

Al mismo tiempo, compruebe si Williams %R está de acuerdo con la dirección, si no, omita la entrada.

Establecer el stop loss en los niveles calculados de ATR para cada entrada. ATR refleja dinámicamente la volatilidad del mercado, lo que permite un tamaño razonable de stop loss.

Cuando se activa el stop loss o el take profit, se cierran las posiciones para obtener beneficios.

II. Ventajas de la Estrategia

Las principales ventajas de esta estrategia son las siguientes:

En primer lugar, ATR establece el control del riesgo de acuerdo con la volatilidad del mercado, evitando de manera efectiva grandes pérdidas.

En segundo lugar, las entradas de Kijun-Sen con validación Williams %R mejoran la calidad de la señal.

Por último, las configuraciones de stop loss y take profit también definen el riesgo-recompensa para cada operación.

III. Posibles debilidades

No obstante, también deben tenerse en cuenta los siguientes riesgos:

En primer lugar, las señales de Kijun-Sen pueden retrasarse durante las transiciones de tendencia, al no reaccionar a tiempo.

En segundo lugar, el riesgo de que el stop loss se establezca de manera demasiado agresiva es que se detenga prematuramente.

Por último, la optimización inadecuada de parámetros también puede conducir a problemas de sobreajuste.

IV. Resumen

En resumen, este artículo ha explicado una estrategia comercial cuantitativa que utiliza ATR para stop loss y Kijun-Sen para señales de entrada. Puede lograr un control de riesgo efectivo a través de paradas dinámicas y filtrado de señales. Pero se deben prevenir riesgos como transiciones de tendencia e invalidación de stop loss. En general, proporciona una tendencia simple y efectiva siguiendo la metodología.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy("NNFX ft. ATR, Kijun-Sen, %R","NNFX-2",true,pyramiding=1,calc_on_order_fills=true,calc_on_every_tick=true,initial_capital = 1000, currency="USD",slippage=5,commission_type=strategy.commission.cash_per_contract,commission_value=0.000035)
strategy.initial_capital = 50000    
//INDICATOR---------------------------------------------------------------------    
    //Average True Range (1. RISK)
atr_period = input(14, "Average True Range Period")
atr = atr(atr_period)

    //Ichimoku Cloud - Kijun Sen (2. BASELINE)
ks_period = input(20, "Kijun Sen Period")
kijun_sen = (highest(high,ks_period) + lowest(low,ks_period))/2
base_long = open < kijun_sen and close > kijun_sen
base_short = open > kijun_sen and close < kijun_sen

    //Williams Percent Range (3. Confirmation#1)
use_wpr = input(true,"Use W%R?")
wpr_len = input(1, "Williams % Range Period")
wpr = -100*(highest(high,wpr_len) - close)/(highest(high,wpr_len) - lowest(low,wpr_len))
wpr_up = input(-25, "%R Upper Level")
wpr_low = input(-75, "%R Lower Level")
conf1_long = wpr >= wpr_up
conf1_short = wpr <= wpr_low
if(use_wpr == false)
    conf1_long := true
    conf1_short := true
//TRADE LOGIC-------------------------------------------------------------------
    //Long Entry
    //if -> WPR crosses below -39 AND MACD line is less than signal line
l_en = base_long and conf1_long
    //Long Exit
    //if -> WPR crosses above -14
l_ex = close < kijun_sen
    //Short Entry
    //if -> WPR crosses above -39 AND MACD line is greater than signal line
s_en = base_short and conf1_short
    //Short Exit
    //if -> WPR crosses under -14
s_ex = close > kijun_sen
    
//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")
risk = input(5,"Risk %")/100           //risk % per trade
equity_protector = input(30,"Equity Protection %")/100  //equity protection %
stop = atr*100000*input(1.5,"Average True Range multiplier")    //Stop level
if(isTwoDigit)
    stop := stop/100
target = input(150, "Target TP in Points")  //TP level
    //Calculate current DD and determine if stopout is necessary
equity_stopout = false
if(floating<0 and abs(floating/balance)>equity_protector)
    equity_stopout := true
    
    //Calculate the size of the next trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000            //Set min. lot size

//TRADE EXECUTION---------------------------------------------------------------
strategy.close_all(equity_stopout)      //Close all trades w/equity protector
is_open = strategy.opentrades > 0

if(true)
    strategy.entry("l_en",true,oca_name="a",when=l_en and not is_open)  //Long entry
    strategy.entry("s_en",false,oca_name="a",when=s_en and not is_open) //Short entry
    
    strategy.exit("S/L","l_en",loss=stop, profit=target)      //Long exit (stop loss)
    strategy.close("l_en",when=l_ex)            //Long exit (exit condition)
    strategy.exit("S/L","s_en",loss=stop, profit=target)      //Short exit (stop loss)
    strategy.close("s_en",when=s_ex)            //Short exit (exit condition)
    
//PLOTTING----------------------------------------------------------------------
plot(kijun_sen,"Kijun-Sen",color.blue,2)

Más.