Стратегия золотого креста EMA - это общая количественная стратегия торговли. Она использует две экспоненциальные скользящие средние (EMAs) с различными параметрами. Когда более короткий период EMA пересекает более длинный период EMA, он идет длинным. Когда более короткий период EMA пересекает ниже более длинного периода EMA, он закрывает позицию. Эта стратегия использует более быструю реакцию краткосрочной EMA и следующую тенденцию способность долгосрочной EMA генерировать торговые сигналы.
Стратегия сначала определяет две EMA, ema1 с длиной 10 и ema2 с длиной 21. Затем она вычисляет значения двух EMA. Когда ema1 пересекает выше ema2, это сигнализирует о подъеме, что является длинным сигналом. Когда ema1 пересекает ниже ema2, это сигнализирует о разрыве через EMA, что является сигналом закрытия позиции.
Для фильтрации ложных прорывов код также определяет пороговое значение, рассчитанное как:
threshold = ((ema1 - ema2)*100) / ((ema1 + ema2)/2)
Этот порог представляет собой процент расстояния EMA по отношению к среднему EMA. Когда порог превышает 0,15%, это длинный сигнал. Когда порог ниже -0,006%, это сигнал близкой позиции.
Подводя итог, торговые сигналы этой стратегии:
Преимущества этой стратегии включают:
Использование EMA может сгладить данные о ценах и помочь генерировать торговые сигналы.
Двойная система EMA обеспечивает баланс между оперативностью и стабильностью.
Порог фильтрует ложные прорывы и избегает ненужных сделок.
Логика стратегии проста и понятна, подходит для начинающих.
Параметры EMA и порог могут быть оптимизированы.
Риски этой стратегии включают:
EMA отстают от цен и могут упустить краткосрочные возможности.
Риск попасть в ловушку, когда тенденция изменится, что может привести к большим потерям.
Неправильный порог может фильтровать действительные сигналы или генерировать ложные сигналы.
Если параметры EMA не подходят, то два EMA могут не показывать существенных различий, что приводит к ложным сигналам.
Стоп-лосс должен устанавливаться разумно, чтобы не быть нарушенным большими колебаниями рынка.
Стратегия может быть оптимизирована в следующих аспектах:
Оптимизируйте параметры EMA и тестируйте различные периоды.
Оптимизировать пороговое значение для сбалансирования ложных и действительных сигналов.
Добавьте другие технические индикаторы, такие как MACD, KDJ, чтобы подтвердить сигналы.
Добавьте механизмы остановки потери, такие как остановка отслеживания или приказы OCO, чтобы ограничить потери.
Подумайте о частичных позициях, чтобы снизить риск.
Испытайте различные периоды ожидания, чтобы найти оптимальную продолжительность.
Стратегия EMA имеет четкую и простую логику, используя характеристики EMA для генерации торговых сигналов. Стратегия имеет определенные преимущества, но существуют потенциальные риски. Стратегия может быть улучшена путем оптимизации параметров, установки стоп-лосса, фильтрации сигналов и т. Д. Она подходит как количественная торговая стратегия начинающего.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ if high > ta.highest(high[1], 5) strategy.entry("Enter Long", strategy.long) else if low < ta.lowest(low[1], 5) strategy.entry("Enter Short", strategy.short)//@version=3 strategy(title="ema10-21", shorttitle="10/21", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 2500, commission_type = strategy.commission.percent, commission_value = 0.2) len1 = input(10, minval=1, title="EMA #1 length") src1 = input(close, title="EMA Source #1") a = ta.ema(src1, len1) plot(a, title="EMA #1", color=color.orange, linewidth=2, style=plot.style_line) len2 = input(21, minval=1, title="EMA #2 length") src2 = input(close, title="EMA Source #2") b = ta.ema(src2, len2) plot(b, title="EMA #2", color=color.blue, linewidth=2, style=plot.style_line) threshold = ((a-b)*100)/((a+b)/2) thresholdUp = threshold > 0.15 thresholdDown = threshold < -0.006 if (thresholdUp) strategy.entry("Buy", strategy.long) if (thresholdDown) strategy.close("Buy", strategy.long) //goLong() => (crossover(a, b)) and (threshold >= 0.0025) //killLong() => (crossunder(a, b)) and (threshold <= -0.0025) //strategy.entry("Buy", strategy.long, when = goLong()) //strategy.close("Buy", when = killLong()) //threshold = ((a-b)*100)/((a+b)/2) //achat = out1 > out2 //vente = out1 < out2 //and threshold < -0.025 //strategy.entry("long", true, when = achat) //strategy.exit("exit", "long", when = vente)