Движущаяся средняя RSI Криптокорреляционная стратегия тренда

Автор:Чао Чжан, Дата: 2023-12-12 10:26:21
Тэги:

img

Обзор

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

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

Стратегия основывается на трех показателях:

  1. Индекс относительной силы (RSI): для определения условий перекупления и перепродажи. Выше 51 считается перекупленным, а ниже 49 перепроданным.

  2. Простая скользящая средняя (SMA): 9-дневная SMA ценового закрытия для определения направления тренда.

  3. Рыночная корреляция: использовать общую криптокаппуляцию в качестве ориентира для расчета корреляции с торговым инструментом, заменяя оригинальные столбики корреляционными столбиками для улучшения качества сигнала.

В частности, правила торговли:

Длинный вход: когда RSI пересекает 51 и цена закрытия выше 9-дневной SMA.

Короткий вход: когда RSI пересекается ниже 49 и цена закрытия ниже 9-дневной SMA.

Приобретение прибыли/остановка убытков: 1%/0,1% для длинных, 0,05%/0,03% для коротких.

Существует также временное условие, ограничивающее период торговли.

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

  1. Сочетание показателей тенденции и показателей перекупленности/перепроданности эффективно отслеживает среднесрочные и долгосрочные тенденции.

  2. Корреляция рынка улучшает качество сигнала, избегая ложных тенденций.

  3. Разумная прибыль и стоп-лосс предотвращают увеличение потерь.

  4. Настраиваемый период торговли адаптируется к различным рыночным условиям.

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

  1. Неэффективный на рынках с короткой волатильностью.

  2. Обратная оценка бенчмарка может привести к задержке выхода торговых инструментов.

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

Решения:

  1. Добавить краткосрочные показатели, например, KC, BOLL для обнаружения рыночного режима и остановок.

  2. Улучшить анализ ориентиров для своевременного выхода.

  3. Торгуйте двусторонними инструментами, чтобы отслеживать обратный эффект.

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

  1. Настройка параметров RSI, SMA, прибыли/стоп-лосса на основе рыночной статистики.

  2. Оценить больше комбинаций эталонного показателя и торговли с более высокой корреляцией и ликвидностью.

  3. Сочетать с другими стратегиями, используя эту для средне- и долгосрочных активов.

Заключение

Это оптимизированная и широко адаптируемая средне- и долгосрочная криптовалютная стратегия. Она эффективно сочетает в себе анализ тренда, импульса и корреляции для улучшения торговых решений. Правильное настройка параметров и использование композитов могут значительно повысить его стабильность и прибыльность.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 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/
// © exlux99

//@version=4
strategy(title = "Crypto swing correlation", overlay = true,  pyramiding=1,initial_capital = 1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03)

//time
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 = 2010, title = "From Year", minval = 1970)
 //monday and session 
// 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)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

useCorrelation    = input(true, title="Use Correlation candles?")

symbol = input("BTC_USDT:swap", type=input.symbol)

haClose = useCorrelation ? security(symbol, timeframe.period, close) : close
haOpen  = useCorrelation ? security(symbol, timeframe.period, open) : open
haHigh  = useCorrelation ? security(symbol, timeframe.period, high) : high
haLow   = useCorrelation ? security(symbol, timeframe.period, low) : low

length = input( 50 )
overSold = input( 51 )
overBought = input( 49 )

s = input(title="Source", defval="haClose", options=["haClose", "haOpen", "haHigh", "haLow"])

price = s == "haClose" ? haClose: s == "haOpen" ? haOpen : s == "haHigh" ? haHigh : s == "haLow" ? haLow : na

len = input(8, "Length Moving average", minval=1)
src = price
ma = sma(src, len)


vrsi = rsi(price, length)
long = crossover(vrsi, overSold) and time_cond and price > ma
short = crossunder(vrsi, overBought) and time_cond and price < ma


takeProfit_long=input(1.0, step=0.005)
stopLoss_long=input(0.1, step=0.005)
takeProfit_short=input(0.05, step=0.005)
stopLoss_short=input(0.03, step=0.005)

strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)

strategy.exit("short_tp/sl", "long", profit=close * takeProfit_long / syminfo.mintick, loss=close * stopLoss_long / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
strategy.exit("short_tp/sl", "short", profit=close * takeProfit_short / syminfo.mintick, loss=close * stopLoss_short / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')


Больше