Оциллирующая долго-короткая стратегия переключения криптовалюты на RSI

Автор:Чао Чжан, Дата: 2023-12-25 13:49:48
Тэги:

img

Обзор

Oscillating Long-Short RSI Crypto Switching Strategy - это количественная стратегия торговли, разработанная для криптовалют. Она сочетает в себе технический индикатор RSI с индикатором ICHIMOKU для выявления длинных и коротких сигналов во время колебаний цен и достижения покупки низкого и продажи высокого. Она подходит для средне- и долгосрочных временных рамок, таких как 3-4 часа или дольше.

Логика стратегии

Стратегия основывается главным образом на следующих показателях и правилах:

Показатель ИЧИМОКУ

  • Линия Тенкан: средняя точка наивысшей и наименьшей цены последних 20 баров
  • Линия Киджун: средняя точка самой высокой и самой низкой цены за последние 50 бар.
  • Линия Сенкоу А: средняя точка линии Тенкан и Киджун
  • Линия Senkou B: средняя точка максимальной и минимальной цены за последние 120 бар
  • Чикоу-Лайн: цена закрытия 30 бар.

Индикатор RSI

  • Диапазон от 0 до 100
  • Выше 50 означает бычий сигнал, ниже 50 - медвежий сигнал

Правила въезда
Длинный вход: кросс Тенкан над Киджуном (золотой крест) и разрыв цены через линии Senkou A&B, с RSI выше 50 одновременно
Короткий вход: кросс Тенкан ниже Киджун (кросс смерти) и цена распадается на линии Senkou A&B, с RSI ниже 50 в то же время

Правила выхода
Выход с противоположным сигналом

Стратегия учитывает среднесрочную и долгосрочную тенденции, краткосрочный поток капитала и условия перекупки/перепродажи, чтобы воспользоваться возможностями реверсии во время колебаний.

Анализ преимуществ

1. Суждение, основанное на нескольких показателях, обеспечивает высокую уверенность

Стратегия учитывает тренд и суждение поддержки/сопротивления ICHIMOKU, условия перекупления/перепродажи RSI, а также поток капитала на основе направления тела свечи.

2. Подходит для колебаний, частого получения прибыли

На криптовалютном рынке наблюдаются большие колебания. Эта стратегия может полностью использовать возможности для обратного движения во время колебаний и достигать частых низких покупок и высоких продаж.

3. Предотвращение преследования поднимается и избиение отступает, контролируемый риск

Стратегия всесторонне рассматривает средне- и долгосрочные тенденции и краткосрочные ситуации, чтобы избежать риска преследования роста и превзойти спад.

Анализ рисков

1. Может упустить некоторые трендовые возможности

Стратегия ориентирована в основном на изменение тренда, что может привести к частым сбоям в течение длительных фаз тренда.

Единый символ, не способный диверсифицировать риск

Стратегия торгуется только одним символом и не может диверсифицироваться против систематического рыночного риска.

3. Стоп-лосс при экстремальных движениях

Во время экстремальных рыночных условий, таких как разрыв или пики, может быть задействован стоп-лосс, заставляющий выйти.

Руководство по оптимизации

1. Добавить стоп-лосс для более низких одиночных потерь

Движение стоп-лосса или процент стоп-лосса может быть использовано для блокировки прибыли и предотвращения полного ретрексера.

2. Коррелировать с индексами для диверсификации рыночного риска

Ищите возможности для торговли между высоко коррелирующими символами для диверсификации системного рыночного риска.

Дополнительные фильтры для уменьшения недействительных сделок

Фильтры, такие как волатильность цен или изменения объема, могут быть добавлены, чтобы избежать недействительных сигналов обворота и улучшить уровень прибыльности.

Заключение

Oscillating Long-Short RSI Crypto Switching Strategy сочетает в себе индикаторы ICHIMOKU и RSI для определения точек перехода криптовалют, подходящих для покупки низкой и продажи высокой прибыли во время колебаний. Она также устанавливает правила остановки потери для контроля риска. Стратегию можно еще больше улучшить путем оптимизации механизма остановки потери, диверсификации рисков через корреляцию и добавления условных фильтров, которые стоит тестировать в режиме реального времени.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 3m
basePeriod: 1m
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/
// © exlux99

//@version=4

strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1  )

UseHAcandles    = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low


//Inputs
ts_bars = input(20, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(50, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(120, minval=1, title="Senkou-Span B Bars")
cs_offset = input(30, minval=1, title="Chikou-Span Offset")
ss_offset = input(30, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

//Volatility
//vollength = input(defval=1, title="VolLength")
//voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target")
//Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100)
//MovingAverage = sma(Difference, vollength)
//highvolatility = MovingAverage > voltarget

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

//RSI
change = change(haClose)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? (-1) * change : 0.0
avgGain = rma(gain, 14)
avgLoss = rma(loss, 14)
rs = avgGain / avgLoss
rsi = 100 - (100 / (1 + rs))

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(haClose, cs_offset-1) > 0
cs_cross_bear = mom(haClose, cs_offset-1) < 0
price_above_kumo = haClose > ss_high
price_below_kumo = haClose < ss_low
rsi_bullish = rsi > 50
rsi_bearish = rs < 50
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility

strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond)
strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond)

strategy.close("Long", when=bearish and not short_entry and time_cond)
strategy.close("Short", when=bullish and not long_entry and time_cond)




Больше