Sumber daya yang dimuat... Pemuatan...

Strategi momentum skala dua waktu

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

双时间尺度动量策略

Pengamatan

Strategi ini adalah strategi momentum dua skala waktu. Strategi ini menggunakan SMA untuk menentukan arah tren pada siklus waktu tingkat tinggi, dan PivotLow dan PivotHigh untuk mengidentifikasi titik balik pada siklus waktu tingkat rendah.

Prinsip Strategi

Prinsip utama dari strategi ini adalah bahwa arah tren dari siklus waktu tingkat tinggi akan mempengaruhi arah tren dari siklus waktu tingkat rendah. Ketika siklus waktu tingkat tinggi menunjukkan tren naik, kemunduran dari siklus waktu tingkat rendah lebih mungkin menjadi peluang membeli; ketika siklus waktu tingkat tinggi menunjukkan tren turun, kemunduran dari siklus waktu tingkat rendah lebih mungkin menjadi peluang kosong. Strategi ini menggunakan rata-rata bergerak sederhana (SMA) untuk menentukan arah tren dari siklus waktu tingkat tinggi, dan menggunakan titik pusat (PivotLow dan PivotHigh) untuk mengidentifikasi titik balik dari siklus waktu tingkat rendah.

Keunggulan Strategis

  1. Analisis skala waktu ganda, memanfaatkan efek siklus waktu tingkat tinggi pada siklus waktu tingkat rendah, meningkatkan probabilitas keberhasilan transaksi.
  2. SMA lebih dapat diandalkan untuk menentukan arah tren, dan titik pembalikan yang lebih akurat untuk menangkap titik pusat.
  3. Parameter yang dapat disesuaikan, adaptif. Pengguna dapat menyesuaikan skala waktu tinggi dan rendah, siklus SMA, parameter titik pusat, dll.
  4. Logika yang jelas, mudah dimengerti dan diimplementasikan.

Risiko Strategis

  1. Risiko mutasi tren. Jika tren pada siklus waktu tingkat tinggi berubah secara tiba-tiba, maka siklus waktu tingkat rendah mungkin belum bereaksi, yang menyebabkan kegagalan strategi.
  2. Risiko pengaturan parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan kinerja strategi yang buruk. Misalnya, memilih siklus SMA yang terlalu pendek dapat menyebabkan perdagangan yang sering dan memilih yang terlalu panjang dapat menyebabkan penentuan tren yang terlambat.
  3. Risiko pasar ekstrim. Dalam pasar ekstrim (seperti jatuhnya harga), strategi ini mungkin gagal. Karena dalam pasar ini, siklus waktu tingkat rendah mungkin tidak mengikuti tren siklus waktu tingkat tinggi.

Kebijakan Optimasi

  1. Meningkatkan penilaian perubahan tren. Beberapa logika dapat ditambahkan untuk menentukan apakah tren siklus waktu tingkat tinggi berubah untuk menyesuaikan perdagangan pada siklus waktu tingkat rendah lebih cepat.
  2. Optimasi pilihan parameter. Beberapa metode optimasi parameter (seperti algoritma genetik, pencarian grid, dll.) dapat digunakan untuk menemukan kombinasi parameter yang optimal.
  3. Meningkatkan pengendalian risiko. Beberapa langkah pengendalian risiko (seperti stop loss, manajemen posisi, dll.) dapat ditambahkan untuk mengurangi kerugian di pasar ekstrim.
  4. Integrasi multi-faktor. Anda dapat mempertimbangkan untuk memasukkan indikator atau faktor lain (seperti tingkat fluktuasi, volume transaksi, dll.) ke dalam strategi untuk meningkatkan stabilitas strategi.

Pengamatan

Strategi momentum skala dua ini memanfaatkan hubungan antara siklus waktu tingkat tinggi dan rendah, dengan menentukan arah tren pada siklus waktu tingkat tinggi, dan menangkap titik balik pada siklus waktu tingkat rendah untuk mencapai tren mengikuti dan perdagangan reversal. Strategi ini memiliki logika yang jelas, keuntungan yang jelas, tetapi juga beberapa risiko. Di masa depan, strategi ini dapat dioptimalkan dari sudut pandang penilaian perubahan tren, optimasi parameter, pengendalian risiko, konvergensi multi-faktor, dll.


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


Artikel terkait

Informasi lebih lanjut