Chiến lược thúc đẩy khung thời gian kép

Tác giả:ChaoZhang, Ngày: 2024-04-25 17:33:02
Tags:SMA

img

Tổng quan

Chiến lược này là một chiến lược động lực khung thời gian kép. Nó xác định hướng xu hướng trên khung thời gian cao hơn bằng cách sử dụng Mức trung bình di chuyển đơn giản (SMA) và xác định các điểm đảo ngược trên khung thời gian thấp hơn bằng cách sử dụng các điểm trục (PivotLow và PivotHigh). Nó đi dài khi khung thời gian cao hơn cho thấy xu hướng tăng và một điểm trục tăng xuất hiện trên khung thời gian thấp hơn, và đi ngắn khi khung thời gian cao hơn cho thấy xu hướng giảm và một điểm trục giảm xuất hiện trên khung thời gian thấp hơn.

Nguyên tắc chiến lược

Nguyên tắc chính của chiến lược này là hướng xu hướng của khung thời gian cao hơn sẽ ảnh hưởng đến sự chuyển động của khung thời gian thấp hơn. Khi khung thời gian cao hơn cho thấy xu hướng tăng, sự rút lui trên khung thời gian thấp hơn có nhiều khả năng là cơ hội mua; khi khung thời gian cao hơn cho thấy xu hướng giảm, sự phục hồi trên khung thời gian thấp hơn có nhiều khả năng là cơ hội mua ngắn. Chiến lược này sử dụng Mức trung bình di chuyển đơn giản (SMA) để xác định hướng xu hướng của khung thời gian cao hơn và các điểm pivot (PivotLow và PivotHigh) để xác định các điểm đảo ngược trên khung thời gian thấp hơn.

Ưu điểm chiến lược

  1. Phân tích khung thời gian kép, tận dụng tác động của khung thời gian cao hơn đối với khung thời gian thấp hơn, làm tăng xác suất giao dịch thành công.
  2. Sử dụng SMA để xác định hướng xu hướng là tương đối đáng tin cậy, và sử dụng các điểm pivot để nắm bắt các điểm đảo ngược là tương đối chính xác.
  3. Các tham số có thể điều chỉnh, làm cho chiến lược có khả năng thích nghi cao. Người dùng có thể điều chỉnh khung thời gian cao hơn và thấp hơn, thời gian của SMA và các tham số của các điểm pivot theo nhu cầu của họ.
  4. Lý thuyết là rõ ràng và dễ hiểu và thực hiện.

Rủi ro chiến lược

  1. Nguy cơ thay đổi xu hướng: Nếu xu hướng của khung thời gian cao hơn đột ngột thay đổi, khung thời gian thấp hơn có thể chưa phản ứng, khiến chiến lược thất bại.
  2. Rủi ro của các thiết lập tham số. Các thiết lập tham số không phù hợp có thể dẫn đến hiệu suất chiến lược kém. Ví dụ, chọn một khoảng thời gian SMA quá ngắn có thể dẫn đến giao dịch thường xuyên, trong khi chọn một khoảng thời gian quá dài có thể dẫn đến đánh giá xu hướng chậm.
  3. Rủi ro của điều kiện thị trường cực đoan: Trong điều kiện thị trường cực đoan (như tăng hoặc giảm mạnh), chiến lược này có thể thất bại vì khung thời gian thấp hơn có thể không theo xu hướng của khung thời gian cao hơn.

Hướng dẫn tối ưu hóa chiến lược

  1. Thêm phát hiện thay đổi xu hướng. Logic có thể được thêm để xác định xem xu hướng của khung thời gian cao hơn đã thay đổi để điều chỉnh giao dịch trên khung thời gian thấp hơn nhanh hơn.
  2. Tối ưu hóa lựa chọn tham số. Các phương pháp tối ưu hóa tham số (như thuật toán di truyền, tìm kiếm lưới, vv) có thể được sử dụng để tìm ra sự kết hợp tham số tối ưu.
  3. Thêm kiểm soát rủi ro: Các biện pháp kiểm soát rủi ro (như dừng lỗ, quản lý vị trí, v.v.) có thể được thêm để giảm lỗ trong điều kiện thị trường cực đoan.
  4. Phối hợp nhiều yếu tố: Các chỉ số hoặc yếu tố khác (như biến động, khối lượng, v.v.) có thể được xem xét để được kết hợp vào chiến lược để cải thiện độ vững chắc của nó.

Tóm lại

Chiến lược động lực khung thời gian kép này tận dụng kết nối giữa khung thời gian cao hơn và thấp hơn, xác định hướng xu hướng trên khung thời gian cao hơn và nắm bắt các điểm đảo ngược trên khung thời gian thấp hơn để đạt được xu hướng theo dõi và giao dịch đảo ngược. Chiến lược có logic rõ ràng và những lợi thế rõ ràng, nhưng cũng có một số rủi ro. Trong tương lai, chiến lược có thể được tối ưu hóa từ các khía cạnh như phát hiện thay đổi xu hướng, tối ưu hóa tham số, kiểm soát rủi ro và hợp nhất đa yếu tố để cải thiện khả năng thích nghi và độ bền của nó.


/*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)


Có liên quan

Thêm nữa