Chiến lược giao dịch theo đà dựa trên đột phá phạm vi giá trong ngày kết hợp với tối ưu hóa chỉ báo EMA

EMA SL RR SAST EMAs
Ngày tạo: 2025-02-21 13:20:45 sửa đổi lần cuối: 2025-02-21 13:20:45
sao chép: 1 Số nhấp chuột: 351
2
tập trung vào
319
Người theo dõi

Chiến lược giao dịch theo đà dựa trên đột phá phạm vi giá trong ngày kết hợp với tối ưu hóa chỉ báo EMA Chiến lược giao dịch theo đà dựa trên đột phá phạm vi giá trong ngày kết hợp với tối ưu hóa chỉ báo EMA

Tổng quan

Chiến lược này là một chiến lược giao dịch trong ngày kết hợp các đợt phá vỡ giá và EMA của chỉ số ngày trước. Chiến lược này giao dịch bằng cách xác định thời điểm cao nhất hoặc thấp nhất của ngày giao dịch trước khi giá phá vỡ, kết hợp với tín hiệu xác nhận của EMA nhanh và chậm. Chiến lược này tập trung vào việc nắm bắt các động thái giá ngắn hạn, quản lý rủi ro bằng cách thiết lập số điểm dừng cố định và tỷ lệ lợi nhuận rủi ro.

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

Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:

  1. Sử dụng hàm request.security để lấy các điểm cao và thấp của ngày giao dịch trước đó như là phạm vi giá quan trọng.
  2. Tính trung bình di chuyển chỉ số 9 chu kỳ và 21 chu kỳ (EMAs) để xác nhận xu hướng.
  3. Khi giá vượt qua đỉnh một ngày trước và EMA nhanh trên EMA chậm, kích hoạt nhiều tín hiệu.
  4. Kích hoạt tín hiệu giảm giá khi giá vượt mức thấp một ngày trước và EMA nhanh dưới EMA chậm.
  5. Quản lý rủi ro của mỗi giao dịch bằng cách thiết lập số điểm dừng lỗ cố định (30 điểm) và tỷ lệ lợi nhuận rủi ro (2.0)
  6. Có thể chọn lọc thời gian giao dịch, hỗ trợ giao dịch trong một khoảng thời gian nhất định (vùng thời gian SAST).

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

  1. Cấu trúc rõ ràng, logic đơn giản: Chiến lược sử dụng logic phá giá dễ hiểu và dễ thực hiện.
  2. Quản lý rủi ro hoàn hảo: Kiểm soát rủi ro nghiêm ngặt được thực hiện bằng cách thiết lập điểm dừng cố định và tỷ lệ lợi nhuận rủi ro.
  3. Quản lý thời gian linh hoạt: Chức năng lọc thời gian giao dịch tùy chọn cho phép giao dịch vào thời điểm thị trường hoạt động nhất.
  4. Cơ chế xác nhận đa dạng: kết hợp với sự phá vỡ giá và xác nhận xu hướng của EMA, giảm nguy cơ tín hiệu sai.
  5. Mức độ tự động hóa cao: Chiến lược có thể được thực hiện hoàn toàn tự động, giảm sự can thiệp của con người.

Rủi ro chiến lược

  1. Rủi ro phá vỡ giả: Giá có thể rút lui nhanh chóng sau khi phá vỡ, dẫn đến dừng lỗ.
  2. Rủi ro trượt: Trong thời gian biến động cao, giá giao dịch thực tế có thể có sai lệch đáng kể so với giá tín hiệu.
  3. Rủi ro dừng cố định: Đặt điểm dừng có thể không phù hợp với tất cả các điều kiện thị trường.
  4. Rủi ro biến động thị trường: Có thể có quá nhiều tín hiệu giao dịch trong thời gian biến động thấp.

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

  1. Tối ưu hóa dừng động: Có thể xem xét điều chỉnh số điểm dừng động theo biến động của thị trường.
  2. Tối ưu hóa thời gian giao dịch: Tối ưu hóa thiết lập cửa sổ thời gian giao dịch thông qua phân tích dữ liệu lịch sử.
  3. Tăng cường lọc tín hiệu: Thêm số lượng giao dịch hoặc chỉ số tỷ lệ dao động như một điều kiện lọc bổ sung.
  4. Tối ưu hóa tham số EMAs: Xác định thiết lập chu kỳ EMA tối ưu bằng cách đo lại.
  5. Tối ưu hóa quản lý vị thế: giới thiệu cơ chế quản lý vị thế động dựa trên tỷ lệ biến động.

Tóm tắt

Chiến lược này thực hiện một hệ thống giao dịch trong ngày đáng tin cậy bằng cách kết hợp các đợt phá vỡ giá và xác nhận xu hướng của EMA. Ưu điểm cốt lõi của chiến lược là cấu trúc logic rõ ràng và cơ chế quản lý rủi ro tốt.

Mã nguồn chiến lược
/*backtest
start: 2025-02-16 17:00:00
end: 2025-02-18 14:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("GER40 Momentum Breakout Scalping", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=1)

//———— Input Parameters —————
stopLossPoints = input.int(30, title="Stop Loss (Pips)", minval=1)  // Updated to 30 pips
riskReward    = input.float(2.0, title="Risk Reward Ratio", step=0.1)
useTimeFilter = input.bool(false, title="Use Time Filter? (Sessions in SAST)")
// Define sessions (SAST) if needed
session1 = "0900-1030"
session2 = "1030-1200"
session3 = "1530-1730"

//———— Time Filter Function —————
inSession = true
if useTimeFilter
    // TradingView's session function uses the chart's timezone.
    // Adjust the session times if your chart timezone is not SAST.
    inSession = time(timeframe.period, session1) or time(timeframe.period, session2) or time(timeframe.period, session3)

//———— Get Previous Day's High/Low —————
// Fetch the previous day's high/low using the daily timeframe. [1] refers to the previous completed day.
prevHigh = request.security(syminfo.tickerid, "D", high[1])
prevLow  = request.security(syminfo.tickerid, "D", low[1])

//———— Calculate EMAs on the 1-minute chart —————
emaFast = ta.ema(close, 9)
emaSlow = ta.ema(close, 21)

//———— Define Breakout Conditions —————
longCondition  = close > prevHigh and emaFast > emaSlow
shortCondition = close < prevLow  and emaFast < emaSlow

//———— Entry & Exit Rules —————
if inSession
    // Long breakout: Price breaks above previous day's high
    if (longCondition)
        strategy.entry("Long", strategy.long)
        strategy.exit("Exit Long", "Long", 
          stop = strategy.position_avg_price - stopLossPoints * syminfo.mintick, 
          limit = strategy.position_avg_price + stopLossPoints * riskReward * syminfo.mintick)
    
    // Short breakout: Price breaks below previous day's low
    if (shortCondition)
        strategy.entry("Short", strategy.short)
        strategy.exit("Exit Short", "Short", 
          stop = strategy.position_avg_price + stopLossPoints * syminfo.mintick, 
          limit = strategy.position_avg_price - stopLossPoints * riskReward * syminfo.mintick)

//———— Plot Indicators & Levels —————
plot(emaFast, color=color.blue, title="EMA 9")
plot(emaSlow, color=color.red, title="EMA 21")
plot(prevHigh, color=color.green, style=plot.style_linebr, title="Prev Day High")
plot(prevLow, color=color.maroon, style=plot.style_linebr, title="Prev Day Low")