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).
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
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.
Kaedah Pengurangan Risiko:
Pilih aset asas yang mudah berubah, kawalan saiz kedudukan.
Mengoptimumkan parameter untuk mengurangkan perdagangan yang tidak berkesan.
Gunakan stop loss dan ambil keuntungan, pengurusan wang yang ketat.
Fokus pada kecekapan pelaksanaan, pilih asas cecair.
Sesuaikan parameter agar sesuai dengan ciri asas yang berbeza.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan tempoh purata bergerak untuk mengesan volatiliti yang lebih baik dari instrumen asas yang berbeza.
Mengatur parameter rentang turun naik untuk lebih sesuai dengan julat turun naik asas tertentu.
Tambah penapis lain seperti lonjakan kelantangan untuk mengesahkan isyarat lebih lanjut.
Menggunakan teknik pembelajaran mesin untuk mengoptimumkan parameter secara dinamik untuk kebolehsesuaian.
Uji pada jangka masa frekuensi yang lebih tinggi untuk menangkap lebih banyak peluang perdagangan.
Tambah pergerakan stop loss / mengambil keuntungan untuk mengunci keuntungan lebih banyak.
Gabungkan dengan penunjuk atau model lain untuk membina strategi portfolio kuantitatif.
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)