A estratégia BTC Hash Ribbons utiliza o indicador de taxa de hash da rede Bitcoin para ir longo quando a capitulação do minerador termina e a recuperação começa, e ir curto quando os mineradores começam a capitular, a fim de lucrar com as flutuações do ciclo do minerador.
Esta estratégia usa dados do IntoTheBlock para mostrar a taxa de hash diária do Bitcoin na visão de negociação. Ele calcula a média móvel rápida e a média móvel lenta. Quando a média móvel rápida cruza acima da média móvel lenta, ela vai longa, acreditando que a capitulação do minerador terminou e a recuperação começou. Quando a média móvel rápida cruza abaixo da média móvel lenta, ela vai curta, acreditando que os mineradores estão começando a capitular.
Especificamente, a estratégia define duas linhas médias móveis: SignalLine (com duração padrão de 30 dias) e LongLine (com duração padrão de 60 dias). Quando a SignalLine cruza acima da LongLine, é considerada um sinal longo; quando a SignalLine cruza abaixo da LongLine, é considerada um sinal curto. De acordo com o parâmetro de direção, a estratégia abrirá posições longas ou curtas quando o sinal correspondente aparecer.
A maior vantagem desta estratégia é que utiliza as características da própria rede Bitcoin, refletindo os ciclos de expansão e contração dos mineradores através da taxa de hash para gerar sinais de negociação.
Outra vantagem é o pequeno número de parâmetros. Os principais são apenas as configurações de comprimento das médias móveis rápidas e lentas, o que é muito simples sem sobreajuste. Ao mesmo tempo, vários algoritmos são fornecidos para a seleção da média móvel, permitindo ajustes flexíveis.
O principal risco desta estratégia é a qualidade do provedor de dados de taxa de hash. Se houver problemas de qualidade de dados, isso afetará seriamente a precisão dos sinais. Atualmente, o IntoTheBlock fornece dados de boa qualidade, mas sua sustentabilidade também precisa de atenção.
Outro risco é o risco sistémico do próprio mercado. Mesmo que as características da expansão e contração dos mineradores sejam capturadas, ele ainda pode sofrer perdas em caso de grandes flutuações no mercado global. Mais indicadores de mercado precisam ser monitorados para determinar o risco sistêmico.
Considere a combinação com indicadores de preços para aumentar a confiança na abertura de posições, como a combinação de indicadores de padrão de linha K, indicadores de média móvel, etc. Apenas abra posições quando ambos indicam sinais longos ou curtos.
Teste os indicadores de fitas hash baseados em diferentes ciclos para construir estratégias. Por exemplo, use indicadores semanais ou mensais para filtrar ruído demais e determinar inversões de tendência em prazos maiores.
Tente modelos de aprendizado de máquina para determinar os principais pontos de reversão da taxa de hash.
A lógica geral desta estratégia é clara e simples. Ao refletir o ciclo do minerador através dos próprios dados da rede Bitcoin, ele forma sinais de negociação, evitando previsões de preços complexos, dando-lhe uma certa confiabilidade.
/*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")