Chiến lược động lượng thang thời gian kép

SMA
Ngày tạo: 2024-04-25 17:33:02 sửa đổi lần cuối: 2024-04-25 17:33:02
sao chép: 0 Số nhấp chuột: 592
1
tập trung vào
1617
Người theo dõi

Chiến lược động lượng thang thời gian kép

Tổng quan

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 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 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.

Lợi thế chiến lược

  1. Phân tích hai thang thời gian, sử dụng ảnh hưởng của chu kỳ thời gian cấp cao đối với chu kỳ thời gian cấp thấp, làm tăng xác suất thành công của giao dịch.
  2. Sử dụng SMA để xác định hướng xu hướng là đáng tin cậy hơn, sử dụng điểm trung tâm để nắm bắt điểm đảo ngược là chính xác hơn.
  3. Các tham số có thể điều chỉnh, có khả năng thích ứng. Người dùng có thể điều chỉnh thang thời gian cao và thấp, chu kỳ của SMA, tham số của điểm trung tâm, v.v.
  4. Logic là rõ ràng, dễ hiểu và dễ thực hiện.

Rủi ro chiến lược

  1. Rủi ro thay đổi xu hướng. Nếu xu hướng của chu kỳ thời gian cấp cao đột ngột thay đổi, chu kỳ thời gian cấp thấp có thể chưa phản ứng, dẫn đến thất bại của chiến lược.
  2. Rủi ro đặt tham số. Việc đặt 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 chu kỳ SMA quá ngắn có thể dẫn đến giao dịch thường xuyên, chọn quá dài có thể dẫn đến trì hoãn phán đoán xu hướng.
  3. Rủi ro trong tình huống cực đoan. Trong tình huống cực đoan (ví dụ như cơn bão), chiến lược này có thể không hiệu quả.

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

  1. Thêm phán đoán về thay đổi xu hướng. Bạn có thể thêm một số logic để đánh giá xu hướng có thay đổi hay không ở chu kỳ thời gian cấp cao để điều chỉnh giao dịch ở chu kỳ thời gian cấp thấp nhanh hơn.
  2. Lựa chọn tham số tối ưu. Một số 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, v.v.) có thể được sử dụng để tìm các tổ hợp tham số tối ưu nhất.
  3. Tăng kiểm soát rủi ro. Có thể tăng một số biện pháp kiểm soát rủi ro (như dừng lỗ, quản lý vị trí, v.v.) để giảm tổn thất trong các tình huống cực đoan.
  4. Sự kết hợp nhiều yếu tố. Bạn có thể xem xét việc tích hợp các chỉ số hoặc yếu tố khác (như tỷ lệ biến động, khối lượng giao dịch, v.v.) vào chiến lược để tăng cường sự ổn định của chiến lược.

Tóm tắt

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.

Mã nguồn chiến lược
/*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)