Artikel ini akan membahas tentang strategi perdagangan kuantitatif yang menggunakan ATR sebagai stop loss dan equity sebagai entry. Strategi ini juga digunakan untuk melakukan verifikasi sinyal dengan indikator William untuk mengendalikan risiko perdagangan.
Indikator utama dari strategi ini adalah:
ATR adalah indikator stop loss yang dapat secara dinamis mencerminkan tingkat fluktuasi pasar;
Garis kesetimbangan pertama memberikan sinyal masuk untuk menentukan arah tren.
William melakukan verifikasi tambahan untuk menghindari penipuan.
Logika transaksi adalah sebagai berikut:
Ketika harga jatuh di bawah garis ekuivalen pertama dan kemudian menarik kembali, lakukan lebih banyak; Ketika harga menembus garis rata-rata dan kemudian jatuh, lakukan short.
Pada saat yang sama, periksa apakah indikator William sesuai dengan arah, dan jika tidak sesuai, tinggalkan masuk.
Setiap kali masuk, Anda harus mengatur titik stop loss yang dihitung dengan ATR. ATR dapat secara dinamis mencerminkan tingkat fluktuasi pasar, dan kemudian mengatur stop loss yang wajar.
Ketika level stop loss atau stop loss dipicu, posisi kosong akan menguntungkan.
Kedua, keunggulan strategi
Keuntungan utama dari strategi ini adalah:
Pertama, ATR stop loss dapat secara efektif menghindari kerugian besar dengan mengatur kontrol risiko berdasarkan volatilitas pasar.
Kedua, masuk rata-rata dengan verifikasi indikator William dapat meningkatkan kualitas sinyal.
Akhirnya, pengaturan Stop Loss Stop Loss juga membuat setiap perdagangan memiliki risiko-pengembalian yang terdefinisi.
Ketiga, potensi risiko
Namun, kita juga harus mempertimbangkan risiko berikut:
Pertama, sinyal linier dapat terlambat dan tidak dapat bereaksi tepat waktu saat terjadi perubahan tren.
Kedua, stop loss yang terlalu radikal dapat menyebabkan stop loss terjatuh.
Akhirnya, optimasi parameter yang tidak tepat dapat menyebabkan overfit.
Empat isi, ringkasan
Artikel ini menjelaskan secara rinci tentang sebuah strategi perdagangan kuantitatif dengan ATR sebagai stop loss, rata-rata sebagai dasar masuk. Hal ini dapat mencapai efek kontrol risiko yang baik melalui stop loss dinamis dan sinyal penyaringan. Tetapi kita juga harus mencegah masalah seperti terobosan tren, stop loss yang terobosan. Secara keseluruhan, strategi ini memberikan metode pelacakan tren yang sederhana dan efektif.
/*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)