Динамическая стратегия торговли со стоп-профитом и стоп-лоссом EMA RSI MACD

EMA RSI MACD
Дата создания: 2024-06-14 15:38:17 Последнее изменение: 2024-06-14 15:38:17
Копировать: 4 Количество просмотров: 767
1
Подписаться
1617
Подписчики

Динамическая стратегия торговли со стоп-профитом и стоп-лоссом EMA RSI MACD

Обзор

Эта стратегия торговли объединяет три технических показателя: индексные движущиеся средние ((EMA), относительно сильные показатели ((RSI) и движущиеся средние свертывания и рассеивания ((MACD), которые, анализируя их перекрестные и числовые отношения, создают сигнал покупки и продажи, когда цена соответствует определенным условиям. В то же время, стратегия также устанавливает динамические стопы и остановки для управления риском торговли.

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

  1. Вычислить средние значения высокой и низкой цены закрытия ((HLCC4) в качестве базовых данных стратегии.
  2. Показатели EMA и RSI, рассчитанные на основе HLCC4 на трех различных периодах.
  3. Вычислить значение MACD-постной диаграммы.
  4. Судя по пересечению EMA1 и EMA2:
    • Когда EMA1 наносит EMA2, генерируется сигнал зажигания.
    • Когда EMA1 пересекает EMA2, появляется сигнал понижения.
  5. Для того, чтобы определить, соответствует ли это условию покупки или продажи, необходимо принять во внимание величины EMA, RSI и MACD:
    • Условия покупки: EMA2 на EMA1, HLCC4 выше EMA3, RSI выше обесценения, цена закрытия выше цены открытия, MACD положительная.
    • Условия продажи: проход EMA1 под EMA2, HLCC4 ниже EMA3, RSI ниже обесценения, цена закрытия ниже цены открытия, MACD-пост отрицательный.
  6. Если при хранении позиции появятся обратные сигналы, сначала снимите первоначальную позицию, а затем откройте новую позицию.
  7. При покупке или продаже устанавливается стоп-стоп и стоп-стоп цена в зависимости от установленного количества пунктов (пипсов).

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

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

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

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

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

  1. Для повышения точности сигналов можно рассмотреть возможность внедрения большего количества технических показателей или показателей рыночных настроений, таких как Брин-Бенд, ATR и т. д.
  2. Для сдерживания остановочных потерь можно использовать более динамичные способы, такие как отслеживание остановочных потерь или корректировка расстояния сдерживания остановочных потерь в зависимости от волатильности.
  3. Фильтрация торговых сигналов, чтобы избежать торговли в особые периоды, может быть связана с фундаментальным анализом, например, важными новостными событиями, публикациями экономических данных и т. д.
  4. Для настройки параметров можно использовать алгоритмы машинного обучения или оптимизации, чтобы найти оптимальную комбинацию параметров.

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

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

Исходный код стратегии
/*backtest
start: 2023-06-08 00:00:00
end: 2024-06-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[BUY/SELL]EMA RSI MACD with TP and SL", overlay=true)

// Input parameters
ema1Length = input.int(9, title="EMA 1 Length")
ema2Length = input.int(21, title="EMA 2 Length")
ema3Length = input.int(34, title="EMA 3 Length")
rsiLength = input.int(14, title="RSI Length")
rsiThreshold = input.int(50, title="RSI Threshold")
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalSmoothing = input.int(9, title="MACD Signal Smoothing")
tpPips = input.int(10, title="Take Profit (pips)")
slPips = input.int(10, title="Stop Loss (pips)")

// HLCC4 calculation
hlcc4_custom = (high + low + close + close) / 4

// Calculate EMA and RSI based on HLCC4
ema1 = ta.ema(hlcc4_custom, ema1Length)
ema2 = ta.ema(hlcc4_custom, ema2Length)
ema3 = ta.ema(hlcc4_custom, ema3Length)
rsi = ta.rsi(hlcc4_custom, rsiLength)

// Calculate MACD Histogram
[a, b, histogram] = ta.macd(hlcc4_custom, macdFastLength, macdSlowLength, macdSignalSmoothing)

// EMA1 and EMA2 crossover conditions
emaCrossUp = ta.crossover(ema1, ema2)
emaCrossDown = ta.crossunder(ema1, ema2)

// BUY signal conditions
buySignal = emaCrossUp and hlcc4_custom > ema3 and rsi > rsiThreshold and close > open and histogram > 0

// SELL signal conditions
sellSignal = emaCrossDown and hlcc4_custom < ema3 and rsi < rsiThreshold and close < open and histogram < 0

var float entryPrice = na
var float tpPrice = na
var float slPrice = na

// Check if there is an open position and a contrary signal appears, then close all old orders first
if strategy.opentrades > 0
    if sellSignal and strategy.position_size > 0
        strategy.close("Buy", comment="Close Buy Order")
    if buySignal and strategy.position_size < 0
        strategy.close("Sell", comment="Close Sell Order")

// Place a BUY order when there is a BUY signal and set TP and SL based on pips
if buySignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice + tpPips * syminfo.mintick
    slPrice := entryPrice - slPips * syminfo.mintick
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tpPrice, stop=slPrice)

// Place a SELL order when there is a SELL signal and set TP and SL based on pips
if sellSignal and strategy.position_size == 0
    entryPrice := close
    tpPrice := entryPrice - tpPips * syminfo.mintick
    slPrice := entryPrice + slPips * syminfo.mintick
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tpPrice, stop=slPrice)

// Plot the crossover points of EMA1 and EMA2
plotshape(series=emaCrossUp, location=location.belowbar, color=color.aqua, style=shape.triangleup, title="EMA Cross Up", size=size.small)
plotshape(series=emaCrossDown, location=location.abovebar, color=color.red, style=shape.triangledown, title="EMA Cross Down", size=size.small)

// Plot the EMA lines on the chart
plot(ema1, title="EMA 1", color=color.aqua)
plot(ema2, title="EMA 2", color=color.red)
plot(ema3, title="EMA 3", color=color.yellow, linewidth=2)