Tài nguyên đang được tải lên... tải...

Dừng theo dõi động tiên tiến với chiến lược nhắm mục tiêu rủi ro-lợi nhuận

Tác giả:ChaoZhang, Ngày: 2024-12-11 14:57:09
Tags:RSIATRSMA

img

Tổng quan

Chiến lược này là một hệ thống giao dịch tiên tiến kết hợp các điểm dừng theo dõi động, tỷ lệ rủi ro-lợi nhuận và lối ra cực đoan RSI. Nó xác định các mẫu cụ thể (mẫu thanh song song và mô hình thanh chân) để nhập vào giao dịch, trong khi sử dụng ATR và mức thấp gần đây cho việc đặt dừng lỗ động, và xác định mục tiêu lợi nhuận dựa trên tỷ lệ rủi ro-lợi nhuận đã đặt trước. Hệ thống cũng kết hợp một cơ chế thoát khỏi thị trường mua quá mức / bán quá mức dựa trên RSI.

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

Logic cốt lõi bao gồm một số thành phần chính:

  1. Các tín hiệu đầu vào dựa trên hai mô hình: mô hình thanh song song (dây thanh tăng lớn theo một thanh giảm lớn) và mô hình thanh pin kép.
  2. Các mức dừng theo dõi động sử dụng nhân ATR điều chỉnh theo mức thấp gần đây N-bar, đảm bảo mức dừng lỗ thích nghi với biến động thị trường.
  3. Mục tiêu lợi nhuận được thiết lập dựa trên tỷ lệ rủi ro-lợi nhuận cố định, được tính bằng giá trị rủi ro ® cho mỗi giao dịch.
  4. Định giá vị trí được tính toán động dựa trên số tiền rủi ro cố định và giá trị rủi ro cho mỗi giao dịch.
  5. Cơ chế thoát cực RSI kích hoạt việc đóng vị trí ở mức cực của thị trường.

Ưu điểm chiến lược

  1. Quản lý rủi ro năng động: Mức dừng lỗ điều chỉnh năng động theo biến động thị trường thông qua sự kết hợp của ATR và mức thấp gần đây.
  2. Kiểm soát vị trí chính xác: Phân loại vị trí dựa trên số tiền rủi ro cố định đảm bảo rủi ro nhất quán cho mỗi giao dịch.
  3. Cơ chế thoát đa chiều: Kết hợp các điểm dừng, mục tiêu lợi nhuận cố định và RSI cực.
  4. Chỉ có một số tùy chọn giao dịch khác nhau.
  5. Thiết lập rủi ro-lợi nhuận rõ ràng: Tỷ lệ rủi ro-lợi nhuận được xác định trước xác định các mục tiêu lợi nhuận rõ ràng cho mỗi giao dịch.

Rủi ro chiến lược

  1. Rủi ro chính xác nhận dạng mẫu: Có khả năng xác định sai các thanh song song và các thanh chân.
  2. Rủi ro trượt trong dừng lỗ: Có thể phải đối mặt với trượt đáng kể trong thị trường biến động.
  3. RSI Exit sớm: Có thể dẫn đến việc thoát sớm trong các thị trường xu hướng mạnh.
  4. Các hạn chế tỷ lệ rủi ro-lợi nhuận cố định: Tỷ lệ rủi ro-lợi nhuận tối ưu có thể khác nhau giữa các điều kiện thị trường.
  5. Rủi ro quá mức tối ưu hóa tham số: Nhiều sự kết hợp tham số có thể dẫn đến tối ưu hóa quá mức.

Hướng dẫn tối ưu hóa chiến lược

  1. Tăng cường tín hiệu đầu vào: Thêm nhiều chỉ số xác nhận mô hình như chỉ số khối lượng và xu hướng.
  2. Tỷ lệ rủi ro-lợi nhuận động: Điều chỉnh tỷ lệ rủi ro-lợi nhuận dựa trên biến động thị trường.
  3. Chuyển đổi tham số thông minh: giới thiệu các thuật toán học máy để tối ưu hóa tham số năng động.
  4. Xác nhận nhiều khung thời gian: Thêm các cơ chế xác nhận tín hiệu trên nhiều khung thời gian.
  5. Phân loại môi trường thị trường: Áp dụng các bộ tham số khác nhau cho các điều kiện thị trường khác nhau.

Tóm lại

Đây là một chiến lược giao dịch được thiết kế tốt kết hợp nhiều khái niệm phân tích kỹ thuật trưởng thành để xây dựng một hệ thống giao dịch hoàn chỉnh. Sức mạnh của chiến lược nằm trong hệ thống quản lý rủi ro toàn diện và các quy tắc giao dịch linh hoạt, trong khi cần chú ý đến tối ưu hóa tham số và khả năng thích nghi của thị trường. Thông qua các hướng tối ưu hóa được đề xuất, có chỗ để cải thiện thêm chiến lược.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading | www.TheArtOfTrading.com
// @version=5
strategy("Trailing stop 1", overlay=true)

// Get user input 
int     BAR_LOOKBACK    = input.int(10, "Bar Lookback")
int     ATR_LENGTH      = input.int(14, "ATR Length")
float   ATR_MULTIPLIER  = input.float(1.0, "ATR Multiplier")
rr                      = input.float(title="Risk:Reward", defval=3)

// Basic definition
var float shares=na
risk = 1000
var float R=na
E = strategy.position_avg_price

// Input option to choose long, short, or both
side = input.string("Long", title="Side", options=["Long", "Short", "Both"])

// RSI exit option
RSIexit = input.string("Yes", title="Exit at RSI extreme?", options=["Yes", "No"])
RSIup = input(75)
RSIdown = input(25)

// Get indicator values 
float atrValue = ta.atr(ATR_LENGTH)

// Calculate stop loss values
var float trailingStopLoss = na 
float longStop  = ta.lowest(low, BAR_LOOKBACK) - (atrValue * ATR_MULTIPLIER)
float shortStop = ta.highest(high, BAR_LOOKBACK) + (atrValue * ATR_MULTIPLIER)

// Check if we can take trades 
bool canTakeTrades = not na(atrValue)
bgcolor(canTakeTrades ? na : color.red)

//Long pattern
    //Two pin bar
onepinbar = (math.min(close,open)-low)/(high-low)>0.6 and math.min(close,open)-low>ta.sma(high-low,14)
twopinbar = onepinbar and onepinbar[1]
notatbottom = low>ta.lowest(low[1],10)
    // Parallel
bigred = (open-close)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
biggreen = (close-open)/(high-low)>0.8 and high-low>ta.sma(high-low,14)
parallel = bigred[1] and biggreen  
atbottom = low==ta.lowest(low,10)

// Enter long trades (replace this entry condition)
longCondition = parallel 
if (longCondition and canTakeTrades and  strategy.position_size == 0 and (side == "Long" or side == "Both"))
    R:= close-longStop
    shares:= risk/R
    strategy.entry("Long", strategy.long,qty=shares)

// Enter short trades (replace this entry condition)
shortCondition = parallel
if (shortCondition and canTakeTrades and strategy.position_size == 0 and (side == "Short" or side == "Both"))
    R:= shortStop - close
    shares:= risk/R
    strategy.entry("Short", strategy.short,qty=shares)

// Update trailing stop
if (strategy.position_size > 0)
    if (na(trailingStopLoss) or longStop > trailingStopLoss)
        trailingStopLoss := longStop
else if (strategy.position_size < 0)
    if (na(trailingStopLoss) or shortStop < trailingStopLoss)
        trailingStopLoss := shortStop
else
    trailingStopLoss := na

// Exit trades with trailing stop
strategy.exit("Long Exit",  "Long",  stop=trailingStopLoss, limit = E + rr*R )
strategy.exit("Short Exit", "Short", stop=trailingStopLoss, limit = E - rr*R)

//Close trades at RSI extreme
if ta.rsi(high,14)>RSIup and RSIexit == "Yes"
    strategy.close("Long")
if ta.rsi(low,14)<RSIdown and RSIexit == "Yes"
    strategy.close("Short")

// Draw stop loss 
plot(trailingStopLoss, "Stop Loss", color.red, 1, plot.style_linebr)

Có liên quan

Thêm nữa