Стратегия Multi-Time Frame RSI и Stochastic


Дата создания: 2024-02-21 15:56:37 Последнее изменение: 2024-02-21 15:56:37
Копировать: 1 Количество просмотров: 511
1
Подписаться
1166
Подписчики

Стратегия Multi-Time Frame RSI и Stochastic

Обзор

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

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

RSI показатель

RSI - мощный индикатор перекупа и перепродажи, который рассчитывается на основе взлетов и падений акций за определенный период времени. Значения RSI колеблются от 0 до 100, и, как правило, RSI больше 70 означает перекуп, а меньше 30 означает перепродажу.

Эта стратегия использует 14 RSI-индикаторов длины и получает RSI-значения для 1 месяца, 1 дня, 4 часов и 1 часа в 4 временных рамках.

2. Случайный показатель %K

Случайный индикатор %K - индикатор, показывающий, что рынок находится в диапазоне перекупа или перепродажи, значение которого колеблется от 0 до 100. Как правило, случайный индикатор больше 80 означает перекуп, меньше 20 означает перепродажу.

В этой стратегии, случайный показатель %K имеет длину 14, гладкость 3 и получает значения для вышеуказанных 4 временных рамок.

3. Средний портфель

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

Средний RSI = (месячный RSI + суточный RSI + 4-часовой RSI + 1-часовой RSI) / 4

Среднее значение случайного индикатора = (случайный индикатор лунной линии + случайный индикатор солнечной линии + случайный индикатор 4 часа + случайный индикатор 1 час) / 4

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

Когда среднее значение RSI меньше 30 и среднее значение случайного индикатора меньше 20, делают больше; когда среднее значение RSI больше 70 и среднее значение случайного индикатора больше 80, делают пустоту.

После увеличения, когда среднее значение случайного индикатора больше 70 и среднее значение RSI больше 50 часов; после уменьшения, когда среднее значение случайного индикатора меньше 30 и среднее значение RSI меньше 50 часов.

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

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

  1. RSI и случайные индикаторы взаимно проверяются. Очень легко создать ложный сигнал, полагаясь только на один индикатор, а эта стратегия позволяет повысить точность сигнала, комбинируя два индикатора.

  2. Анализ нескольких временных рамок позволяет повысить точность суждения. Например, лунная и солнечная линия показывают перекуп, но 4 часа и 1 час не полностью перекуплены, что указывает на то, что тенденция может продолжаться. Сигнал более надежен, если все временные рамки совпадают.

  3. Более четко определять структурные переломные точки. Одновременно видеть прорывы ключевой поддержки/сопротивления на нескольких временных рамках, можно определить, что текущая тенденция изменилась.

  4. Автоматическое вычисление среднего значения показателя упрощает операцию. Не требует ручного вычисления, код автоматически выполняет извлечение данных, вычисление и усреднение показателей, снижает объем работы.

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

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

  1. Краткосрочные повороты в тренде приводят к погашению. Например, во время многостороннего удержания позиции, короткая линия цены вниз и снова отскочила после прорыва поддержки. В этом случае логика устранения позиции в соответствии со стратегией требует немедленного прекращения убытков, но может привести к краткосрочным потерям.

  2. Потеря ключевой поддержки/сопротивления приводит к потере отслеживаемой остановки. Если ключевая поддержка или сопротивление будут нарушены, то первоначальная цена остановки может быть напрямую нарушена, что приведет к еще большей потере.

  3. Неправильная настройка временных рамок приводит к ошибкам в оценке. Если временные рамки установлены слишком длинными или слишком короткими, это может привести к искажению оценки показателя.

  4. Распределение показателей приводит к эффекту Дюнкерка. То есть показатели с более высокими временными рамками показывают перекуп, а показатели с более низкими временными рамками показывают перепродажу, а средние показатели не отражают реальную ситуацию.

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

Направление оптимизации

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

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

  2. Добавление более высоких временных рамок, таких как квартальная линия. Это позволяет использовать более крупный уровень фильтрации тенденций, чтобы вводить в заблуждение сигналы. При наличии расхождений в показателях, приоритет отдается более высоким временным рамкам.

  3. Увеличение многомерной проверки трафика. Комбинированное изменение трафика определяет отклонение от основания и отклонение от вершины, чтобы избежать ошибочного движения зомби.

  4. Оптимизируйте время входа. Можно ждать прорыва входа вблизи важной исторической поддержки/сопротивления, или ждать оптимальной обратной покупки.

  5. Увеличение адаптивных стоп-паролей. Динамические стоп-пароли могут быть рассчитаны и скорректированы в зависимости от последних волатильностей и ATR.

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

Стратегия RSI с несколькими временными рамками и случайными индикаторами является четкой и надежной торговой стратегией, используя в комбинации RSI и случайные индикаторы для определения промежутков перекупа и перепродажи рынка на нескольких временных рамках. Ее наибольшее преимущество заключается в том, что комбинация индикаторов и временных рамок взаимно проверяет друг друга, что позволяет максимально избежать риска подтасовки и ложных сигналов. Конечно, стратегия также имеет распространенный риск, подобный стратегии технического анализа, которая требует постоянных улучшений и оптимизации в области оптимизации временных остановок, выборы рамок и т. Д., Чтобы стать стабильно прибыльной алгоритмической торговой стратегией.

Исходный код стратегии
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////// MTF Stochastic & RSI Strategy 🚥 ©️ bykzis /////////////////////////////////////////
//

// *** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 *** and LOT OF COPY of Indicator-Jones MTF Scanner
// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//@version=5
strategy('MTF RSI & STOCH Strategy🚥 by kzi', overlay=false,initial_capital=100, currency=currency.USD, commission_value=0.01, commission_type=strategy.commission.percent)


// Pair list
var string GRP1       = '══════════    General    ══════════'
overbought = input.int(80, 'Overbought Level', minval=1, group=GRP1)
oversold = input.int(20, 'Oversold Level', minval=1, group=GRP1)


/// Timeframes
var string GRP2       = '══════════   Timeframes   ══════════'
timeframe1 = input.timeframe(title="Timeframe 1", defval="W", group=GRP2)
timeframe2 = input.timeframe(title="Timeframe 2", defval="D", group=GRP2)
timeframe3 = input.timeframe(title="Timeframe 3", defval="240", group=GRP2)
timeframe4 = input.timeframe(title="Timeframe 4", defval="60", group=GRP2)

// RSI settings
var string GRP3       = '══════════   RSI settings   ══════════'
rsiLength = input.int(14, minval=1, title='RSI length', group=GRP3)
rsiSource = input(close, 'RSI Source', group=GRP3)
rsioverbought = input.int(70, 'RSI Overbought Level', minval=1, group=GRP3)
rsioversold = input.int(30, 'RSI Oversold Level', minval=1, group=GRP3)


/// Get RSI values of each timeframe /////////////////////////////////////////////////////
rsi = ta.rsi(rsiSource, rsiLength)
callRSI(id,timeframe) =>
    rsiValue = request.security(id, str.tostring(timeframe), rsi, gaps=barmerge.gaps_off)
    rsiValue

RSI_TF1 = callRSI(syminfo.tickerid, timeframe1)
RSI_TF2 = callRSI(syminfo.tickerid, timeframe2)
RSI_TF3 = callRSI(syminfo.tickerid, timeframe3)
RSI_TF4 = callRSI(syminfo.tickerid, timeframe4)




/////// Calculate Averages /////////////////////////////////////////////////////////////////
calcAVG(valueTF1, valueTF2, valueTF3, valueTF4) =>
    math.round((valueTF1 + valueTF2 + valueTF3 + valueTF4) / 4, 2)

AVG=calcAVG(RSI_TF1, RSI_TF2, RSI_TF3, RSI_TF4)



// Stochastic settings
var string GRP4       = '══════════   Stochastic settings   ══════════'
periodK = input.int(14, '%K length', minval=1, group=GRP4)
smoothK = input.int(3, 'Smooth K', minval=1, group=GRP4)
stochSource = input(close, 'Stochastic Source', group=GRP4)
stochoverbought = input.int(70, 'Stochastic Overbought Level', minval=1, group=GRP4)
stochoversold = input.int(30, 'Stochastic Oversold Level', minval=1, group=GRP4)


/// Get Stochastic values of each timeframe ////////////////////////////////////////////////
stoch = ta.sma(ta.stoch(stochSource, high, low, periodK), smoothK)
getStochastic(id,timeframe) =>
    stochValue = request.security(id, str.tostring(timeframe), stoch, gaps=barmerge.gaps_off)
    stochValue

Stoch_TF1 = getStochastic(syminfo.tickerid, timeframe1)
Stoch_TF2 = getStochastic(syminfo.tickerid, timeframe2)
Stoch_TF3 = getStochastic(syminfo.tickerid, timeframe3)
Stoch_TF4 = getStochastic(syminfo.tickerid, timeframe4)


AVG_STOCH=calcAVG(Stoch_TF1, Stoch_TF2, Stoch_TF3, Stoch_TF4)


plot(AVG, color = color.blue, title='RSI')
plot(AVG_STOCH, color = color.yellow,title='STOCH')
hline(rsioverbought,color=color.red)
hline(rsioversold, color=color.lime)
hline(50, color=color.white)

//============ signal Generator ==================================//

if AVG <= rsioversold and AVG_STOCH <=stochoversold 
    strategy.entry('Buy_Long', strategy.long)

    
strategy.close("Buy_Long",when=(AVG_STOCH >=70 and AVG >=50 and close >=strategy.position_avg_price),comment="Long_OK")

if AVG >=rsioverbought and AVG_STOCH >=stochoverbought
    strategy.entry('Buy_Short', strategy.short)


strategy.close("Buy_Short",when=(AVG_STOCH <=30 and AVG <=50 and close <=strategy.position_avg_price),comment="Short_OK")


///////////////////////////////////////////////////////////////////////////////////////////