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

Chiến lược giao dịch hai hướng đột phá biến động lớn: Hệ thống nhập ngưỡng dựa trên điểm

Tác giả:ChaoZhang, Ngày: 2024-11-18 16:11:21
Tags:ATRSLTP

img

Tổng quan

Chiến lược này là một hệ thống giao dịch hai hướng dựa trên nến 30 phút, tìm kiếm các cơ hội giao dịch thông qua giám sát biến động giá. Cơ chế cốt lõi liên quan đến việc xác định các biến động giá đáng kể bằng cách sử dụng ngưỡng điểm và thực hiện giao dịch khi xác nhận đột phá. Chiến lược này kết hợp quản lý thời gian nghiêm ngặt, cơ chế dừng lỗ / lấy lợi nhuận và các giao thức quản lý giao dịch để kiểm soát giao dịch tự động.

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

Chiến lược sử dụng nhiều cơ chế lọc để xác định các tín hiệu giao dịch hợp lệ. Nó tính toán phạm vi biến động của mỗi nến 30 phút khi đóng, đánh dấu các cơ hội giao dịch tiềm năng khi phạm vi vượt quá ngưỡng đã thiết lập trước. Để đảm bảo tính hợp lệ của tín hiệu, chiến lược thực hiện các điểm đệm bổ sung, kích hoạt các tín hiệu giao dịch thực tế chỉ khi giá vượt qua vùng đệm này. Hệ thống cho phép cả các vị trí dài và ngắn, nhập dài trên các đột phá tăng và ngắn trên các đột phá giảm, với các mục tiêu lợi nhuận tương ứng và mức dừng lỗ.

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

  1. Quản lý thời gian toàn diện: Các cửa sổ giao dịch hạn chế tránh tín hiệu sai trong thời gian không hoạt động
  2. Giao dịch hai hướng: nắm bắt các cơ hội trong cả hai hướng thị trường, cải thiện hiệu quả vốn
  3. Kiểm soát rủi ro mạnh mẽ: Mức dừng lỗ và lợi nhuận cố định giúp đánh giá và quản lý rủi ro dễ dàng hơn
  4. Tự động hóa cao: Tự động hóa hoàn toàn từ nhận dạng tín hiệu đến thực hiện giao dịch, giảm thiểu sự can thiệp của con người
  5. Cài đặt tham số linh hoạt: Các tham số chính có thể điều chỉnh thích nghi với các điều kiện thị trường khác nhau

Rủi ro chiến lược

  1. Rủi ro phá vỡ sai: Sự biến động lớn có thể dẫn đến phá vỡ sai dẫn đến việc dừng lỗ.
  2. Độ nhạy của tham số: Cài đặt ngưỡng không chính xác có thể gây ra cơ hội bị bỏ lỡ hoặc giao dịch quá mức
  3. Sự phụ thuộc vào môi trường thị trường: Có thể gây ra các lệnh dừng lỗ thường xuyên trên các thị trường khác nhau
  4. Tác động trượt: Giá thực hiện thực tế có thể lệch đáng kể so với giá tín hiệu trong thời gian biến động cao
  5. Rủi ro quản lý vốn: Thiếu các cơ chế định kích thước vị trí có thể dẫn đến rủi ro rủi ro quá mức

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

  1. Thêm lọc xu hướng: Kết hợp các chỉ số xu hướng dài hạn để cải thiện chất lượng tín hiệu
  2. Tối ưu hóa tham số động: Điều chỉnh tự động ngưỡng và tham số dừng lỗ dựa trên biến động thị trường
  3. Xác nhận khối lượng: Thêm các điều kiện lọc khối lượng để tăng độ tin cậy đột phá
  4. Tối ưu hóa stop-loss/take-profit: Thực hiện các lối ra năng động thích nghi với các điều kiện thị trường khác nhau
  5. Tích hợp kích thước vị trí: Điều chỉnh kích thước vị trí một cách năng động dựa trên sức mạnh tín hiệu và biến động thị trường

Kết luận

Đây là một chiến lược giao dịch tự động được thiết kế toàn diện với logic rõ ràng. Thông qua việc lọc điều kiện nghiêm ngặt và kiểm soát rủi ro, chiến lược chứng minh khả năng áp dụng thực tế. Tuy nhiên, việc thử nghiệm kỹ lưỡng và tối ưu hóa trong giao dịch trực tiếp là cần thiết, đặc biệt là trong cài đặt tham số và các khía cạnh kiểm soát rủi ro cần điều chỉnh dựa trên điều kiện thị trường thực tế. Việc thực hiện chiến lược thành công đòi hỏi điều kiện thị trường ổn định và cấu hình tham số thích hợp, với việc thử nghiệm hậu quả rộng rãi được khuyến cáo trước khi triển khai trực tiếp.


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

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")


Có liên quan

Thêm nữa