ATR arrête la perte Ichimoku Kijun stratégie de rupture

Auteur:ChaoZhang est là., Date: 14 septembre 2023 à 20h06
Les étiquettes:

Cet article explique en détail une stratégie de négociation quantitative qui utilise l'ATR pour le stop loss et les ruptures Kijun-Sen pour l'entrée, avec une validation supplémentaire du signal à l'aide de l'indicateur Williams %R pour contrôler le risque de négociation.

I. Logique stratégique

Les principaux indicateurs de cette stratégie sont les suivants:

  1. ATR comme indicateur de stop loss, qui reflète dynamiquement la volatilité du marché.

  2. Ichimoku Kijun-Sen ligne pour déterminer la direction de la tendance et fournir des signaux d'entrée.

  3. Williams %R pour une validation supplémentaire du signal afin d'éviter de fausses entrées.

La logique commerciale spécifique est la suivante:

Prenez des positions longues lorsque le prix se déplace en dessous de la ligne Kijun-Sen et se redresse au-dessus de celle-ci. Prenez des positions courtes lorsque le prix se déplace au-dessus de la ligne et tombe en dessous. Cela permet de suivre la tendance.

En même temps, vérifiez si Williams %R est d'accord avec la direction, sinon, sautez l'entrée.

La valeur de l'arrêt de perte est fixée aux niveaux calculés pour chaque entrée.

Lorsque le stop loss ou le take profit est déclenché, fermez les positions pour réaliser un profit.

II. Avantages de la stratégie

Les principaux avantages de cette stratégie sont les suivants:

Tout d'abord, le système ATR de stop loss définit le contrôle des risques en fonction de la volatilité du marché, évitant ainsi de grandes pertes.

Deuxièmement, les entrées Kijun-Sen avec validation Williams %R améliorent la qualité du signal.

Enfin, les paramètres stop loss et take profit définissent également le risque-rendement pour chaque transaction.

III. Les faiblesses potentielles

Toutefois, les risques suivants doivent également être pris en considération:

Tout d'abord, les signaux Kijun-Sen peuvent être retardés lors des transitions de tendance, ne réagissant pas à temps.

Deuxièmement, un arrêt trop agressif risque d'être arrêté prématurément.

Enfin, une mauvaise optimisation des paramètres peut également entraîner des problèmes de surajustement.

IV. Résumé

En résumé, cet article a expliqué une stratégie de trading quantitative utilisant l'ATR pour le stop loss et Kijun-Sen pour les signaux d'entrée. Il peut obtenir un contrôle efficace des risques grâce à des stops dynamiques et au filtrage des signaux. Mais des risques tels que les transitions de tendance et l'invalidation du stop loss doivent être évités. Dans l'ensemble, il fournit une méthodologie de suivi de tendance simple et efficace.


/*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)

Plus de