Strategi Pembalikan Band Volatiliti Bitcoin

Penulis:ChaoZhang, Tarikh: 2023-10-12 17:38:39
Tag:

Ringkasan

Strategi ini adalah sistem pullback yang direka untuk sekuriti dengan turun naik yang tinggi, jadi secara semula jadi Bitcoin adalah pilihan yang sangat baik untuk berdagang ini. Ini boleh digunakan baik pada carta harian atau pada jangka masa yang lebih rendah (saya mendapati hasil yang baik pada jangka masa 3 jam tetapi belum diuji pada apa-apa di bawah 1 jam).

Logika Strategi

Strategi ini mengira turun naik dengan membandingkan perubahan harga penutupan 2 lilin sebelumnya, dan menggunakan perubahan harga ini untuk menjana purata bergerak. Sebuah band dibungkus di sekitar purata bergerak dengan penyimpangan standard 1 untuk jalur dalam dan 2 untuk jalur luar. Jika harga berada di atas penapis MA (purata bergerak) yang telah ditetapkan sebelumnya maka ditentukan bahawa kita berada dalam trend menaik jadi strategi akan mengeluarkan isyarat apabila kita berada dalam trend menaik dan terdapat penurunan yang menyebabkan jalur penyimpangan dalaman yang lebih rendah meningkat, tetapi jika harga berterusan dan jatuh melalui jalur penyimpangan luar maka isyarat beli tidak akan dikeluarkan kerana isu ini menjejaskan bahawa lonjakan turun naik terlalu besar. Anda dapat melihat lonjakan berlaku pada penunjuk di mana peristiwa itu berwarna hijau. Kemudian untuk pembelian / jual pendek akan ada lonjakan di bawah latar belakang dalaman dan kita telah menetapkan semula untuk MA, dengan penunjuk ini menunjukkan pada warna merah.

Pengguna boleh menukar julat tarikh yang ingin mereka uji, tempoh purata bergerak untuk penjejakan turun naik dan penyimpangan jalur dalaman dan luar. Pada BTC, saya meninggalkan jalur penyimpangan dalaman dan penyimpangan luar pada tetapan standard tetapi mendapati penjejakan turun naik 3 tempoh baik untuk perdagangan carta 1 hari dan penjejakan turun naik 5 tempoh baik untuk carta 3 jam. Oleh kerana ini bukan strategi beli dan tahan maka untuk perdagangan, anda mungkin ingin berpegang pada duit syiling yang paling cair supaya anda dapat masuk dan keluar dengan sangat cepat di mana-mana bursa. Jika anda ingin memutar ini pada pasaran yang kurang berubah maka mengubah jalur penyimpangan dalaman menjadi ~ 0.75 akan berfungsi dengan baik di pelbagai pasaran saham yang mungkin.

Kelebihan Strategi

  • Menggunakan perdagangan turun naik untuk menangkap titik perubahan pasaran
  • Perdagangan kedua-dua panjang dan pendek, keuntungan dalam pasaran naik dan turun
  • Tetapan parameter standard mudah digunakan
  • Parameter boleh dengan mudah dioptimumkan untuk asas yang berbeza
  • Tetapan stop loss dan mengambil keuntungan yang munasabah membantu mengunci keuntungan

Risiko Strategi

  • Risiko kerugian yang lebih besar terhadap matawang asas dengan turun naik yang tinggi
  • Pertukaran panjang/pendek yang kerap menimbulkan kos perdagangan yang lebih tinggi
  • Operasi jangka pendek memerlukan pemantauan pasaran yang ketat
  • Sukar untuk menghentikan kerugian apabila kecairan pasaran rendah
  • Penyesuaian parameter yang buruk boleh membawa kepada perdagangan berlebihan

Kaedah Pengurangan Risiko:

  1. Pilih aset asas yang mudah berubah, kawalan saiz kedudukan.

  2. Mengoptimumkan parameter untuk mengurangkan perdagangan yang tidak berkesan.

  3. Gunakan stop loss dan ambil keuntungan, pengurusan wang yang ketat.

  4. Fokus pada kecekapan pelaksanaan, pilih asas cecair.

  5. Sesuaikan parameter agar sesuai dengan ciri asas yang berbeza.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan tempoh purata bergerak untuk mengesan volatiliti yang lebih baik dari instrumen asas yang berbeza.

  2. Mengatur parameter rentang turun naik untuk lebih sesuai dengan julat turun naik asas tertentu.

  3. Tambah penapis lain seperti lonjakan kelantangan untuk mengesahkan isyarat lebih lanjut.

  4. Menggunakan teknik pembelajaran mesin untuk mengoptimumkan parameter secara dinamik untuk kebolehsesuaian.

  5. Uji pada jangka masa frekuensi yang lebih tinggi untuk menangkap lebih banyak peluang perdagangan.

  6. Tambah pergerakan stop loss / mengambil keuntungan untuk mengunci keuntungan lebih banyak.

  7. Gabungkan dengan penunjuk atau model lain untuk membina strategi portfolio kuantitatif.

Ringkasan

Strategi secara keseluruhan agak mudah dan intuitif, mengenal pasti pembalikan melalui penunjuk turun naik untuk menangkap titik perubahan pasaran. Terdapat ruang pengoptimuman yang besar dengan menyesuaikan parameter dan menggabungkan penunjuk teknikal lain untuk meningkatkan kestabilan dan keuntungan. Walau bagaimanapun, peniaga perlu menyedari masalah overfit dan kurva yang sesuai. Strategi ini lebih sesuai untuk perdagangan jangka pendek, memerlukan pengurusan wang yang ketat untuk mengawal risiko. Jika dikuasai dengan betul, ia boleh menjadi alat yang kuat untuk berdagang cryptocurrency turun naik tinggi.


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




Lebih lanjut