Strategi Pembalikan Momentum

Penulis:ChaoZhang, Tanggal: 2023-11-13 10:02:25
Tag:

img

Gambaran umum

Strategi ini bertujuan untuk mendeteksi persentase perubahan harga saham dalam jangka waktu tertentu dan menghasilkan sinyal perdagangan ketika ambang batas melebihi.

Logika Strategi

  1. Parameter input x mewakili jumlah periode candlestick untuk diperiksa, dengan default 5 untuk lilin 5 menit.

  2. Menghitung persentase perubahan harga penutupan saat ini relatif terhadap harga penutupan x periode yang lalu, disimpan sebagai trueChange1 dan trueChange2.

  3. Parameter input percentChangePos dan percentChangeNeg mewakili perubahan persentase ambang, dengan nilai default 0,4% dan -0,4%.

  4. Ketika trueChange1 lebih besar dari percentChangePos, sinyal beli dibeli. Ketika trueChange2 kurang dari percentChangeNeg, sinyal jual dijual.

  5. Tambahkan teks dan warna latar belakang untuk status beli dan jual.

  6. Tetapkan aturan masuk dan keluar berdasarkan sinyal.

  7. Mengkonfigurasi peringatan dan gambar.

Keuntungan

  1. Gunakan perubahan persentase daripada perubahan harga absolut, dapat disesuaikan dengan stok yang berbeda.

  2. Fleksibel menetapkan ambang persentase positif dan negatif untuk mengidentifikasi Bollinger Bands breakout.

  3. Periode deteksi yang dapat disesuaikan untuk mengidentifikasi perubahan tren dalam kerangka waktu yang berbeda.

  4. Alarm yang dapat dikonfigurasi untuk menangkap sinyal penting.

  5. Logika sinyal sederhana dan langsung, mudah dipahami dan digunakan.

  6. Menangkap pembalikan jangka pendek di pasar terbuka.

Risiko

  1. Perubahan persentase tidak menentukan arah tren, dapat menghasilkan sinyal yang menyesatkan.

  2. Parameter default mungkin tidak cocok untuk semua saham, penyesuaian khusus diperlukan.

  3. Tidak ada stop loss di tempat, tidak dapat membatasi kerugian.

  4. Sinyal yang sering, biaya perdagangan yang berpotensi tinggi.

  5. Tidak dapat menentukan struktur pasar, rentan terhadap whipsaws di berbagai pasar.

Solusi:

  1. Gabungkan dengan indikator tren seperti regresi linier untuk menentukan tren keseluruhan.

  2. Mengoptimalkan parameter berdasarkan karakteristik stok.

  3. Mengimplementasikan stop loss yang tepat.

  4. Menyaring sinyal untuk menghindari perdagangan berlebihan.

  5. Mengukur struktur pasar dari kerangka waktu yang lebih tinggi untuk menghindari whipsaws perdagangan.

Peningkatan

  1. Tambahkan mekanisme stop loss seperti trailing stop loss untuk membatasi kerugian.

  2. Tambahkan kondisi filter seperti volume, moving average untuk menghindari whipsaws.

  3. Mengoptimalkan aturan masuk dan keluar dengan indikator seperti MACD.

  4. Gunakan pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.

  5. Sertakan analisis struktur pasar untuk menghindari masalah.

  6. Parameter yang diatur secara dinamis berdasarkan volatilitas dan likuiditas.

  7. Gabungkan dengan analisis kerangka waktu yang lebih tinggi untuk menentukan tren keseluruhan.

Ringkasan

Strategi ini menghasilkan perdagangan dengan membandingkan persentase perubahan harga dengan ambang batas yang telah ditetapkan sebelumnya, menjadikannya strategi pembalikan rata-rata jangka pendek. Keuntungannya terletak pada kesederhanaan, fleksibilitas dan kemampuan untuk menangkap pergerakan pasar yang tiba-tiba. Kekurangannya adalah risiko yang dapat ditangani melalui optimasi dan penggunaan yang tepat dengan analisis tren dan manajemen risiko. Secara keseluruhan, ini memiliki logika yang baik dan dapat menjadi strategi perdagangan jangka pendek yang efektif ketika ditingkatkan dengan benar.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


Lebih banyak