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 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.
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.
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)