Краткосрочная стратегия торговли по каналу EMA и MACD

Автор:Чао Чжан, Дата: 2024-01-23 14:30:02
Тэги:

img

Обзор

Стратегия называется EMA Channel и MACD Based Short-Term Trading Strategy. Она объединяет канал EMA и индикатор MACD для выявления тенденций и генерации торговых сигналов.

Принципы

Стратегия использует 5-дневную EMA и 21-дневную EMA для формирования EMA-канала. Когда 5-дневная EMA пересекает 21-дневную EMA, это считается бычьим знаком. Когда 5-дневная EMA пересекает 21-дневную EMA, это считается медвежьим знаком. Хистограмма MACD может отфильтровать ложные сигналы. Сигналы покупки генерируются только тогда, когда гистограмма MACD выше 0. Сигналы продажи генерируются только тогда, когда гистограмма MACD ниже 0. Как только сигналы запускаются, заказы размещаются с фиксированной стоп-лосс и прибылью. Если цена возвращается в канал EMA, сигналы снова запускаются, чтобы следовать тренду.

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

Стратегия сочетает в себе идентификацию тренда и фильтрацию индикаторов, которые могут эффективно идентифицировать краткосрочные направления тренда. Использование канала EMA для определения основного направления тренда и гистограммы MACD для фильтрации ложных сигналов может значительно улучшить прибыльность. Фиксированный механизм остановки потери и получения прибыли также обеспечивает хорошее соотношение риск-вознаграждение. В целом эта стратегия подходит для краткосрочной торговли, особенно для акций и форекс с сильным импульсом.

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

Стратегия в основном подходит для краткосрочной торговли и плохо работает на долгосрочных и диапазонах рынков. На долгосрочных боковых рынках часто встречаются перекрестки каналов EMA, но большинство из них являются ложными сигналами. Хотя гистограмма MACD может играть роль в фильтрации, ее эффективность все еще ограничена. Кроме того, фиксированный стоп-лосс и прибыль затрудняют сбор дополнительных прибылей от долгосрочных тенденций.

Руководство по оптимизации

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

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

  2. Оптимизировать параметры MACD для повышения эффективности фильтрации.

  3. Включить индикаторы волатильности для расширения диапазона стоп-лосса при росте волатильности рынка.

  4. Добавьте механизм отслеживания стоп-лосса, чтобы сделать стоп-лосс ближе к цене, уменьшая ненужные триггеры стоп-лосса и обеспечивая прибыльность.

Заключение

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © moondevonyt

//@version=5
strategy("Scalping with EMA channel and MACD", overlay=true)

// Exponential moving average inputs
ema21 = ta.ema(close, 21)
ema5 = ta.ema(close, 5)

// MACD inputs
fastLength = 18
slowLength = 34
signalSmoothing = 12

[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
macdHistogram = macdLine - signalLine

// Buy and sell conditions
buyCondition = ta.crossover(ema5, ema21) and macdHistogram > 0
sellCondition = ta.crossunder(ema5, ema21) and macdHistogram < 0

// Re-entry conditions
reEntryBuyCondition = close > ema21
reEntrySellCondition = close < ema21

// Set stop loss and take profit
stopLoss = 8
takeProfit = 15

// Execute Strategy
if buyCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", stop=close - stopLoss, limit=close + takeProfit)
if reEntryBuyCondition
    strategy.entry("Re-Enter Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Re-Enter Buy", stop=close - stopLoss, limit=close + takeProfit)

if sellCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", stop=close + stopLoss, limit=close - takeProfit)
if reEntrySellCondition
    strategy.entry("Re-Enter Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Re-Enter Sell", stop=close + stopLoss, limit=close - takeProfit)

// Plotting EMAs and MACD
plot(ema21, color=color.blue, title="21 EMA")
plot(ema5, color=color.orange, title="5 EMA")
plot(macdHistogram, color=color.red, title="MACD Histogram")

// Plot buy and sell signals
plotshape(series=buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

Больше