Стратегия называется
Стратегия использует 5-дневную EMA и 21-дневную EMA для формирования EMA-канала. Когда 5-дневная EMA пересекает 21-дневную EMA, это считается бычьим знаком. Когда 5-дневная EMA пересекает 21-дневную EMA, это считается медвежьим знаком. Хистограмма MACD может отфильтровать ложные сигналы. Сигналы покупки генерируются только тогда, когда гистограмма MACD выше 0. Сигналы продажи генерируются только тогда, когда гистограмма MACD ниже 0. Как только сигналы запускаются, заказы размещаются с фиксированной стоп-лосс и прибылью. Если цена возвращается в канал EMA, сигналы снова запускаются, чтобы следовать тренду.
Стратегия сочетает в себе идентификацию тренда и фильтрацию индикаторов, которые могут эффективно идентифицировать краткосрочные направления тренда. Использование канала EMA для определения основного направления тренда и гистограммы MACD для фильтрации ложных сигналов может значительно улучшить прибыльность. Фиксированный механизм остановки потери и получения прибыли также обеспечивает хорошее соотношение риск-вознаграждение. В целом эта стратегия подходит для краткосрочной торговли, особенно для акций и форекс с сильным импульсом.
Стратегия в основном подходит для краткосрочной торговли и плохо работает на долгосрочных и диапазонах рынков. На долгосрочных боковых рынках часто встречаются перекрестки каналов EMA, но большинство из них являются ложными сигналами. Хотя гистограмма MACD может играть роль в фильтрации, ее эффективность все еще ограничена. Кроме того, фиксированный стоп-лосс и прибыль затрудняют сбор дополнительных прибылей от долгосрочных тенденций.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизировать параметры EMA для поиска комбинаций параметров, которые максимизируют доходность для конкретных торговых инструментов.
Оптимизировать параметры MACD для повышения эффективности фильтрации.
Включить индикаторы волатильности для расширения диапазона стоп-лосса при росте волатильности рынка.
Добавьте механизм отслеживания стоп-лосса, чтобы сделать стоп-лосс ближе к цене, уменьшая ненужные триггеры стоп-лосса и обеспечивая прибыльность.
Стратегия имеет относительно высокую рентабельность и особенно подходит для краткосрочной торговли. Это хороший выбор среди высокочастотных количественных торговых стратегий.
/*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")