Strategi Pembalikan Jalur Volatiliti Bitcoin


Tarikh penciptaan: 2023-10-12 17:38:39 Akhirnya diubah suai: 2023-10-12 17:38:39
Salin: 0 Bilangan klik: 823
1
fokus pada
1702
Pengikut

Gambaran keseluruhan

Strategi ini adalah sistem penarikan balik yang direka untuk sekuriti yang sangat tidak menentu, dan oleh itu Bitcoin adalah jenis perdagangan yang sangat ideal. Strategi ini boleh digunakan pada carta hari atau jangka masa yang lebih rendah (saya mendapati hasil yang baik pada jangka masa 3 jam, tetapi tidak diuji di bawah 1 jam).

Prinsip Strategi

Strategi ini mengira turun naik dengan membandingkan perubahan harga penutupan dua garis K terdahulu, dan menggunakan perubahan harga ini untuk menghasilkan purata bergerak. Pada garis purata bergerak, satu pita standard deviasi dibungkus, 1 standard deviasi dalaman dan 2 standard deviasi luar. Jika harga lebih tinggi daripada penapis rata-rata bergerak yang ditetapkan, maka kita berada dalam trend menaik, jadi pada masa trend menaik, isyarat beli dikeluarkan jika ada penarikan balik yang menyebabkan pita selisih standard dalaman dipotong. Tetapi jika harga terus turun dan menembusi pita selisih standard luar, isyarat beli tidak akan dikeluarkan, kerana menunjukkan bahawa kadar pergerakan dipotong terlalu besar.

Pengguna boleh mengubah julat tarikh yang mereka mahu uji, mengira purata bergerak dan selisih piawai dalaman dan luaran bagi kadar turun naik. Bagi bitcoin, saya mengekalkan selisih piawai dalaman dan luaran pada tetapan piawai, tetapi mendapati bahawa pelacakan kadar turun naik 3 kitaran baik untuk perdagangan carta 1 hari dan pelacakan kadar turun naik 5 kitaran baik untuk perdagangan carta 3 jam. Oleh kerana ini bukan strategi beli dan pegang, anda mungkin ingin berpegang pada mata wang yang paling bergerak untuk dapat masuk dan keluar dengan cepat di mana-mana bursa.

Kelebihan Strategik

  • Berdagang dengan kadar turun naik untuk menangkap titik perubahan pasaran
  • Perdagangan dua hala, keuntungan dalam pasaran naik dan turun
  • Tetapan parameter standard mudah digunakan
  • Parameter boleh dioptimumkan dengan mudah untuk menyesuaikan diri dengan standard yang berbeza
  • Penetapan Stop Loss dan Stop Loss yang Rasional dan menguntungkan untuk mengunci keuntungan

Risiko Strategik

  • Risiko peningkatan kerugian dalam tanda pergerakan yang tinggi
  • Pertukaran pelbagai ruang yang kerap dan kos transaksi yang tinggi
  • Operasi jangka pendek, perhatikan perubahan pasaran
  • Tidak boleh berhenti apabila kurangnya kecairan
  • Parameter yang tidak betul boleh menyebabkan perdagangan berlebihan

Kaedah menangani risiko:

  1. Memilih tanda turun naik yang sesuai, mengawal kedudukan tunggal.

  2. Optimumkan parameter untuk mengurangkan transaksi yang tidak sah.

  3. Pengurusan kewangan yang ketat.

  4. Berpentingkan kecekapan pelaksanaan urus niaga, memilih mata wang yang baik.

  5. Sesuaikan parameter untuk menyesuaikan ciri-ciri yang berbeza.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan kitaran purata bergerak untuk lebih baik mengesan kadar turun naik dalam pelbagai petunjuk.

  2. Menyesuaikan parameter dalam julat kadar turun naik supaya lebih dekat dengan julat turun naik dalam standard tertentu.

  3. Menambah syarat penapisan lain, seperti peningkatan jumlah transaksi, untuk mengesahkan lebih lanjut isyarat perdagangan.

  4. Menggunakan parameter pengoptimuman dinamik teknologi pembelajaran mesin untuk menjadikan strategi lebih mudah disesuaikan.

  5. Ujian pada jangka masa yang lebih kerap untuk menangkap lebih banyak peluang perdagangan.

  6. Tambah pelacakan mudah alih Stop Loss Stop Loss untuk mengunci lebih banyak keuntungan dalam akaun.

  7. Menubuhkan strategi gabungan kuantitatif yang digabungkan dengan petunjuk atau model lain.

ringkaskan

Strategi ini secara keseluruhannya lebih mudah dan intuitif, menggunakan indikator kadar turun naik untuk mengenal pasti keadaan terbalik untuk menangkap titik perubahan pasaran. Terdapat ruang yang besar untuk pengoptimuman strategi, dan dengan menyesuaikan parameter dan menggabungkan indikator teknikal lain, anda boleh terus meningkatkan kestabilan dan keuntungan strategi.

Kod 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)