Стратегия MACD "Золотой крест" и "Крест смерти"

Автор:Чао Чжан, Дата: 2024-04-26 12:08:24
Тэги:MACDЕМАDIFDEA

img

Обзор

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

Принцип стратегии

  1. Вычислить быструю экспоненциальную скользящую среднюю величину (EMA) и медленную экспоненциальную скользящую среднюю величину (EMA).
  2. Вычислить линию DIF, которая представляет собой разницу между быстрой и медленной EMA.
  3. Вычислить линию DEA, которая является EMA линии 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 золотого креста и смертного креста - это простая и понятная стратегия торговли, которая подходит для трендовых рынков. Тем не менее, уровень выигрыша этой стратегии низкий, и ей не хватает мер управления рисками, поэтому она нуждается в дальнейшей оптимизации и совершенствовании. Благодаря внедрению фильтров тренда, оптимизации параметров, добавлению управления рисками и сочетанию с другими методами анализа можно улучшить производительность и надежность этой стратегии. Тем не менее, эта стратегия все еще не может использоваться как независимая стратегия арбитража и должна быть объединена с другими стратегиями для получения лучших торговых результатов.


/*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)

		
		

Связанные

Больше