BTC 해시 리본 전략은 비트코인 네트워크의 해시 비율 지표를 활용하여 채굴자 항복이 끝나고 회복이 시작되면 장기화하고 채굴자가 항복하기 시작하면 단축하여 채굴자 주기의 변동으로부터 이익을 얻습니다.
이 전략은 IntoTheBlock 데이터를 사용하여 거래 시각에서 Bitcoin의 일일 해시율을 보여줍니다. 빠른 이동 평균과 느린 이동 평균을 계산합니다. 빠른 이동 평균이 느린 이동 평균을 넘을 때, 채굴자 항복이 끝났고 회복이 시작되었다고 믿고 길게 간다. 빠른 이동 평균이 느린 이동 평균을 넘을 때 채굴자가 항복하기 시작한다고 믿고 짧게 간다.
구체적으로, 전략은 두 이동 평균 라인을 정의합니다: 신호 라인 (예정 길이 30 일) 및 롱 라인 (예정 길이 60 일). 신호 라인이 롱 라인 위에 넘어가면 긴 신호로 간주됩니다. 신호 라인이 롱 라인 아래에 넘어가면 짧은 신호로 간주됩니다. 방향 매개 변수에 따라 전략은 해당 신호가 나타나면 긴 또는 짧은 포지션을 열 것입니다.
이 전략의 가장 큰 장점은 비트코인 네트워크 자체의 특성을 활용하여 해시 레이트를 통해 마이너의 팽창 및 수축 주기를 반영하여 거래 신호를 생성한다는 것입니다. 이는 비교적 간단하고 신뢰할 수있는 예측 지표로 네트워크 데이터를 사용하여 비트코인 가격 자체의 복잡한 분석을 피합니다.
또 다른 장점은 작은 수의 매개 변수이다. 주요한 것은 빠른 이동 평균과 느린 이동 평균의 길이 설정에 불과하며, 이는 과잉 조정없이 매우 간단합니다. 동시에 이동 평균 선택에 대한 여러 알고리즘이 제공되며 유연한 조정이 가능합니다.
이 전략의 주요 위험은 해시 레이트 데이터 공급자의 품질이다. 데이터 품질 문제가 발생하면 신호의 정확성에 심각한 영향을 미칠 수 있다. 현재 인토더블록은 양질의 데이터를 제공하지만 지속가능성은 또한 주의가 필요하다.
또 다른 위험은 시장 자체의 체계적 위험입니다. 채굴자의 팽창과 수축의 특성을 포착하더라도 전체 시장에서 큰 변동이 발생할 경우 여전히 손실을 입을 수 있습니다. 시스템적 위험을 결정하기 위해 더 많은 시장 지표를 모니터링해야합니다.
포지션을 열 때 신뢰도를 높이기 위해 가격 지표와 결합하는 것을 고려하십시오. 예를 들어 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")