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

E9 Shark-32 Mô hình Chiến lược đột phá giá định lượng

Tác giả:ChaoZhang, Ngày: 2024-11-12 14:51:17
Tags:

img

Tổng quan

Chiến lược này là một hệ thống giao dịch định lượng dựa trên nhận dạng mô hình, tập trung vào việc xác định và giao dịch mô hình nến Shark-32. Chiến lược phân tích những thay đổi liên tục ở mức cao và thấp, thiết lập các mức giá chính sau khi xác nhận mô hình và thực hiện giao dịch trên những mức này. Nó kết hợp nhận dạng mô hình, theo xu hướng và các yếu tố đột phá giá để tạo ra một hệ thống giao dịch hoàn chỉnh.

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

Nguyên tắc cốt lõi nằm trong việc xác định mô hình Shark-32, đòi hỏi các mức thấp hơn liên tiếp và cao hơn trong hai nến trước đó. Sau khi xác nhận mô hình, chiến lược khóa mức cao và thấp của nến mô hình ban đầu như các mức giá chính. Hệ thống đi vào các vị trí khi giá phá vỡ các mức chính này: các mục nhập dài trên các lần phá vỡ trên mức cao bị khóa và các mục nhập ngắn trên các lần phá vỡ dưới mức thấp bị khóa. Chiến lược sử dụng các đường mục tiêu dự kiến cho các mục tiêu lợi nhuận và các tham số dựa trên tỷ lệ phần trăm để đặt dừng lỗ linh hoạt.

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

  1. Nhận dạng mẫu chính xác: Sử dụng các định nghĩa toán học nghiêm ngặt để xác định các mẫu, tránh phán đoán chủ quan
  2. Quản lý rủi ro toàn diện: Bao gồm các thiết lập mục tiêu dừng lỗ và lợi nhuận rõ ràng
  3. Phản hồi trực quan rõ ràng: Sử dụng các đường màu khác nhau và nền để đánh dấu các mẫu và tín hiệu giao dịch
  4. Các tín hiệu lặp lại được lọc: Chỉ cho phép giao dịch một lần mỗi mô hình, ngăn ngừa giao dịch quá mức
  5. Đặt mục tiêu hợp lý: Đặt mục tiêu lợi nhuận dựa trên chiều rộng mô hình, cung cấp tỷ lệ rủi ro-lợi nhuận tốt

Rủi ro chiến lược

  1. Rủi ro thị trường hỗn loạn: Có thể tạo ra các tín hiệu đột phá sai thường xuyên trên các thị trường khác nhau
  2. Rủi ro trượt: Có thể phải đối mặt với sự trượt đáng kể trên các thị trường chuyển động nhanh
  3. Sự phụ thuộc vào mô hình duy nhất: Sự phụ thuộc quá mức vào một mô hình có thể bỏ lỡ các cơ hội giao dịch khác
  4. Độ nhạy của các tham số: Hiệu suất chiến lược phụ thuộc rất nhiều vào các thiết lập tham số mục tiêu dừng lỗ và lợi nhuận

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

  1. Thêm xác nhận khối lượng: Thêm thay đổi khối lượng để xác nhận hiệu lực đột phá
  2. Thực hiện các bộ lọc môi trường thị trường: Thêm các chỉ số sức mạnh xu hướng để lọc các điều kiện thị trường không thuận lợi
  3. Tối ưu hóa các phương pháp dừng lỗ: Xem xét dừng lỗ năng động để cải thiện khả năng thích nghi chiến lược
  4. Thêm các bộ lọc thời gian: Kết hợp các bộ lọc phiên giao dịch để tránh các giai đoạn biến động cụ thể
  5. Cải thiện quản lý tiền: Thêm mô-đun kích thước vị trí để tối ưu hóa hiệu quả vốn

Tóm lại

E9 Shark-32 Pattern Quantitative Price Breakout Strategy là một hệ thống giao dịch có cấu trúc tốt với logic rõ ràng. Nó xây dựng một chiến lược giao dịch có thể định lượng thông qua các định nghĩa mô hình nghiêm ngặt và các quy tắc giao dịch rõ ràng. Chiến lược có hệ thống quản lý rủi ro toàn diện và phản hồi trực quan rõ ràng, giúp các nhà giao dịch dễ dàng hiểu và thực hiện. Thông qua các hướng tối ưu hóa được đề xuất, có chỗ để cải thiện hơn nữa. Chiến lược này phù hợp với các nhà đầu tư tìm kiếm các phương pháp giao dịch có hệ thống, nhưng phải chú ý đến khả năng thích nghi môi trường thị trường và tối ưu hóa tham số.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
//║                                                                                                             ║
//║ ░▒▓████████▓▒░▒▓███████▓▒░ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓████████▓▒░▒▓███████▓▒░   ░▒▓████████▓▒░▒▓██████▓▒░  ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒   ░▒▓█▓▒░     ░▒▓█▓▒░░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░     ░▒▓█▓▒░░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓██████▓▒░ ░▒▓███████▓▒░.  ░▒▓██████▓▒░ ░▒▓███████▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░            ░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒.  ░▒▓█▓▒░            ░▒▓█▓▒░ ║
//║    ░▒▓█▓▒░   ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒.  ░▒▓████████▓▒░▒▓██████▓▒░  ║
//║                                                                                                             ║
//╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝

//@version=5
strategy("E9 Shark-32 Pattern Strategy with Target Lines", shorttitle="E9 Shark-32 Strategy", overlay=true)

// Inputs for background color settings
bgcolorEnabled = input(true, title="Enable Background Color")
bgcolorColor = input.color(color.new(color.blue, 90), title="Background Color")

// Inputs for bar color settings
barcolorEnabled = input(true, title="Enable Bar Color")
barcolorColor = input.color(color.rgb(240, 241, 154), title="Bar Color")

// Inputs for target lines settings
targetLinesEnabled = input(true, title="Enable Target Lines")
targetLineColor = input.color(color.white, title="Target Line Color")
targetLineThickness = input.int(1, title="Target Line Thickness", minval=1, maxval=5)

// Define Shark-32 Pattern
shark32 = low[2] < low[1] and low[1] < low and high[2] > high[1] and high[1] > high

// Initialize color variables for bars
var color barColorCurrent = na
var color barColor1 = na
var color barColor2 = na

// Update color variables based on Shark-32 pattern
barColorCurrent := barcolorEnabled and (shark32 or shark32[1] or shark32[2]) ? barcolorColor : na
barColor1 := barcolorEnabled and (shark32[1] or shark32[2]) ? barcolorColor : na
barColor2 := barcolorEnabled and shark32[2] ? barcolorColor : na

// Apply the bar colors to the chart
barcolor(barColorCurrent, offset=-2, title="Shark-32 Confirmed Current")
barcolor(barColor1, offset=-3, title="Shark-32 Confirmed Previous Bar 1")
barcolor(barColor2, offset=-4, title="Shark-32 Confirmed Previous Bar 2")

// Variables for locking the high and low of confirmed Shark-32
var float patternHigh = na
var float patternLow = na
var float upperTarget = na
var float lowerTarget = na

// Once Shark-32 pattern is confirmed, lock the patternHigh, patternLow, and target lines
if shark32
    patternHigh := high[2]  // The high of the first bar in Shark-32 pattern
    patternLow := low[2]    // The low of the first bar in Shark-32 pattern

    // Calculate the upper and lower white target lines
    upperTarget := patternHigh + (patternHigh - patternLow)  // Dotted white line above
    lowerTarget := patternLow - (patternHigh - patternLow)   // Dotted white line below

// Initialize variables for the lines
var line greenLine = na
var line redLine = na
var line upperTargetLine = na
var line lowerTargetLine = na

// Draw the lines based on the locked patternHigh, patternLow, and target lines
// if shark32
//     future_bar_index_lines = bar_index + 10

//     // Draw lines based on locked patternHigh and patternLow
//     greenLine := line.new(x1=bar_index[2], y1=patternHigh, x2=future_bar_index_lines, y2=patternHigh, color=color.green, width=2, extend=extend.none)
//     redLine := line.new(x1=bar_index[2], y1=patternLow, x2=future_bar_index_lines, y2=patternLow, color=color.red, width=2, extend=extend.none)

//     // Draw dotted white lines if targetLinesEnabled is true
//     if targetLinesEnabled
//         upperTargetLine := line.new(x1=bar_index[2], y1=upperTarget, x2=future_bar_index_lines, y2=upperTarget, color=targetLineColor, width=targetLineThickness, style=line.style_dotted, extend=extend.none)
//         lowerTargetLine := line.new(x1=bar_index[2], y1=lowerTarget, x2=future_bar_index_lines, y2=lowerTarget, color=targetLineColor, width=targetLineThickness, style=line.style_dotted, extend=extend.none)

//     // Create a box to fill the background between the red and green lines
//     if bgcolorEnabled
//         box.new(left=bar_index[2], top=patternHigh, right=future_bar_index_lines, bottom=patternLow, bgcolor=bgcolorColor)

// -------------------------------------------------------------------------
// Strategy Entry and Exit Parameters
// -------------------------------------------------------------------------

// Input parameters for stop loss
longStopLoss = input.float(1.0, title="Long Stop Loss (%)", minval=0.1)  // Percentage-based stop loss for long
shortStopLoss = input.float(1.0, title="Short Stop Loss (%)", minval=0.1)  // Percentage-based stop loss for short

// Variable to track if a trade has been taken
var bool tradeTaken = false

// Reset the flag when a new Shark-32 pattern is confirmed
if shark32
    tradeTaken := false

// Entry conditions only trigger after the Shark-32 is confirmed
longCondition = ta.crossover(close, patternHigh) and not tradeTaken  // Long entry when close crosses above locked patternHigh
shortCondition = ta.crossunder(close, patternLow) and not tradeTaken  // Short entry when close crosses below locked patternLow

// Trigger long and short trades based on the crossover conditions
if (longCondition)
    label.new(bar_index, high, "Long Trigger", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)
    strategy.entry("Shark-32 Long", strategy.long)
    tradeTaken := true  // Set the flag to true after a trade is taken

if (shortCondition)
    label.new(bar_index, low, "Short Trigger", style=label.style_label_up, color=color.red, textcolor=color.white, size=size.small)
    strategy.entry("Shark-32 Short", strategy.short)
    tradeTaken := true  // Set the flag to true after a trade is taken

// Exit long trade based on the upper target line (upper white dotted line) as take profit
if strategy.position_size > 0
    strategy.exit("Take Profit Long", "Shark-32 Long", limit=upperTarget, stop=close * (1 - longStopLoss / 100))

// Exit short trade based on the lower target line (lower white dotted line) as take profit
if strategy.position_size < 0
    strategy.exit("Take Profit Short", "Shark-32 Short", limit=lowerTarget, stop=close * (1 + shortStopLoss / 100))


Thêm nữa