Стратегия BTC Hash Ribbons использует индикатор хэш-коэффициента сети Bitcoin, чтобы идти в длинный путь, когда завершается капитуляция майнеров и начинается восстановление, и идти в короткий путь, когда майнеры начинают капитулировать, чтобы извлечь выгоду из колебаний цикла майнеров.
Эта стратегия использует данные IntoTheBlock для отображения ежедневного хэш-скорости биткоина в торговом виде. Она рассчитывает быстрый скользящий средний и медленный скользящий средний. Когда быстрый скользящий средний пересекает медленный скользящий средний, он длится, полагая, что капитуляция майнера закончилась и восстановление началось. Когда быстрый скользящий средний пересекает ниже медленного скользящего среднего, он становится коротким, полагая, что майнеры начинают капитулировать.
В частности, стратегия определяет две скользящие средние линии: SignalLine (должина по умолчанию 30 дней) и LongLine (длина по умолчанию 60 дней). Когда SignalLine пересекает LongLine, это считается длинным сигналом; когда SignalLine пересекает LongLine, это считается коротким сигналом. Согласно параметру направления, стратегия откроет длинные или короткие позиции, когда появится соответствующий сигнал.
Самое большое преимущество этой стратегии заключается в том, что она использует характеристики самой сети Биткоина, отражая циклы расширения и сокращения майнеров через хэш-скорость для генерации торговых сигналов.
Еще одним преимуществом является небольшое количество параметров. Основными являются только настройки длины быстрых и медленных скользящих средних, что очень просто без перестановки. В то же время для выбора скользящей средней предоставляются несколько алгоритмов, позволяющих гибкую корректировку.
Основным риском этой стратегии является качество поставщика данных с хэш-скоростью. Если есть проблемы с качеством данных, это серьезно повлияет на точность сигналов. В настоящее время 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")