ATR Stop Loss Ichimoku Kijun Breakout Chiến lược

Tác giả:ChaoZhang, Ngày: 2023-09-14 20:06:11
Tags:

Bài viết này giải thích chi tiết về một chiến lược giao dịch định lượng sử dụng ATR để dừng lỗ và Kijun-Sen breakout để vào, với xác nhận tín hiệu bổ sung bằng cách sử dụng chỉ số Williams %R để kiểm soát rủi ro giao dịch.

I. Chiến lược logic

Các chỉ số chính của chiến lược này bao gồm:

  1. ATR là chỉ số dừng lỗ, phản ánh động sự biến động của thị trường.

  2. Ichimoku Kijun-Sen đường để xác định hướng xu hướng và cung cấp tín hiệu nhập cảnh.

  3. Williams %R để xác nhận tín hiệu bổ sung để tránh nhập sai.

Lý thuyết thương mại cụ thể là:

Lấy các vị trí dài khi giá phá vỡ dưới và phục hồi trở lại trên đường Kijun-Sen. Lấy các vị trí ngắn khi giá phá vỡ trên và giảm xuống dưới đường. Điều này cho phép theo xu hướng.

Đồng thời, kiểm tra xem Williams % R đồng ý với hướng, nếu không, bỏ qua nhập. Điều này lọc tín hiệu sai.

Đặt mức dừng lỗ ở mức ATR được tính toán cho mỗi mục. ATR phản ánh biến động thị trường một cách năng động, cho phép kích thước dừng lỗ hợp lý.

Khi stop loss hoặc take profit được kích hoạt, đóng các vị trí để kiếm lợi nhuận.

II. Lợi thế của Chiến lược

Những lợi thế chính của chiến lược này là:

Thứ nhất, ATR dừng lỗ thiết lập kiểm soát rủi ro theo biến động thị trường, tránh thiệt hại lớn một cách hiệu quả.

Thứ hai, Kijun-Sen nhập với Williams % R xác nhận cải thiện chất lượng tín hiệu.

Cuối cùng, các thiết lập dừng lỗ và lấy lợi nhuận cũng xác định rủi ro-lợi nhuận cho mỗi giao dịch.

III. Những điểm yếu tiềm tàng

Tuy nhiên, các rủi ro sau đây cũng nên được xem xét:

Thứ nhất, các tín hiệu Kijun-Sen có thể bị chậm trễ trong quá trình chuyển đổi xu hướng, không phản ứng kịp thời.

Thứ hai, dừng lỗ được thiết lập quá mạnh có nguy cơ bị dừng lại sớm.

Cuối cùng, tối ưu hóa tham số không đúng cũng có thể dẫn đến các vấn đề quá phù hợp.

IV. Tóm tắt

Tóm lại, bài viết này đã giải thích một chiến lược giao dịch định lượng bằng cách sử dụng ATR để dừng lỗ và Kijun-Sen cho các tín hiệu đầu vào. Nó có thể đạt được kiểm soát rủi ro hiệu quả thông qua dừng động và lọc tín hiệu. Nhưng rủi ro như chuyển đổi xu hướng và vô hiệu hóa dừng lỗ cần phải được ngăn chặn. Nhìn chung, nó cung cấp một xu hướng đơn giản và hiệu quả theo phương pháp.


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

Thêm nữa