Strategi ini bertujuan untuk mendeteksi persentase perubahan harga saham dalam jangka waktu tertentu dan menghasilkan sinyal perdagangan ketika ambang batas melebihi.
Parameter input x mewakili jumlah periode candlestick untuk diperiksa, dengan default 5 untuk lilin 5 menit.
Menghitung persentase perubahan harga penutupan saat ini relatif terhadap harga penutupan x periode yang lalu, disimpan sebagai trueChange1 dan trueChange2.
Parameter input percentChangePos dan percentChangeNeg mewakili perubahan persentase ambang, dengan nilai default 0,4% dan -0,4%.
Ketika trueChange1 lebih besar dari percentChangePos, sinyal beli dibeli. Ketika trueChange2 kurang dari percentChangeNeg, sinyal jual dijual.
Tambahkan teks dan warna latar belakang untuk status beli dan jual.
Tetapkan aturan masuk dan keluar berdasarkan sinyal.
Mengkonfigurasi peringatan dan gambar.
Gunakan perubahan persentase daripada perubahan harga absolut, dapat disesuaikan dengan stok yang berbeda.
Fleksibel menetapkan ambang persentase positif dan negatif untuk mengidentifikasi Bollinger Bands breakout.
Periode deteksi yang dapat disesuaikan untuk mengidentifikasi perubahan tren dalam kerangka waktu yang berbeda.
Alarm yang dapat dikonfigurasi untuk menangkap sinyal penting.
Logika sinyal sederhana dan langsung, mudah dipahami dan digunakan.
Menangkap pembalikan jangka pendek di pasar terbuka.
Perubahan persentase tidak menentukan arah tren, dapat menghasilkan sinyal yang menyesatkan.
Parameter default mungkin tidak cocok untuk semua saham, penyesuaian khusus diperlukan.
Tidak ada stop loss di tempat, tidak dapat membatasi kerugian.
Sinyal yang sering, biaya perdagangan yang berpotensi tinggi.
Tidak dapat menentukan struktur pasar, rentan terhadap whipsaws di berbagai pasar.
Solusi:
Gabungkan dengan indikator tren seperti regresi linier untuk menentukan tren keseluruhan.
Mengoptimalkan parameter berdasarkan karakteristik stok.
Mengimplementasikan stop loss yang tepat.
Menyaring sinyal untuk menghindari perdagangan berlebihan.
Mengukur struktur pasar dari kerangka waktu yang lebih tinggi untuk menghindari whipsaws perdagangan.
Tambahkan mekanisme stop loss seperti trailing stop loss untuk membatasi kerugian.
Tambahkan kondisi filter seperti volume, moving average untuk menghindari whipsaws.
Mengoptimalkan aturan masuk dan keluar dengan indikator seperti MACD.
Gunakan pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.
Sertakan analisis struktur pasar untuk menghindari masalah.
Parameter yang diatur secara dinamis berdasarkan volatilitas dan likuiditas.
Gabungkan dengan analisis kerangka waktu yang lebih tinggi untuk menentukan tren keseluruhan.
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)