BTC ハッシュリボン戦略

作者: リン・ハーンチャオチャン, 日付: 2024-01-12 12:13:54
タグ:

img

概要

BTCハッシュリボンズ戦略は,ビットコインネットワークのハッシュレート指標を利用して,マイナーが降伏し,回復が始まるとロングで,マイナーが降伏し始めるとショートで,マイナーサイクルの変動から利益を得る.

戦略の論理

この戦略は,IntoTheBlockデータを使用して,取引ビューでBitcoinの日々のハッシュレートを表示します. 急速移動平均とゆっくり移動平均を計算します. 急速移動平均がゆっくり移動平均を超えると,マイナー降伏が終了し,回復が始まると信じ,長引きます. 急速移動平均がゆっくり移動平均を下回ると,マイナーが降伏し始めると信じ,短引きます.

戦略は,シグナルライン (デフォルト長さ30日) とロングライン (デフォルト長さ60日) の2つの移動平均線を定義する.シグナルラインがロングラインを越えると,それはロング信号とみなされ,シグナルラインがロングラインを下回ると,それはショート信号とみなされる.方向パラメータに応じて,戦略は対応する信号が現れたときにロングまたはショートポジションを開く.

利点分析

この戦略の最大の利点は,ビットコインネットワークそのものの特徴を利用し,ハッシュレートを介してマイナーの拡大と収縮サイクルを反映して取引信号を生成することである.これは,比特幣価格そのものの複雑な分析を避け,ネットワークデータを予測指標として使用し,比較的シンプルで信頼性がある.

また,パラメータの数が少ないことも利点である.主なパラメータは,高速移動平均と遅い移動平均の長さ設定のみで,オーバーフィットなしで非常にシンプルである.同時に,移動平均の選択のために複数のアルゴリズムが提供されており,柔軟な調整が可能である.

リスク分析

この戦略の主なリスクは,ハッシュレートデータプロバイダの品質である.データ品質の問題がある場合,信号の正確さに深刻な影響を与える.現在,IntoTheBlockは良好な品質のデータを提供しているが,持続可能性も注意を必要としている.

また,システムリスクは,市場そのもののシステムリスクである.マイナーズの拡大と収縮の特徴が把握されている場合でも,市場全体で大きな変動が発生した場合,依然として損失を被る可能性があります.システムリスクを決定するために,より多くの市場指標を監視する必要があります.

オプティマイゼーションの方向性

ポジションを開設する際の信頼性を高めるために,価格指標と組み合わせることを検討してください.例えば,K線パターン指標,移動平均指標などを組み合わせることです.両方が長または短信号を示す場合にのみポジションを開設します.

戦略を構築するために,異なるサイクルに基づいてハッシュリボン指標をテストします.例えば,あまりにも多くのノイズをフィルターし,より大きなタイムフレームでトレンド逆転を決定するために,毎週または毎月指標を使用します.

ハッシュレートの主要な逆転点を決定するために機械学習モデルを試す.固定パラメータ移動平均と比較して,機械学習モデルは逆転の複雑な特徴をよりよくシミュレートすることができる.

結論

この戦略の全体的な論理は明確でシンプルである.ビットコインネットワークのデータを通じてマイナーサイクルを反映することで,複雑な価格予測を避けながら取引信号を形成し,一定の信頼性を与えます.しかし,市場のシステムリスクの影響を軽減し,安定した収益性を向上させるために,さらなる最適化と組み合わせが必要です.


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

もっと