Многофакторная количественная торговая стратегия, сочетающая динамический RSI и CCI


Дата создания: 2023-11-27 18:54:34 Последнее изменение: 2023-11-27 18:54:34
Копировать: 0 Количество просмотров: 732
1
Подписаться
1617
Подписчики

Многофакторная количественная торговая стратегия, сочетающая динамический RSI и CCI

Обзор

Эта стратегия реализует количественную торговую стратегию, управляемую несколькими факторами, в сочетании с динамическими показателями RSI, показателями CCI и множественными средними значениями MA. Эта стратегия комплексно учитывает тенденции, перекуп и перепродажу, а также различные аспекты, чтобы судить и генерировать торговые сигналы.

Стратегический принцип

Технические показатели

  • Средняя линия MA: рассчитывает среднюю стоимость закрытия за определенный период, чтобы определить тенденцию цен
  • Относительно слабый RSI: как оценить зоны перекупа и перепродажи
  • Индекс CCI: как оценить перекуп и перепродажу
  • Stoch KDJ: оценка случайных отклонений от основного тренда

Торговые сигналы

Сигналы покупки: MA12 на MA26, CCI ниже 100 (перепродажа), Stoch KDJ ниже 80 (перепродажа)

Сигнал продажи: RSI переходит динамическую пониженность, Stoch KDJ выше 80 (перекуп)

Стратегические преимущества

  1. Многофакторный драйв, комплексный анализ, снижение ложных сигналов
  2. Динамический обвал sellable, в реальном времени обнаруживает перекуп и перепродажу
  3. Сочетание тенденций, случайности и основных технологических показателей
  4. Гибкость с использованием множества параметров

Стратегический риск

  1. Многофакторная комбинация слишком сложная, параметры трудно оптимизировать
  2. Высокая связь между эффективностью стратегии и выбором параметров
  3. Необходимо строго оптимизировать параметры в соответствии с количественным процессом
  4. Существует высокий риск кривой соответствия

Оптимизация стратегии

  1. Больше набора данных для тестирования устойчивости стратегий
  2. Тест на оптимальную комбинацию множественных параметров
  3. Увеличение механизма хранения убытков для снижения максимального вывода
  4. Повышение контроля над позициями, чтобы избежать удушения.
  5. Тестирование совместимости контрактов разных сортов

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="ATOM2.0", shorttitle="ATOM V2.0", overlay=false, default_qty_type=strategy.cash, currency=currency.USD, initial_capital=200, default_qty_type=strategy.cash, default_qty_value=100, pyramiding=10)

// Set Parameter MA12
len12 = input(12, minval=1, title="Length")
src12 = input(close, title="Source")
ma12 = sma(src12, len12)
//plot(ma12, color=color.blue, title="MA12")

// Set Parameter MA26
len26 = input(26, minval=1, title="Length")
src26 = input(close, title="Source")
ma26 = sma(src26, len26)
//plot(ma26, color=color.orange, title="MA12")

//Stochastic RSI 14,3,3
smoothK_1 = input(3, minval=1)
smoothD_1 = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src_1 = input(close, title="RSI Source_1")

rsi1 = rsi(src_1, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK_1)
d = sma(k, smoothD_1)
//plot(k, color=color.red)
//plot(d, color=color.yellow)

//Stochastic RSI 5,4,3
smoothK_2 = input(4, minval=1)
smoothD_2 = input(3, minval=1)
lengthRSI_2 = input(5, minval=1)
lengthStoch_2 = input(5, minval=1)
src_2 = input(close, title="RSI Source_2")

rsi2 = rsi(src_2, lengthRSI_2)
k_2 = sma(stoch(rsi2, rsi2, rsi2, lengthStoch_2), smoothK_2)
d_2 = sma(k_2, smoothD_2)
//plot(k_2, color=color.white)
//plot(d_2, color=color.green)

// CCI
cci = cci(close,26)
//plot(cci,color=color.blue)

// Dynamic RSI
DZbuy = 0.1
DZsell = 0.1
Period = 14
Lb = 60

RSILine = rsi(close,Period)
jh = highest(RSILine, Lb)
jl = lowest(RSILine, Lb)
jc = (wma((jh-jl)*0.5,Period) + wma(jl,Period))
Hiline = jh - jc * DZbuy
Loline = jl + jc * DZsell
R = (4 * RSILine + 3 * RSILine[1] + 2 * RSILine[2] + RSILine[3] ) / 10

plot(R, title='R', color=color.white, linewidth=1, transp=0)
plot(Hiline, title='Hiline', color=color.yellow,  linewidth=1, transp=0)
plot(Loline, title='Loline', color=color.yellow, linewidth=1, transp=0)
plot(jc, title='Jc', color=color.purple,  linewidth=1, transp=50)

col_1 = R > Hiline ? color.red:na
col_2 = R < Loline ? color.green:na

fill(plot(R, title='R', color=color.white, linewidth=1, transp=0), plot(Hiline, title='Hiline', color=color.yellow,  linewidth=1, transp=0), color=col_1,transp=0)
fill(plot(R, title='R', color=color.white, linewidth=1, transp=0), plot(Loline, title='Loline', color=color.yellow, linewidth=1, transp=0), color=col_2,transp=0)
//------------------------------------------------------------------------------
// Calculate qty
// Parameter
fund = 10           // Fund per Contract in USD
leverage = 100     // Leverage
// Buy Condition
buyCondition = (ma12>ma26 and cci<100 and k<80 and d<80 and k_2<80 and d_2<80 and crossover(k_2, d_2))
buy = (buyCondition == input(1))
alertcondition(buy, title='time to Long', message='Long!!!')
//closeBuy = (cci>100 and cci<cci[1] and cci<cci[2])
closeBuy = (crossunder(R, Hiline) and k>80)
alertcondition(closeBuy, title='Time to Close', message='Close Long')

// Submit Orders
strategy.entry(id="Long", qty=(fund*leverage)/close, long=true, when=buyCondition)
strategy.close(id="Long", when=closeBuy)