Chiến lược chéo trung bình động kép động

Tác giả:ChaoZhang, Ngày: 2023-10-20 16:44:30
Tags:

img

Tổng quan

Chiến lược này sử dụng chéo trung bình động để xác định hướng động lực giá, bổ sung bằng chéo vàng / chết để đánh giá xu hướng tổng thể, để thực hiện theo xu hướng.

Chiến lược logic

Chiến lược sử dụng EMA và SMA chéo để xác định hướng đà giá. EMA phản ứng nhanh hơn trong khi SMA phản ứng ổn định hơn. Khi EMA vượt qua trên SMA, nó được đánh giá là đà tăng mạnh, đi dài. Khi EMA vượt qua dưới SMA, nó được đánh giá là đà giảm mạnh, đi ngắn.

Ngoài ra, chiến lược này cũng sử dụng sự chéo chéo giữa SMA giai đoạn nhanh và SMA giai đoạn chậm để xác định hướng xu hướng tổng thể. Khi SMA nhanh vượt qua trên SMA chậm, đó là một chữ thập vàng, cho thấy thị trường đang trong xu hướng tăng dài hạn. Khi SMA nhanh vượt qua dưới SMA chậm, đó là một chữ thập chết, cho thấy thị trường đang trong xu hướng giảm dài hạn.

Chiến lược xác định cơ hội dài khi EMA vượt qua trên SMA. Nếu nó là một đường chéo vàng tại thời điểm này, điều đó có nghĩa là đi dài được hỗ trợ bởi cả động lực ngắn hạn và xu hướng dài hạn, đó là thời gian dài tốt hơn. Nếu đó là đường chéo chết, đi dài chỉ được hỗ trợ bởi động lực ngắn hạn và chống lại xu hướng dài hạn, đó là thời gian dài rủi ro hơn.

Phân tích lợi thế

  • Sử dụng MA crossovers để đánh giá động lực và hướng giá
  • Xem xét cả động lực ngắn hạn và xu hướng dài hạn
  • Xác nhận hai chỉ số cải thiện độ tin cậy
  • Có thể thích nghi với các giai đoạn khác nhau bằng cách điều chỉnh các tham số MA
  • Có thể tùy chỉnh để hiển thị / ẩn các tín hiệu giao dịch cụ thể

Phân tích rủi ro

  • MA crossover có sự chậm trễ, có thể bỏ lỡ điểm nhập / xuất tốt nhất
  • SMA định kỳ không thể phản ánh sự thay đổi giá trong thời gian thực
  • Có thể xảy ra sự giao thoa sai giữa các MA dài / ngắn hạn
  • Việc nắm giữ dài có thể làm tăng rủi ro vốn

Rủi ro có thể được giảm bằng cách kết hợp các chỉ số khác để xác nhận tín hiệu, tối ưu hóa thời gian MA hoặc thiết lập stop loss.

Hướng dẫn tối ưu hóa

  • Thêm các bộ lọc khác như khối lượng, Bollinger Bands vv.
  • Thêm chiến lược dừng lỗ
  • Tối ưu hóa thời gian MA
  • Tối ưu hóa quản lý vốn
  • Xem xét kích thước vị trí động

Kết luận

Nhìn chung, đây là một chiến lược theo xu hướng tương đối ổn định và đáng tin cậy. Nó xem xét cả đà giá ngắn hạn và hướng xu hướng dài hạn, tạo ra tín hiệu giao dịch thông qua MA crossover. So với các chiến lược MA đơn, nó có độ tin cậy cao hơn bằng cách kết hợp hai chỉ số để xác nhận. Nhưng như một chiến lược theo xu hướng, tối ưu hóa tham số và kiểm soát rủi ro của nó rất quan trọng. Nó cần thử nghiệm và điều chỉnh lặp đi lặp lại để thực sự nhận ra tiềm năng của nó. Với tối ưu hóa và cải tiến liên tục, chiến lược này có thể trở thành một thành phần có giá trị của danh mục đầu tư định lượng dài hạn.


/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Cryptoluc1d

//@version=4
strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true)

// Create inputs

mom_length = input(title="Momentum Length (EMA=SMA)", defval=50)
bias_length_fast  = input(title="Golden Cross Length (Fast)", defval=50)
bias_length_slow  = input(title="Golden Cross Length (Slow)", defval=100)

// Define MAs

ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration
sma = sma(close, mom_length)
bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias
bias_slow = sma(close, bias_length_slow)

// Define signal conditions

buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias).
buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias).
buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later.
sell = crossunder(ema, sma) // sell when EMA cross under SMA.

// Enable option to hide signals, then plot signals

show_signal = input(title="Show Signals", defval=true)

plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY')
plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY')
plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY')
plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL')

// Define entry and exit conditions

longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish
if (longCondition)
    strategy.entry("BUY TREND", strategy.long)
exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA
strategy.close("BUY TREND", when=exitLong)

// // short conditions. turned off because up only.
// shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish
// if (shortCondition)
//     strategy.entry("SELL TREND", strategy.short)
// exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA
// strategy.close("SELL TREND", when=exitShort)

// Enable option to show MAs, then plot MAs

show_ma = input(title="Show MAs", defval=false)

plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1)
plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1)
plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2)
plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)

Thêm nữa