Chiến lược đột phá trung bình động điểm duy nhất là một chiến lược giao dịch định lượng dựa trên Chande Momentum Oscillator. Nó phát hiện khi nào thị trường đang trong giai đoạn hợp nhất bằng cách tính toán sự thay đổi động lực của giá. Khi đường Chande Momentum vượt qua đường mua hoặc giảm xuống dưới đường bán, các giao dịch dài hoặc ngắn sẽ được thực hiện phù hợp.
Chiến lược đầu tiên tính toán sự thay đổi động lực giámomm
, sau đó tách nó thành động lực tích cựcm1
và động lực âmm2
Sau đó, nó tổng hợp động lực tích cực và tiêu cực trong một thời gian nhìn lại vàosm1
vàsm2
Cuối cùng, Chande Momentum OscillatorchandeMO
Chỉ số dao động xung quanh đường không. Các phép đọc trên không cho thấy động lực tăng mạnh hơn, trong khi các phép đọc dưới không cho thấy động lực giảm mạnh hơn.
Khi đường Chande Momentum vượt qua trên đường mua từ mức thấp hơn, nó báo hiệu rằng giá đang thoát khỏi xu hướng giảm và sẵn sàng bắt đầu xu hướng tăng. Chiến lược sẽ đi dài. Khi đường giảm xuống dưới đường bán từ mức cao hơn, các vị trí ngắn sẽ được bắt đầu.
Một số cách để cải thiện bao gồm sử dụng các đường mua / bán năng động, lọc tín hiệu với các chỉ số khác và thực hiện dừng lỗ để kiểm soát rủi ro.
Chiến lược đột phá trung bình động điểm duy nhất xác định các điểm chuyển đổi xu hướng từ xu hướng giảm đến củng cố sang xu hướng tăng bằng cách sử dụng Chande Momentum Oscillator, cho phép giao dịch mua thấp bán cao. Mặc dù đơn giản và trực quan, cải tiến trong điều chỉnh tham số, lọc tín hiệu và kiểm soát rủi ro có thể cải thiện hơn nữa hiệu suất.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //* Backtesting Period Selector | Component *// //* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *// //* https://www.tradingview.com/u/pbergden/ *// //* Modifications made *// testStartYear = input(2021, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(10, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(999999, "Backtest Stop Year") testStopMonth = input(9, "Backtest Stop Month") testStopDay = input(26, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true /////////////// END - Backtesting Period Selector | Component /////////////// strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2) length = input(9, minval=1) src = input(close, "Price", type = input.source) momm = change(src) f1(m) => m >= 0.0 ? m : 0.0 f2(m) => m >= 0.0 ? 0.0 : -m m1 = f1(momm) m2 = f2(momm) sm1 = sum(m1, length) sm2 = sum(m2, length) percent(nom, div) => 100 * nom / div chandeMO = percent(sm1-sm2, sm1+sm2) plot(chandeMO, "Chande MO", color=color.blue) hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line") buyline= input(-80) sellline= input(80) hline(buyline, color=color.gray) hline(sellline, color=color.gray) if testPeriod() if crossover(chandeMO, buyline) strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd") // strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss if crossunder(chandeMO, sellline) strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd") // strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss // remember to alert as {{strategy.order.alert_message}}