Стратегия торговли на основе многовременного RSI-EMA Momentum с масштабированием позиции

RSI EMA
Дата создания: 2024-11-29 15:23:44 Последнее изменение: 2024-11-29 15:23:44
Копировать: 0 Количество просмотров: 518
1
Подписаться
1617
Подписчики

Стратегия торговли на основе многовременного RSI-EMA Momentum с масштабированием позиции

Обзор

Это динамическая торговая стратегия, основанная на показателях RSI и EMA, в сочетании с методом технического анализа с несколькими временными циклами. Стратегия заключается в том, чтобы объединить сигналы краткосрочного RSI (цикл 2) и среднесрочного RSI (цикл 14), а также использовать три различных цикла EMA (цикл 50/100/200) для подтверждения направления рыночной тенденции.

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

Стратегия использует многоуровневый механизм проверки для принятия торговых решений. Для выполнения многоуровневых условий требуется RSI14 ниже 31, а RSI2 выше 10, при этом требуется, чтобы EMA50, EMA100, EMA200 представляли пустую строку. Для выполнения многоуровневых условий требуется, чтобы RSI14 был выше 69, а RSI2 снижался ниже 90, при этом требуется, чтобы EMA50, EMA100, EMA200 представляли многоуровневую строку.

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

  1. Совершенствование механизма подтверждения сигнала, снижение риска ложного сигнала с помощью проверки множества технических показателей
  2. Динамическая система управления позициями позволяет автоматически корректировать объемы торгов в зависимости от размера счета
  3. Использование RSI в различных циклах для подтверждения тренда EMA повышает точность торгов
  4. Ясный механизм блокировки, позволяющий своевременно блокировать прибыль.
  5. Стратегии имеют хорошую визуализацию, которая помогает трейдерам понять состояние рынка
  6. Использование сложного портфеля технических показателей, позволяющего лучше отслеживать динамику рынка

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

  1. Высокий уровень леверинга (в 20 раз) может привести к значительным колебаниям в счетах
  2. На боковом рынке могут возникать частые ложные сигналы прорыва
  3. Двукратный механизм может привести к убыткам в случае последовательных потерь
  4. В крайних случаях может привести к значительным потерям без установки механизма хранения убытков.
  5. EMA может отстать в трендовых оценках в условиях быстрого перехода рынка
  6. RSI может давать вводящие в заблуждение сигналы в определенных рыночных условиях

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

  1. Введение динамического механизма остановки, который позволяет установить точку остановки на основе ATR или волатильности
  2. Оптимизация системы управления позициями, установление максимальных пределов позиций для контроля риска
  3. Присоединение фильтра рыночной волатильности для корректировки параметров торговли в условиях высокой волатильности
  4. Рассматривайте возможность добавления временных фильтров, чтобы избежать торговли в неблагоприятное время
  5. Введение новых показателей состояния рынка, таких как показатели объема торговли
  6. Разработка адаптивной системы параметров, адаптирующей параметры показателей в соответствии с динамикой рыночной среды

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

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

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

//@version=5
strategy("Custom RSI EMA Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)

// Definování vstupních podmínek
rsi_14 = ta.rsi(close, 14)
rsi_2 = ta.rsi(close, 2)
ema_50 = ta.ema(close, 50)
ema_100 = ta.ema(close, 100)
ema_200 = ta.ema(close, 200)

// Pákový efekt
leverage = 20

// Podmínky pro long pozici
longCondition = (rsi_14[1] < 31) and ta.crossover(rsi_2, 10) and (ema_50 < ema_100) and (ema_100 < ema_200)

// Podmínky pro short pozici
shortCondition = (rsi_14[1] > 69) and ta.crossunder(rsi_2, 90) and (ema_50 > ema_100) and (ema_100 > ema_200)

// Definování průměrné ceny pozice
var float long_avg_price = na
var float short_avg_price = na

// Sledujeme, zda se velikost pozice změnila
var float last_position_size = na

// Přerušení průměrné ceny pozice při změně pozice
if (last_position_size != strategy.position_size)
    long_avg_price := na
    short_avg_price := na

// Aktualizace průměrné ceny pozice
if (strategy.position_size > 0)
    long_avg_price := strategy.position_avg_price
    short_avg_price := na
else if (strategy.position_size < 0)
    short_avg_price := strategy.position_avg_price
    long_avg_price := na

// Uložení aktuální velikosti pozice pro příští bar
last_position_size := strategy.position_size

// Podmínky pro take profit
takeProfitLongCondition = (rsi_14 > 69) and (rsi_2 > 90) and (long_avg_price < close)
takeProfitShortCondition = (rsi_14 < 31) and (rsi_2 < 10) and (short_avg_price > close)

// Velikost pozice
new_position_size = strategy.position_size == 0 ? na : math.abs(strategy.position_size) * 2

// Úprava velikosti pozice s ohledem na pákový efekt
position_value = strategy.equity * leverage
trade_qty = position_value / close

// Vstup do long pozice s dvojnásobkem aktuální pozice nebo standardní velikostí při první pozici
if (longCondition)
    strategy.entry("Long", strategy.long, qty=new_position_size == na ? trade_qty : new_position_size)

// Vstup do short pozice s dvojnásobkem aktuální pozice nebo standardní velikostí při první pozici
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=new_position_size == na ? trade_qty : new_position_size)

// Výstup z long pozice při splnění podmínek pro take profit
if (takeProfitLongCondition)
    strategy.close("Long")

// Výstup z short pozice při splnění podmínek pro take profit
if (takeProfitShortCondition)
    strategy.close("Short")

// Zvýraznění části grafu, kde platí podmínky pro long
highlightLongCondition = (ema_50 < ema_100) and (ema_100 < ema_200)
bgcolor(highlightLongCondition ? color.new(color.green, 90) : na)

// Zvýraznění části grafu, kde platí podmínky pro short
highlightShortCondition = (ema_50 > ema_100) and (ema_100 > ema_200)
bgcolor(highlightShortCondition ? color.new(color.red, 90) : na)

// Přidání bodů pozic do grafu
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="L")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="S")

// Vykreslení průměrné ceny pozice pro long a short
plot(long_avg_price, title="Long Avg Price", color=color.blue, linewidth=2)
plot(short_avg_price, title="Short Avg Price", color=color.orange, linewidth=2)