Стратегия MACD Golden Cross и Dead Cross

MACD EMA DIF DEA
Дата создания: 2024-04-26 12:08:24 Последнее изменение: 2024-04-26 12:08:24
Копировать: 0 Количество просмотров: 1107
1
Подписаться
1617
Подписчики

Стратегия MACD Golden Cross и Dead Cross

Обзор

Эта стратегия использует перекрестные линии DIF и DEA в MACD-индикаторе для создания торговых сигналов. Когда линия DIF пересекает линию DEA снизу вверх, она создает многосигналы; когда линия DIF пересекает линию DEA снизу вверх, она создает сигналы дифференциации. Результаты отслеживания этой стратегии показывают, что на торговой паре BTCUSDT выигрыш составляет около 40%, годовая доходность составляет 1.05, но приводит к увеличению количества удерживаемых активов, поэтому не может использоваться в качестве отдельной стратегии арбитража.

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

  1. Вычислить быстрое и медленное скользящее среднее ((EMA) и быстрое скользящее среднее ((EMA)
  2. Рассчитайте линию DIF, то есть разницу между быстрым EMA и медленным EMA.
  3. Вычислить EMA линии DEA, то есть линии DIF.
  4. Вычислить разницу между диаграммой MACD, то есть между DIF и DEA.
  5. Когда DIF-линия пересекает DEA-линию снизу вверх, генерируется многосигнал, открывается многосигнал.
  6. Когда линия DIF пересекает линию DEA сверху вниз, появляется сигнал “открыть”, “очистить” и “открыть” позицию.
  7. Когда вновь появляется обратный перекрестный сигнал, ликвидируется текущая позиция, открывается позиция в противоположном направлении.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// @description 该策略使用 MACD DIF 线与 EDA 线产生金叉与死叉时进行入场与出场操作, 回测后发现胜率约 40%, BTCUSDT 年化利率 1.05, 同时会导致持有的资产数量不断上升, 无法作为一个独立的套利策略进行使用.

strategy("MACD 金叉策略", overlay=true)

fastLength = input(12, "快线长度")
slowLength = input(26, "慢线长度")
MACDLength = input(9, "MACD 均线长度")

deltaIncreaseOver0 = input(color.green,'MACD 柱在 0 线以上增长')
deltaIncreaseUnder0 = input(color.rgb(153, 230, 156),'MACD 柱在 0 线以下增长')

deltaDecreaseOver0 = input(color.orange,'MACD 柱在 0 线以上下跌')
deltaDecreaseUnder0 = input(color.red,'MACD 柱在 0 线以下下跌')

buySellEnabled = input(true, '是否显示入场与出场信号')

// @variable 做多轮数
var longRound = 0
// @variable 做空轮数
var shortRound = 0

DIF = ta.ema(close, fastLength) - ta.ema(close, slowLength) // 快慢均线差值
EDA = ta.ema(DIF, MACDLength) // DIF 线的 EMA 均线
delta = DIF - EDA // MACD 柱高度

// plot(0, 'Zero', color.black)
plot(DIF,'DIF', color.yellow)
plot(EDA, "EDA", color.purple)

isDeltaIncreasing = delta[1] < delta
isDeltaOver0 = delta > 0
deltaColor = isDeltaIncreasing ? (isDeltaOver0? deltaIncreaseOver0: deltaIncreaseUnder0) :( isDeltaOver0? deltaDecreaseOver0: deltaDecreaseUnder0)
plot(delta, "Delta", deltaColor, style = plot.style_columns)

isDeltaV = delta > delta[1] and delta[2] > delta[1]
isDeltaA = delta < delta[1] and delta[2] < delta[1]

longBuy(round) =>
	entry = str.format("做多买入 {0}",round)
	// log.info(str.format("{0} {1}",entry,close))
	strategy.entry(entry, strategy.long, comment=entry)

longSell(round) =>
	entry = str.format("做多买入 {0}",round)
	exit = str.format("做多卖出 {0}",round)
	// log.info(str.format("{0} {1}",exit,close))
	strategy.close(entry, comment=exit)		

shortSell(round) =>
	entry = str.format("做空卖出 {0}",round)
	// log.info(str.format("{0} {1}",entry,close))
	strategy.entry(entry, strategy.short, comment= entry) 

shortBuy(round) =>
	entry = str.format("做空卖出 {0}",round)
	exit = str.format("做空买入 {0}",round)
	// log.info(str.format("{0} {1}",exit,close))
	strategy.close(entry, comment=exit)		

if (buySellEnabled) 
	if (ta.crossunder(DIF, EDA))
		longSell(longRound)
	if (ta.crossover(DIF, EDA))
		longRound := longRound + 1
		longBuy(longRound)