Chiến lược mua và bán theo xu hướng là một chiến lược giao dịch theo xu hướng đơn giản.
Chiến lược này sử dụng Đường trung bình di chuyển đơn giản (SMA) để xác định hướng xu hướng. Trong xu hướng tăng, khi hành động của nến cung cấp một
Chiến lược này cũng sử dụng %K và %D của Trình dao động Blanchflower để xác định xu hướng. Nó sẽ đóng vị trí và giao dịch theo hướng ngược lại khi %K vượt trên %D. Ngoài ra, đường MACD và đường tín hiệu hoạt động như bộ lọc để chỉ nhận các giao dịch phù hợp với hướng xu hướng được xác định bởi MACD và tín hiệu.
Chiến lược có thể chỉ đi dài, ngắn hoặc cả hai. Tháng bắt đầu và năm cho phép kiểm tra ngược từ thời điểm đó đến bây giờ. Tất cả các tham số như thời gian SMA, thời gian %K, thời gian %D, tham số MACD vv có thể tùy chỉnh.
Những rủi ro chính của chiến lược này là:
Chiến lược có thể được cải thiện trong các khía cạnh sau:
Chiến lược mua và bán theo xu hướng có một logic đơn giản và thẳng thắn để giao dịch rút lui trong các xu hướng được xác định bởi SMA và được lọc bởi các chỉ số. Các thông số điều chỉnh tinh tế và kiểm soát rủi ro có thể dẫn đến kết quả tốt, nhưng việc đóng gói kết hợp vẫn cần thiết để ngăn ngừa quá mức và cải thiện độ bền.
/*backtest start: 2022-10-10 00:00:00 end: 2023-10-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Higher High / Lower Low Strategy", overlay=true) // Getting inputs longOnly = input(true, title="Long or Short Only") useMACD = input(true, title="Use MACD Filter") useSignal = input(true, title="Use Signal Filter") //Filter backtest month and year startMonth = input(10, minval=1, maxval=12, title="Month") startYear = input(2020, minval=2000, maxval=2100, title="Year") //Filter funtion inputs periodA = input(20, minval=1, title="Period SMA") periodK = input(5, minval=1, title="Period %K") fast_length = input(title="Period Fast", type=input.integer, defval=5) slow_length = input(title="Period Slow", type=input.integer, defval=20) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30) //Calculations smoothD = 3 //input(3, minval=1, title="Smooth %D") smoothK = 2 //input(2, minval=1, title="Smooth %K") ma50 = sma(close, periodA) k = sma(stoch(close, high, low, periodK), smoothK) - 50 d = sma(k, smoothD) macd = ema(close,fast_length) - ema(close,slow_length) signal = ema(macd,signal_length) hist = macd - signal if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)// if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d)) if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1])) strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE") if (k < k[1]) strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX") if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear) if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1])) strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE") if (k > k[1]) strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)