Chiến lược Ichimoku Kinko Hyo dựa trên ATR Stop Loss


Ngày tạo: 2023-09-14 20:06:11 sửa đổi lần cuối: 2023-09-14 20:06:11
sao chép: 2 Số nhấp chuột: 874
1
tập trung vào
1617
Người theo dõi

Bài viết này sẽ giới thiệu chi tiết về một chiến lược giao dịch định lượng sử dụng ATR làm điểm dừng và đường trung bình làm đầu vào. Chiến lược này kết hợp với chỉ số William để xác minh tín hiệu để kiểm soát rủi ro giao dịch.

A. Nguyên tắc chiến lược

Các chỉ số cốt lõi của chiến lược bao gồm:

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

  2. Dòng cân bằng một mắt là một tín hiệu đầu vào để đánh giá xu hướng.

  3. Chỉ số William được kiểm tra thêm để tránh nhập học giả.

Các giao dịch cụ thể sẽ diễn ra như sau:

Khi giá giảm xuống đường cân bằng ban đầu, sau đó thu hồi; Khi giá phá vỡ đường trung bình và giảm xuống. Điều này có thể theo dõi xu hướng.

Đồng thời, kiểm tra xem chỉ số William có phù hợp với hướng đi hay không, và nếu không phù hợp, bạn sẽ bị loại. Điều này có thể lọc các tín hiệu sai.

Mỗi lần nhập, thiết lập điểm dừng lỗ được tính bằng ATR. ATR có thể phản ánh động lượng biến động của thị trường, sau đó thiết lập mức dừng lỗ hợp lý.

Khi mức dừng lỗ hoặc dừng chân được kích hoạt, vị trí thanh toán sẽ được lợi nhuận.

2 - Lợi thế chiến lược

Những ưu điểm chính của chiến lược này là:

Đầu tiên, ATR Stop Loss có thể ngăn chặn một khoản lỗ lớn bằng cách đặt các điều khiển rủi ro dựa trên biến động của thị trường.

Thứ hai, việc nhập cảnh đồng đều kết hợp với chứng thực chỉ số William có thể cải thiện chất lượng tín hiệu;

Cuối cùng, thiết lập Stop Loss Stop Stop cũng cho phép mỗi giao dịch có một lợi nhuận rủi ro được xác định.

Ba, rủi ro tiềm ẩn

Tuy nhiên, chúng ta cũng nên xem xét những rủi ro sau:

Đầu tiên, khi có sự thay đổi trong xu hướng, tín hiệu đồng tuyến có thể bị chậm trễ và không thể phản ứng kịp thời.

Thứ hai, quá trình can thiệp có thể dẫn đến sự phá vỡ các rào cản.

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

Bốn nội dung, tóm tắt

Bài viết này mô tả chi tiết một chiến lược giao dịch định lượng dựa trên ATR để dừng lỗ, đường trung bình để vào. Nó có thể đạt được hiệu quả kiểm soát rủi ro tốt thông qua dừng động và lọc tín hiệu.

Mã nguồn chiến lược
/*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)