Tiga Strategi Mengikuti Tren Rata-rata Pergerakan


Tanggal Pembuatan: 2024-02-02 17:30:09 Akhirnya memodifikasi: 2024-02-02 17:30:09
menyalin: 1 Jumlah klik: 567
1
fokus pada
1617
Pengikut

Tiga Strategi Mengikuti Tren Rata-rata Pergerakan

Ringkasan

Strategi ini, yang diberi nama Rising Lightning Ridge, adalah strategi mengikuti tren yang didasarkan pada tiga rata-rata bergerak. Strategi ini menilai tren harga dengan menghitung persilangan garis cepat, garis tengah, dan garis lambat, dan menetapkan harga target dan harga stop loss dengan nilai ATR.

Prinsip Strategi

Strategi ini menggunakan tiga rata-rata bergerak berikut:

  1. Rata-rata bergerak tertimbang 13 hari digunakan untuk menilai tren jangka pendek
  2. Indeks Moving Average 55 Hari, digunakan untuk menilai tren jangka menengah
  3. Rata-rata bergerak sederhana 110 hari digunakan untuk menilai tren jangka panjang

Ketika garis cepat melewati garis tengah, garis tengah melewati garis lambat, dinilai sebagai melihat tren; ketika garis cepat melewati garis tengah, garis tengah melewati garis lambat, dinilai sebagai tren kosong.

Untuk menyaring sebagian dari perdagangan yang berisik, strategi ini juga menyertakan beberapa kondisi tambahan:

  1. Kelima garis K terendah berada di atas garis tengah
  2. Dua garis K pertama memiliki titik rendah di bawah garis tengah.
  3. 1 garis K sebelumnya ditutup di atas garis tengah

Bila kondisi tersebut terpenuhi, maka akan dikeluarkan sinyal untuk melakukan over atau short. Setiap kali hanya memegang satu posisi, maka posisi bisa dibuka lagi setelah posisi kosong atau stop loss.

Target harga dan harga stop loss diatur berdasarkan nilai ATR.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Menggunakan tiga kombinasi rata-rata bergerak untuk menilai tren, menghindari kemungkinan kesalahan penilaian dari satu indikator.
  2. Mengatur beberapa kondisi tambahan untuk memfilter transaksi noise, dapat meningkatkan kualitas sinyal.
  3. ATR Dynamic Stop Loss, yang membantu mengendalikan kerugian tunggal.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Kombinasi rata-rata bergerak dapat memberikan sinyal yang salah dan perlu ditinjau kembali.
  2. ATR yang tidak tepat dapat menyebabkan stop loss yang terlalu longgar atau terlalu ketat.
  3. Tidak bisa memfilter secara efektif lonjakan harga dari kejadian-kejadian mendadak.

Untuk mengendalikan risiko, disarankan untuk menyesuaikan parameter moving average, mengoptimalkan ATR, dan mengatur waktu maksimum untuk menghindari kerugian tunggal yang terlalu besar.

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Uji rata-rata bergerak dari berbagai panjang atau jenis.
  2. Parameter untuk mengoptimalkan kondisi tambahan.
  3. Cobalah indikator lain untuk memprediksi tren, seperti MACD, DMI, dll.
  4. Indikator penggabungan seperti volume transaksi, perbedaan harga dan sinyal penyaringan.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi mengikuti tren yang stabil. Ini terutama bergantung pada arah tren yang ditentukan oleh rata-rata bergerak, dan ada beberapa indikator teknis yang bekerja sama untuk membantu, yang dapat menyaring sebagian dari kebisingan. Meskipun masih ada ruang untuk pengoptimalan lebih lanjut, risiko keseluruhan dapat dikontrol, cocok untuk mengikuti tren garis tengah.

Kode Sumber Strategi
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)