
Chiến lược phá vỡ ngang điểm trung bình đơn là một chiến lược giao dịch định lượng dựa trên chỉ số động lực Chande. Chiến lược này đánh giá thị trường có đang trong giai đoạn thanh toán ngang bằng cách tính toán sự thay đổi động lực của giá hay không.
Chiến lược này đầu tiên tính toán động lực thay đổi giámommSau đó chia nó thành động lượng dương.m1và động lượng âmm2Sau đó tính tổng động lượng dương- âm trong một chu kỳ nhất định.sm1Vàsm2Và cuối cùng là chỉ số động lượng của Chande.chandeMO。 Chỉ số này có 0 là trục trung tâm, khi chỉ số lớn hơn 0 cho thấy sức mạnh tăng lớn hơn sức mạnh giảm, khi nhỏ hơn 0 thì ngược lại。
Khi chỉ số động lực Chande phá vỡ đường mua từ mức thấp, cho thấy giá thoát khỏi giai đoạn giảm xuống và vào giai đoạn chuẩn bị thăng giá, khi đó chiến lược thực hiện giao dịch mua. Khi chỉ số phá vỡ đường bán từ mức cao, giao dịch bán sẽ được thực hiện.
Có thể thiết lập đường mua và bán động hoặc kết hợp với các tín hiệu lọc chỉ số khác. Ngoài ra, bạn cũng nên thiết lập dừng lỗ để kiểm soát rủi ro.
Chiến lược phá vỡ ngang ngang điểm trung bình thông qua chỉ số động lực Chande để xác định điểm chuyển đổi của giá từ giảm xuống, sau đó cân bằng và sau đó tăng lên, để thực hiện mua thấp và bán cao. Chiến lược này đơn giản và thực tế, có thể nắm bắt hiệu quả xu hướng chuyển đổi. Tuy nhiên, các khía cạnh khác như thiết lập tham số và kiểm soát dừng lỗ cần được tối ưu hóa hơn nữa để giảm tín hiệu sai và kiểm soát rủi ro.
/*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}}