
Chiến lược này là một chiến lược động lượng hai thang thời gian. Nó dùng đường trung bình di chuyển đơn giản (SMA) để đánh giá xu hướng trên chu kỳ thời gian cấp cao và sử dụng các điểm pivot (PivotLow và PivotHigh) để xác định điểm đảo ngược trên chu kỳ thời gian cấp thấp.
Nguyên tắc chính của chiến lược này là hướng xu hướng của chu kỳ thời gian cấp cao sẽ ảnh hưởng đến xu hướng của chu kỳ thời gian cấp thấp. Khi chu kỳ thời gian cấp cao có xu hướng tăng, sự đảo ngược của chu kỳ thời gian cấp thấp có nhiều khả năng là cơ hội mua; Khi chu kỳ thời gian cấp cao có xu hướng giảm, sự hồi phục của chu kỳ thời gian cấp thấp có thể là cơ hội bỏ phiếu.
Chiến lược động lực hai thang thời gian này sử dụng mối quan hệ giữa các chu kỳ thời gian cấp cao và thấp, bằng cách đánh giá xu hướng xu hướng trong chu kỳ thời gian cấp cao, và nắm bắt các điểm đảo ngược trong chu kỳ thời gian cấp thấp, để thực hiện theo dõi xu hướng và đảo ngược giao dịch. Chiến lược có logic rõ ràng, lợi thế rõ ràng, nhưng đồng thời cũng có một số rủi ro.
/*backtest
start: 2023-04-19 00:00:00
end: 2024-04-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Riester
//@version=5
strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)
n = input.int(20, "Moving Average Period", minval=1)
src = input.source(close, "Source")
high_tf = input.timeframe("240", "Resolution")
pivot_l = input.int(5, "Pivot Let Bars")
pivot_r = input.int(2, "Pivot Right Bars")
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// 1. Define low and high timeframe prices
low_src = src
high_src = request.security(syminfo.tickerid, high_tf, src)
// 2. Use simple moving average to determine trend of higher timeframe (up or down)
high_tf_ma = ta.sma(high_src, n)
plot(high_tf_ma, color=color.yellow)
high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1
// 3. Use pivots to identify reversals on the low timeframe
low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r)
plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r)
low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r)
plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r)
bool long = low_tf_pl and high_tf_trend == 1
bool short = low_tf_ph and high_tf_trend == -1
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
if long
strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)
if short
strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)