Strategi Pembalikan Pita Volatilitas Bitcoin


Tanggal Pembuatan: 2023-10-12 17:38:39 Akhirnya memodifikasi: 2023-10-12 17:38:39
menyalin: 0 Jumlah klik: 823
1
fokus pada
1702
Pengikut

Ringkasan

Strategi ini adalah sistem pullback yang dirancang untuk sekuritas yang sangat fluktuatif, sehingga Bitcoin adalah varietas perdagangan yang sangat ideal. Strategi ini dapat digunakan pada grafik hari atau kerangka waktu yang lebih rendah (saya menemukan hasil yang baik pada kerangka waktu 3 jam, tetapi tidak diuji di bawah 1 jam).

Prinsip Strategi

Strategi ini menghitung volatilitas dengan membandingkan perubahan harga penutupan pada dua garis K sebelumnya dan menggunakan perubahan harga ini untuk menghasilkan rata-rata bergerak. Pada rata-rata bergerak, sebuah pita standar deviasi dibungkus, dengan 1 standar deviasi internal dan 2 standar deviasi eksternal. Jika harga lebih tinggi dari filter rata-rata bergerak yang telah ditetapkan, maka ditentukan bahwa kita berada dalam tren naik, jadi pada saat tren naik, sinyal beli akan dikirim jika ada penarikan yang menyebabkan pita standar deviasi internal tertusuk. Tetapi jika harga terus turun dan melewati pita standar deviasi eksternal, sinyal beli tidak akan dikirim, karena menunjukkan bahwa tingkat pergerakan terlalu tinggi.

Pengguna dapat mengubah rentang tanggal yang mereka ingin uji, menghitung rata-rata pergerakan siklus dan standar deviasi band dalam dan luar dari volatilitas. Untuk bitcoin, saya menyimpan standar deviasi band internal dan eksternal dalam pengaturan standar, tetapi menemukan bahwa pelacakan tingkat volatilitas 3 siklus bagus untuk perdagangan grafik 1 hari, dan pelacakan tingkat volatilitas 5 siklus bagus untuk grafik 3 jam. Karena ini bukan strategi buy and hold, Anda mungkin ingin berpegang pada mata uang yang paling fluktuatif untuk dapat masuk dan keluar dengan cepat di bursa apa pun.

Keunggulan Strategis

  • Trading volatilitas untuk menangkap titik balik pasar
  • Perdagangan dua arah, menguntungkan di pasar naik dan turun
  • Pengaturan parameter standar sederhana dan mudah digunakan
  • Parameter dapat dengan mudah dioptimalkan untuk menyesuaikan dengan standar yang berbeda
  • Stop Loss dan Stop Loss adalah pengaturan yang wajar dan menguntungkan untuk mengunci keuntungan.

Risiko Strategis

  • Ada risiko ekspansi kerugian pada indikator volatilitas tinggi
  • Transaksi multi-saluran sering terjadi, biaya transaksi tinggi
  • Operasi jangka pendek, perhatikan perubahan pasar
  • Tidak ada yang bisa dilakukan untuk mengurangi likuiditas.
  • Parameter yang salah dapat menyebabkan over-trading

Cara Mengatasi Risiko:

  1. Memilih indikator volatilitas yang tepat dan mengontrol posisi tunggal.

  2. Optimalkan parameter untuk mengurangi transaksi yang tidak valid.

  3. Menggunakan Stop Loss, manajemen dana yang ketat.

  4. Memperhatikan efektivitas pelaksanaan transaksi, memilih indikator dengan likuiditas yang baik.

  5. Menyesuaikan parameter untuk menyesuaikan dengan karakteristik standar yang berbeda.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mengoptimalkan siklus moving average untuk lebih baik melacak fluktuasi dari berbagai indikator.

  2. Menyesuaikan parameter band volatilitas agar lebih dekat dengan kisaran volatilitas standar tertentu.

  3. Menambahkan kondisi penyaringan lainnya, seperti volume transaksi yang diperbesar, untuk lebih memvalidasi sinyal transaksi.

  4. Menggunakan teknologi pembelajaran mesin untuk mengoptimalkan parameter secara dinamis, membuat strategi lebih adaptif.

  5. Tes pada frekuensi yang lebih tinggi untuk menangkap lebih banyak peluang perdagangan.

  6. Tambahkan pelacakan seluler Stop Loss Stop Loss, sehingga lebih banyak keuntungan terkunci di akun.

  7. Strategi kombinasi kuantitatif dalam kombinasi dengan indikator atau model lainnya.

Meringkaskan

Strategi ini secara keseluruhan lebih sederhana dan intuitif, menggunakan indikator volatilitas untuk mengidentifikasi reversal dan menangkap titik pivot pasar. Ada banyak ruang untuk mengoptimalkan strategi, dan dapat terus meningkatkan stabilitas dan profitabilitas strategi dengan menyesuaikan parameter dan dikombinasikan dengan indikator teknis lainnya. Namun, pedagang perlu berhati-hati untuk menghindari masalah optimasi berlebihan dan penyesuaian kurva.

Kode Sumber Strategi
/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 4h
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/
// © gary_trades
//This script is designed to be used on volatile securities/tickers so is best suited for day charts on Crypto (particularly good for BTC).
//It takes both long and short trades and the main indicator settings can be changed by the use so they can test for ideal settings for ticker of interest.

//@version=4

strategy("BTC Volatility Band Strategy", shorttitle="Vol Band Strategy", overlay=false, margin_long=100, margin_short=100)

//VOLATILTY
CandleChange = ((close - close[1])/close)*100         //OR CandleChange = ((close[2] - close[1])/close)*100
plot(CandleChange, color=color.red, linewidth = 1)

//VOLATILITY BANDS 
MAlen = input(7, minval=3, maxval=30, title=" MA Length")
MAout = sma(CandleChange, MAlen)
plot(MAout, color=color.black, display=display.none)

InnerBand = input(1.0, minval=0.5, maxval=5, title="Inner Band")
OuterBand = input(2.00, minval=0.5, maxval=10, title="Outer Band")
devInner = InnerBand * stdev(CandleChange, MAlen)
devOuter = OuterBand * stdev(CandleChange, MAlen)

upper1 = MAout + devInner
lower1 = MAout - devInner
b1 = plot(upper1, "Upper Inner", color=color.gray)
b2 = plot(lower1, "Lower Inner", color=color.gray)
upper2 = MAout + devOuter
lower2 = MAout - devOuter
b3 = plot(upper2, "Upper Outer", color=color.gray)
b4 = plot(lower2, "Lower Outer", color=color.gray)
fill(b1, b3, color.rgb(250,145,175,70), title="Background")
fill(b2, b4, color.rgb(250,145,175,70), title="Background")

band1 = hline(25, "Upper Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)
band0 = hline(-25, "Lower Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)

//LONG FILTER
VolFilterL = CandleChange <= lower1 and CandleChange > lower2
SMAFilterL = close[1] > sma(close[1], 50)
PriceFilterL = close > lowest(close,7)
LongFilter = VolFilterL and SMAFilterL and PriceFilterL
bgcolor(LongFilter ? color.new(color.green, 80) : na)

//SHORT FILTER
VolFilterS = CandleChange >= upper1 and CandleChange < upper2
SMAFilterS = close[1] < sma(close[1], 50)
PriceFilterS = close < highest(close,7)
ShortFilter = VolFilterS and SMAFilterS and PriceFilterS
bgcolor(ShortFilter ? color.new(color.red, 80) : na)

//SETTING BACK TEST INPUTS
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)

startDate = timestamp("America/New_York", fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp("America/New_York", toYear, toMonth, toDay, 00, 00)
time_condition = time >= startDate and time <= finishDate

//ORDER DETAILS
Risk = (high[7] - low[7])/ 7
Profit = Risk*1.15
Loss = Risk*0.65

AlertMSG = "New stategy position" + tostring(strategy.position_size)

if (time_condition) 
    strategy.entry("Long", strategy.long, when = LongFilter, alert_message=AlertMSG)
    if (LongFilter)
        LongStop = strategy.position_avg_price - Loss
        LongProfit = strategy.position_avg_price + Profit 
        strategy.exit("TP/SL", "Long", stop=LongStop, limit=LongProfit)

if (time_condition)
    strategy.entry("Short", strategy.short, when = ShortFilter, alert_message=AlertMSG)
    if (ShortFilter)
        ShortStop = strategy.position_avg_price + Loss
        ShortProfit = strategy.position_avg_price - Profit 
        strategy.exit("TP/SL", "Short", stop=ShortStop, limit=ShortProfit)