3EMA со стохастической стратегией RSI

Автор:Чао Чжан, Дата: 2023-11-15 10:47:20
Тэги:

img

Обзор

Это стратегия, объединяющая несколько индикаторов. Для определения направления тренда и установления позиций используется три EMA с различными периодами, Stochastic RSI и ATR. Он длится, когда более быстрая EMA пересекает более медленную EMA, при этом стоп-лосс устанавливается в 3 раза выше недавнего значения ATR и прибыль получается в 2 раза выше недавнего ATR.

Принцип

Стратегия использует три линии EMA - 8-, 14- и 50-периодные EMA, представляющие ценовые тенденции в разные временные рамки.

Индикатор Stochastic RSI включает в себя расчеты RSI и Stochastic для определения условий перекупленности/перепродажи.

ATR представляет собой недавний диапазон волатильности. Стратегия использует 3 раза ATR как дистанцию остановки потерь и 2 раза ATR как дистанцию получения прибыли для блокировки прибыли и контроля риска.

Преимущества

  • EMA отфильтровывают шум в данных о ценах и определяют направление тренда
  • Стохастический RSI определяет возможности реверсии
  • ATR динамически отслеживает стоп-лосс/прибыль на основе волатильности рынка

Риски

  • Многочисленные индикаторы могут генерировать противоречивые сигналы
  • Фиксированные коэффициенты стоп-лосс/прибыль не могут адаптироваться к изменяющимся рыночным условиям
  • Краткосрочные долговые позиции, подверженные реверсии

Оптимизация может быть выполнена путем корректировки периодов EMA для оптимизации чувствительности. Сделание коэффициентов ATR регулируемыми позволяет настраивать на основе рыночных условий. Добавление других индикаторов помогает подтвердить сигналы и избежать ошибок.

Улучшение

  • Корректировать периоды EMA для оптимизации чувствительности
  • Сделать соотношения ATR регулируемыми
  • Добавить другие индикаторы, чтобы избежать ложных сигналов

Заключение

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


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
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/
// © FreddieChopin
 
//@version=4
strategy("3 x EMA + Stochastic RSI + ATR", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
 
// 3x EMA
ema1Length = input(8, "EMA1 Length", minval = 1)
ema2Length = input(14, "EMA2 Length", minval = 1)
ema3Length = input(50, "EMA3 Length", minval = 1)
ema1 = ema(close, ema1Length)
ema2 = ema(close, ema2Length)
ema3 = ema(close, ema3Length)
 
plot(ema1, color = color.green)
plot(ema2, color = color.orange)
plot(ema3, color = color.red)
 
// Stochastic RSI
smoothK = input(3, "K", minval=1)
smoothD = input(3, "D", minval=1)
lengthRSI = input(14, "RSI Length", minval=1)
lengthStoch = input(14, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
 
// ATR
atrPeriod = input(14, "ATR Period")
takeProfitMultiplier= input(2.0, "Take-profit Multiplier")
stopLossMultiplier= input(3.0, "Stop-loss Multiplier")
atrSeries = atr(atrPeriod)[1]
 
longCondition = ema1 > ema2 and ema2 > ema3 and crossover(k, d)
strategy.entry("long", strategy.long, when = longCondition)
 
float stopLoss = na
float takeProfit = na
 
if (strategy.position_size > 0)
    if (na(stopLoss[1]))
        stopLoss := strategy.position_avg_price - atrSeries * stopLossMultiplier
    else
        stopLoss := stopLoss[1]
    if (na(takeProfit[1]))
        takeProfit := strategy.position_avg_price + atrSeries * takeProfitMultiplier
    else
        takeProfit := takeProfit[1]
 
    strategy.exit("take profit / stop loss", limit = takeProfit, stop = stopLoss)
 
plot(stopLoss, color = color.red, linewidth = 2, style = plot.style_linebr)
plot(takeProfit, color = color.green, linewidth = 2, style = plot.style_linebr)

Больше