Dual Timeframe Momentum Strategi

Penulis:ChaoZhang, Tarikh: 2024-04-25 17:33:02
Tag:SMA

img

Ringkasan

Strategi ini adalah strategi momentum jangka masa berganda. Ia menentukan hala tuju trend pada jangka masa yang lebih tinggi menggunakan Purata Bergerak Sederhana (SMA) dan mengenal pasti titik pembalikan pada jangka masa yang lebih rendah menggunakan titik pivot (PivotLow dan PivotHigh). Ia masuk panjang apabila jangka masa yang lebih tinggi menunjukkan trend menaik dan titik pivot menaik muncul pada jangka masa yang lebih rendah, dan masuk pendek apabila jangka masa yang lebih tinggi menunjukkan trend menurun dan titik pivot menurun muncul pada jangka masa yang lebih rendah.

Prinsip Strategi

Prinsip utama strategi ini adalah bahawa arah trend bingkai masa yang lebih tinggi akan mempengaruhi pergerakan bingkai masa yang lebih rendah. Apabila bingkai masa yang lebih tinggi menunjukkan trend menaik, penarikan balik pada bingkai masa yang lebih rendah lebih cenderung menjadi peluang membeli; apabila bingkai masa yang lebih tinggi menunjukkan trend menurun, rebound pada bingkai masa yang lebih rendah lebih cenderung menjadi peluang pendek. Strategi ini menggunakan Purata Bergerak Sederhana (SMA) untuk menentukan arah trend bingkai masa yang lebih tinggi dan titik-titik pivot (PivotLow dan PivotHigh) untuk mengenal pasti titik pembalikan pada bingkai masa yang lebih rendah.

Kelebihan Strategi

  1. Analisis jangka masa berganda, memanfaatkan kesan jangka masa yang lebih tinggi pada jangka masa yang lebih rendah, meningkatkan kebarangkalian perdagangan yang berjaya.
  2. Menggunakan SMA untuk menentukan arah trend agak boleh dipercayai, dan menggunakan titik pivot untuk menangkap titik pembalikan agak tepat.
  3. Pengguna boleh menyesuaikan bingkai masa yang lebih tinggi dan lebih rendah, tempoh SMA, dan parameter titik pivot mengikut keperluan mereka.
  4. Logiknya jelas dan mudah difahami dan dilaksanakan.

Risiko Strategi

  1. Risiko perubahan trend: Jika trend jangka masa yang lebih tinggi tiba-tiba berubah, jangka masa yang lebih rendah mungkin belum bertindak balas, menyebabkan strategi gagal.
  2. Risiko tetapan parameter. Tetapan parameter yang tidak sesuai boleh membawa kepada prestasi strategi yang buruk. Sebagai contoh, memilih tempoh SMA yang terlalu pendek boleh membawa kepada perdagangan yang kerap, sementara memilih yang terlalu lama boleh membawa kepada penilaian trend yang tertinggal.
  3. Risiko keadaan pasaran yang melampau: Dalam keadaan pasaran yang melampau (seperti kenaikan atau kejatuhan yang tajam), strategi ini mungkin gagal kerana jangka masa yang lebih rendah mungkin tidak mengikuti trend jangka masa yang lebih tinggi.

Arahan Pengoptimuman Strategi

  1. Tambah pengesanan perubahan trend. Logik boleh ditambahkan untuk menentukan sama ada trend jangka masa yang lebih tinggi telah berubah untuk menyesuaikan perdagangan pada jangka masa yang lebih rendah dengan lebih cepat.
  2. Mengoptimumkan pemilihan parameter. Kaedah pengoptimuman parameter (seperti algoritma genetik, carian grid, dll.) boleh digunakan untuk mencari kombinasi parameter yang optimum.
  3. Tambah kawalan risiko. Langkah-langkah kawalan risiko (seperti stop-loss, pengurusan kedudukan, dll.) boleh ditambah untuk mengurangkan kerugian dalam keadaan pasaran yang melampau.
  4. Penggabungan pelbagai faktor. Penunjuk atau faktor lain (seperti turun naik, jumlah, dll.) boleh dianggap dimasukkan ke dalam strategi untuk meningkatkan ketahanan.

Ringkasan

Strategi momentum jangka masa berganda ini memanfaatkan hubungan antara jangka masa yang lebih tinggi dan lebih rendah, menentukan arah trend pada jangka masa yang lebih tinggi dan menangkap titik pembalikan pada jangka masa yang lebih rendah untuk mencapai trend berikut dan perdagangan pembalikan. Strategi ini mempunyai logika yang jelas dan kelebihan yang jelas, tetapi juga mempunyai beberapa risiko.


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


Berkaitan

Lebih lanjut