Cet article détaille une stratégie de trading quantitatif utilisant l’ATR comme arrêt et la ligne de parité comme entrée. Cette stratégie est combinée à l’indicateur William pour la vérification du signal afin de contrôler le risque de trading.
Premièrement, les principes stratégiques
Les indicateurs centraux de la stratégie sont les suivants:
L’ATR est un indicateur de stop loss qui reflète dynamiquement la volatilité du marché.
Les lignes d’équilibre à première vue fournissent un signal d’entrée pour juger de la direction de la tendance.
Les critères de William sont vérifiés de manière supplémentaire pour éviter les faux admissions.
La logique de l’opération est la suivante:
Faire plus lorsque le prix tombe en dessous de la ligne d’équilibre initiale et se rétracte; faire moins lorsque le prix franchit la ligne moyenne et se rétracte. Cela permet de suivre la tendance.
En même temps, vérifiez si l’indicateur William est conforme à la direction et si non, abandonnez l’entrée. Cela peut filtrer les faux signaux.
Pour chaque entrée, le stop loss est calculé en fonction de l’ATR. L’ATR peut refléter dynamiquement la volatilité du marché, puis définir un stop loss raisonnable.
Lorsque le niveau de stop loss ou de stop-loss est déclenché, la position est à zéro.
Deux, les avantages stratégiques
Les principaux avantages de cette stratégie sont les suivants:
Tout d’abord, l’arrêt des pertes d’ATR permet d’éviter efficacement les pertes importantes en fonction du contrôle des risques mis en place en fonction de la volatilité du marché;
Deuxièmement, l’accès à la même ligne, combiné à la validation de l’indicateur William, peut améliorer la qualité du signal.
Enfin, le paramètre Stop Loss Stop Loss permet également à chaque transaction d’avoir un retour sur risque défini.
Troisièmement, les risques potentiels
Cependant, nous devrions également prendre en compte les risques suivants:
Tout d’abord, les signaux linéaires peuvent être retardés et ne peuvent pas réagir à temps en cas de changement de tendance.
Deuxièmement, le blocage trop radical pourrait entraîner une rupture du blocage;
Enfin, une mauvaise optimisation des paramètres peut entraîner une suradaptation.
Quatrième partie, résumé
Cet article présente en détail une stratégie de trading quantitatif basée sur le stop loss ATR et la parité d’entrée. Elle permet d’obtenir de bons effets de contrôle du risque grâce à des stop loss dynamiques et à des filtres de signaux. Mais nous devons également prévenir les problèmes de rupture de tendance, de rupture de stop loss, etc.
/*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)