
В основе этой стратегии лежит использование EMA и MACD для определения направления и времени входа в тренд. Когда цена превышает EMA, считается, что тенденция изменилась, а расходный индикатор MACD дополнительно подтверждает сигнал тренда. Время покупки и продажи можно судить по отношению цены к EMA и MACD.
Стратегия основывается на 20-циклической линии EMA и MACD для определения направления тренда. Конкретные правила генерации торговых сигналов следующие:
Сигнал покупки: когда цена ниже 20 EMA, а MACD-индикаторная линия ниже нулевой оси, ждите, пока цена прорвется вверх через 20 EMA, и проверьте, была ли MACD-индикаторная линия одновременно отрицательной коррекцией или только что отрицательной коррекцией, и если она удовлетворяется, то на 20 EMA выше 10 центов цена посылает сигнал покупки.
Сигнал продажи: когда цена выше 20 EMA, а MACD-линия находится выше 0-й оси, ждите, пока цена прорвется вниз через 20 EMA, и проверьте, была ли MACD-линия одновременно положительной или отрицательной, и если она удовлетворяет, то подать сигнал продажи в 10 пунктов ниже 20 EMA.
Эта стратегия, в сочетании с оценкой тенденций и фильтрацией показателей, позволяет эффективно идентифицировать точки изменения тенденций и избегать ложных сигналов в регионе сверки.
Наибольшее преимущество этой стратегии заключается в том, что она использует EMA для определения направления тенденции, а также использует MACD для двойного подтверждения, что позволяет отфильтровать часть шумовых торговых сигналов.
С другой стороны, эта стратегия также обеспечивает механизм контроля риска. Используя фиксированные стопы и остановки, можно контролировать и эффективно управлять риском. Кроме того, часть позиций отвечает уходу бонуса, а другая часть пытается отслеживать тенденцию к прибыли. Этот способ уравновешивает риск и прибыль.
Наибольший риск этой стратегии заключается в том, что трендовые сигналы, по мнению EMA и MACD, не всегда являются полностью надежными. В ценах может произойти некоторое изменение, что приводит к снятию убытков. Кроме того, в процессе сверки могут возникнуть ошибочные сигналы. Это необходимо по возможности избежать путем оптимизации параметров.
С другой стороны, установка фиксированного стоп-стоп также сопряжена с определенным риском. Когда рыночная ситуация сильно колеблется, стоп-стоп с фиксированным значением трудно полностью адаптироваться к рынку, легко быть застрявшим или преждевременно уйти с игры. Это требует корректировки параметров стоп-стоп в зависимости от волатильности и ликвидности в то время.
Эта стратегия может быть оптимизирована в следующих аспектах:
Проверка циклов EMA с различными параметрами для поиска оптимальной комбинации параметров
Оптимизация параметров MACD в соответствии с особенностями торгуемых сортов
Попробуйте изменить настройки для остановки убытков, например, с использованием ATR
Добавление других показателей для фильтрации сигнала и улучшения качества сигнала
Оценка эффективности торговли различными видами и выбор наиболее подходящих
Оптимизация параметров и моделей может способствовать дальнейшему повышению стабильности и прибыльности стратегии. В то же время необходимо контролировать риски чрезмерного соответствия процесса оптимизации.
Стратегия в целом является достаточно устойчивой, используя двойные показатели в сочетании с признанием тенденционных сигналов, можно в определенной степени отфильтровать шумные сделки. Контроль риска также является более приемлемым. С помощью дальнейшей оптимизации параметров и моделей стратегия может стать количественной торговой стратегией, которую стоит проверить на диске.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("EMA and MACD Trading Strategy", overlay=true)
// Define inputs
emaPeriod = input(20, title="EMA Period")
macdShort = input(12, title="MACD Short Period")
macdLong = input(26, title="MACD Long Period")
macdSignal = input(9, title="MACD Signal Period")
riskAmount = input(10, title="Risk Amount (in pips)")
// Calculate indicators
ema = ema(close, emaPeriod)
[macdLine, signalLine, _] = macd(close, macdShort, macdLong, macdSignal)
// Define long trade conditions
longCondition = crossover(close, ema) and (macdLine > 0 or crossover(macdLine, signalLine)) // Removed unnecessary argument
// Define short trade conditions
shortCondition = crossunder(close, ema) and (macdLine < 0 or crossunder(macdLine, signalLine)) // Removed unnecessary argument
// Execute long trade
if (longCondition)
stopLoss = close - riskAmount
takeProfit = close + riskAmount
strategy.entry("Long", strategy.long)
strategy.exit("Exit", "Long", stop=stopLoss, limit=takeProfit)
// Execute short trade
if (shortCondition)
stopLoss = close + riskAmount
takeProfit = close - riskAmount
strategy.entry("Short", strategy.short)
strategy.exit("Exit", "Short", stop=stopLoss, limit=takeProfit)