Эта стратегия генерирует торговые сигналы путем сравнения индикатора RSI криптовалюты с индикатором RSI индекса криптовалютного рынка, чтобы судить о относительной стоимости криптовалюты по отношению к криптовалютному рынку.
Стратегия позволяет сначала выбрать индекс крипторынка, такой как общая рыночная капитализация, общая рыночная капитализация без Биткоина, рыночная капитализация других монет и т. Д. Она также выбирает более высокую временную рамку криптоиндекса, по умолчанию до ежедневного. Затем она вычисляет RSI выбранной криптовалюты и RSI криптовалютного индекса и генерирует индекс относительной силы на основе их соотношения. Когда индекс относительной силы пересекает указанный параметр, генерируется сигнал покупки. Когда он пересекает ниже, генерируется сигнал продажи.
Основная логика заключается в том, что когда RSI криптовалюты сильнее, чем криптоиндекс, это означает, что монета относительно недооценена по сравнению с рынком и имеет потенциал стать переоцененной, поэтому ее можно купить. Когда RSI монеты слабее, чем рыночный индекс, это означает, что монета относительно переоценена по сравнению с рынком и имеет потенциал стать переоцененной, поэтому ее можно продать.
Самое большое преимущество этой стратегии заключается в том, что она использует индекс относительной силы, который позволяет более точно оценивать криптовалюты, вместо того, чтобы полагаться исключительно на технические показатели одной монеты для принятия решений, избегая ловушки взгляда на вещи в изоляции.
Индекс относительной устойчивости учитывает влияние общей рыночной среды на отдельные монеты и может отражать ритм ротации рынка и ротации секторов, а также извлекать ценные монеты с рынка.
Кроме того, стратегия предусматривает несколько вариантов выбора индексов, которые могут быть оптимизированы для различных рыночных условий, чтобы обеспечить эффективность стратегии.
Основной риск этой стратегии заключается в том, что индекс относительной прочности является лишь инструментом оценки и не может полностью избежать торговых рисков, возникающих из-за технических закономерностей отдельных монет.
Например, если монета вошла в очевидный образец верхнего переворота головы и плеч, и структура рынка изменилась, полагаясь исключительно на относительную силу сигналов покупки может привести к потерям.
Таким образом, стратегия должна сочетать в себе технические закономерности отдельных криптовалют, чтобы избежать неблагоприятных сделок в критических технических точках.
Еще один риск заключается в том, что если выбранный индекс является неуместным и имеет низкую корреляцию с криптовалютой, то показательная сила индекса относительной силы будет в значительной степени скомпрометирована.
Стратегия может быть оптимизирована в следующих аспектах:
Добавьте стратегии стоп-лосса, чтобы сократить убытки вовремя, когда цены изменятся.
Оптимизируйте выбор индекса, сопоставьте различные индексы для разных монет, чтобы увеличить корреляцию.
Добавить несколько комбинаций временных рамок, таких как подтверждение ежедневных сигналов с 4h сигналов, чтобы повысить надежность сигнала.
Добавить алгоритмы машинного обучения для адаптивного определения порога для индекса относительной прочности, вместо использования фиксированных параметров.
Включить другие показатели, такие как анализ настроений, фундаментальный анализ, чтобы сформировать более полную систему оценки.
Стратегия относительной силы оценивает относительную стоимость криптовалют, сравнивая их силу с рыночными индексами, и генерирует торговые сигналы. Ее преимущество заключается в включении измерений анализа рынка и захвате рыночных ритмов. Но у нее также есть риски, которые требуют оптимизации, такие как добавление стоп-лосса, комбинации временных рамок, адаптивный порог и т. Д. Для улучшения производительности. Если правильно реализовать эту стратегию, она может играть важную роль в крипто-алгоритмической торговле.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('RSI correlation with cryptoindices [strategy version]', overlay=false) // Testing Start dates testStartYear = input(2016, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) //Stop date if you want to use a specific range of dates testStopYear = input(2030, 'Backtest Stop Year') testStopMonth = input(12, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false len = input(4, title='length of rsi comparison') correlationcrossover = input(1, title='correlation crossover') IndexSwitch = input.string('CRYPTOCAP:TOTAL2', title='Index selection', options=['CRYPTOCAP:TOTAL2', 'CRYPTOCAP:TOTAL', 'CRYPTOCAP:OTHERS', 'CRYPTOCAP:USDT', 'CRYPTOINDEX:CIX100', 'CRYPTOCAP:BTC.D', 'CRYPTOCAP:BTC']) IndexHTF = input.string('120', title='higher time frame reference index', options=['1', '2', '5', '10', '15', '30', '45', '60', '90', '120', '150', '240', '360', '720', 'D', '3D', 'W', 'M']) switchColor = input(true, 'Color Hull according to trend?') ref = request.security(IndexSwitch, IndexHTF, close[1], lookahead=barmerge.lookahead_on) RSI_ref = ta.rsi(ref, len) RSI_close = ta.rsi(close, len) relative = RSI_ref / RSI_close plot(relative, color=color.new(color.blue, 0)) long = ta.crossover(relative, correlationcrossover) short = ta.crossunder(relative, correlationcrossover) corr = plot(correlationcrossover, color=color.new(color.green, 0), linewidth=1) hullColor = switchColor ? relative > correlationcrossover ? #00ff00 : #ff0000 : #ff9800 //PLOT ///< Frame Fi1 = plot(relative, title='relative', color=hullColor, linewidth=1, transp=50) fill(Fi1, corr, title='Band Filler', color=hullColor, transp=50) if long and testPeriod() strategy.entry("long", strategy.long) if short and testPeriod() strategy.entry("long", strategy.short) // alertcondition(long, title='long', message='long') // alertcondition(short, title='short', message='short')