Artikel ini akan menerangkan secara terperinci mengenai strategi perdagangan kuantitatif yang menggunakan ATR sebagai stop loss dan garis rata sebagai entry. Strategi ini juga digabungkan dengan Indeks William untuk mengesahkan isyarat untuk mengawal risiko perdagangan.
I. Prinsip-prinsip Strategi
Strategi ini merangkumi:
ATR sebagai penunjuk stop loss, yang secara dinamik mencerminkan tahap turun naik pasaran;
Garis keseimbangan pertama memberi isyarat permulaan untuk menilai arah trend;
Ia juga boleh digunakan untuk mengesan kelayakan dan kebolehpercayaan seseorang.
Logik urus niaga adalah seperti berikut:
Apabila harga jatuh di bawah garis keseimbangan pertama dan kemudian pulih, lakukan lebih banyak; apabila harga menembusi garis purata dan kemudian jatuh, lakukan kosong.
Pada masa yang sama, periksa apakah penunjuk William sesuai dengan arah, dan jika tidak, tinggalkan masuk. Ini boleh menyaring isyarat palsu.
Setiap kali masuk, set titik berhenti yang dikira dengan ATR. ATR dapat secara dinamik mencerminkan tahap turun naik pasaran, dan kemudian menetapkan margin berhenti yang munasabah.
Apabila tahap Stop Loss atau Stop Stop dipicu, kedudukan kosong akan mendapat keuntungan.
Kedua, kelebihan strategi
Kelebihan utama strategi ini ialah:
Pertama, ATR Stop Loss dapat mengelakkan kerugian yang besar dengan mengawal risiko yang ditetapkan berdasarkan turun naik pasaran;
Kedua, penyertaan rata-rata yang digabungkan dengan pengesahan William dapat meningkatkan kualiti isyarat;
Akhirnya, seting stop loss juga membolehkan setiap perdagangan mempunyai risiko dan ganjaran yang ditentukan.
Ketiga, potensi risiko
Walau bagaimanapun, kita juga perlu mempertimbangkan risiko berikut:
Pertama, apabila trend berubah, isyarat garis lurus mungkin terlewat dan tidak dapat bertindak balas tepat pada masanya;
Kedua, penutupan yang terlalu radikal boleh menyebabkan penutupan yang terganggu;
Akhirnya, optimasi parameter yang tidak betul juga boleh menyebabkan overfit.
Empat isi, ringkasan
Artikel ini menerangkan secara terperinci mengenai strategi perdagangan kuantitatif berdasarkan ATR untuk menghentikan kerugian, rata-rata sebagai asas kemasukan. Ia boleh mencapai kesan kawalan risiko yang baik melalui hentian dinamik dan penapisan isyarat. Tetapi kita juga harus mencegah masalah seperti penembusan trend, hentian terganggu.
/*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)