Strategi Ribbons Hash BTC menggunakan penunjuk kadar hash rangkaian Bitcoin untuk pergi lama apabila penambang menyerah dan pemulihan bermula, dan pergi pendek apabila penambang mula menyerah, untuk mendapat keuntungan daripada turun naik kitaran penambang.
Strategi ini menggunakan data IntoTheBlock untuk menunjukkan kadar hash harian Bitcoin pada pandangan dagangan. Ia mengira purata bergerak pantas dan purata bergerak perlahan. Apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, ia pergi lama, percaya bahawa kapitulasi pelombong telah berakhir dan pemulihan telah bermula. Apabila purata bergerak pantas melintasi di bawah purata bergerak perlahan, ia pergi pendek, percaya bahawa pelombong mula kapitulasi.
Secara khusus, strategi mendefinisikan dua garis purata bergerak: SignalLine (panjang lalai 30 hari) dan LongLine (panjang lalai 60 hari). Apabila SignalLine melintasi di atas LongLine, ia dianggap isyarat panjang; apabila SignalLine melintasi di bawah LongLine, ia dianggap isyarat pendek. Menurut parameter arah, strategi akan membuka kedudukan panjang atau pendek apabila isyarat yang sepadan muncul.
Kelebihan terbesar strategi ini ialah ia menggunakan ciri-ciri rangkaian Bitcoin itu sendiri, mencerminkan kitaran pengembangan dan pengecutan pelombong melalui kadar hash untuk menjana isyarat perdagangan.
Satu lagi kelebihan adalah bilangan kecil parameter. Yang utama adalah hanya tetapan panjang purata bergerak pantas dan perlahan, yang sangat mudah tanpa overfitting. Pada masa yang sama, pelbagai algoritma disediakan untuk pemilihan purata bergerak, yang membolehkan penyesuaian yang fleksibel.
Risiko utama strategi ini adalah kualiti pembekal data kadar hash. Jika terdapat masalah kualiti data, ia akan menjejaskan ketepatan isyarat.
Risiko lain adalah risiko sistemik pasaran itu sendiri. Walaupun ciri-ciri pelombong
Pertimbangkan untuk menggabungkan dengan penunjuk harga untuk meningkatkan keyakinan apabila membuka kedudukan, seperti menggabungkan penunjuk corak K-line, penunjuk purata bergerak, dan lain-lain. Hanya buka kedudukan apabila kedua-duanya menunjukkan isyarat panjang atau pendek.
Uji penunjuk pita hash berdasarkan kitaran yang berbeza untuk membina strategi. Sebagai contoh, gunakan penunjuk mingguan atau bulanan untuk menapis terlalu banyak bunyi bising dan menentukan pembalikan trend pada jangka masa yang lebih besar.
Cuba model pembelajaran mesin untuk menentukan titik pembalikan utama kadar hash. Berbanding dengan purata bergerak parameter tetap, model pembelajaran mesin mungkin lebih baik mensimulasikan ciri-ciri kompleks pembalikan.
Logik keseluruhan strategi ini jelas dan mudah. Dengan mencerminkan kitaran pelombong melalui data sendiri rangkaian Bitcoin, ia membentuk isyarat perdagangan sambil mengelakkan ramalan harga yang kompleks, memberikannya kebolehpercayaan tertentu. Tetapi pengoptimuman dan kombinasi lanjut masih diperlukan untuk mengurangkan kesan risiko sistemik pasaran dan meningkatkan keuntungan yang stabil.
/*backtest start: 2023-01-05 00:00:00 end: 2024-01-11 00:00:00 period: 1d basePeriod: 1h 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/ // © Powerscooter // Since IntoTheBlock only provides daily hashrate data, this chart might look chunky on lower timeframes, even with smoothing. //@version=5 strategy("BTC Hashrate ribbons", overlay = true) enableDirection = input(0, title="Both(0), Long(1), Short(-1)", group="Direction") smoothingS = input.string(title="Smoothing short MA", defval="SMA", options=["SMA", "RMA", "EMA", "WMA"], group="Hashrate Settings") SmoothLengthS = input(30, 'Short MA length', group="Hashrate Settings") smoothingL = input.string(title="Smoothing long MA", defval="SMA", options=["SMA", "RMA", "EMA", "WMA"], group="Hashrate Settings") SmoothLengthL = input(60, 'Long MA length', group="Hashrate Settings") ma_functionS(source, length) => switch smoothingS "RMA" => ta.rma(source, length) "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) => ta.wma(source, length) ma_functionL(source, length) => switch smoothingL "RMA" => ta.rma(source, length) "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) => ta.wma(source, length) HashRate = request.security("INTOTHEBLOCK:BTC_HASHRATE", "D", close) SignalLine = ma_functionS(HashRate, SmoothLengthS) LongLine = ma_functionL(HashRate, SmoothLengthL) plot(ma_functionS(HashRate, SmoothLengthS), "Short MA", color=color.yellow) plot(ma_functionL(HashRate, SmoothLengthL), "Long MA", color=color.blue) LongCondition = ta.crossover(SignalLine, LongLine) ShortCondition = ta.crossunder(SignalLine, LongLine) //Long Entry Condition if LongCondition and (enableDirection == 1 or enableDirection == 0) strategy.entry("Long", strategy.long) if LongCondition and (enableDirection == -1) strategy.close("Short") //Short Entry condition if ShortCondition and (enableDirection == -1 or enableDirection == 0) strategy.entry("Short", strategy.short) if ShortCondition and (enableDirection == 1) strategy.close("Long")