연속 MACD 골든크로스와 데드크로스를 기반으로 한 트레이딩 전략

MACD EMA
생성 날짜: 2024-04-30 17:26:19 마지막으로 수정됨: 2024-04-30 17:26:19
복사: 1 클릭수: 756
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

연속 MACD 골든크로스와 데드크로스를 기반으로 한 트레이딩 전략

개요

이 전략은 MACD 지표의 연속 금포크와 데드포크 신호를 기반으로 거래한다. 연속 금포크 신호가 발생했을 때, 다중 포지션을 열고, 연속 데드포크 신호가 발생했을 때, 공백 포지션을 열는다. 동시에, 이 전략은 사용자가 위험을 제어하기 위해 스톱포크와 스톱로스 포지션을 설정할 수 있도록 한다. 또한, 이 전략은 재측정 시간 범위를 선택하여 사용자가 지정된 시간 동안 전략의 성능을 평가할 수 있도록 한다.

전략 원칙

이 전략의 핵심은 MACD 지표의 골드 포크와 덤불 신호를 사용하여 시장 추세의 전환점을 판단하는 것이다. MACD 지표는 빠른 이동 평균 ((EMA) 와 느린 이동 평균 ((EMA) 로 구성되어 있으며, 빠른 EMA와 느린 EMA가 교차할 때 골드 포크 또는 덤불 신호를 형성한다. 연속적인 골드 포크 신호는 시장이 상승 추세에 진입할 수 있음을 나타내고, 이 때 상위 포지션을 열고, 연속적인 덤불 신호는 시장이 하향 추세에 진입할 수 있음을 나타내고, 이 때 상위 포지션을 열고 있다.

전략적 이점

  1. 간단하고 이해하기 쉬운: 이 전략은 널리 사용되는 MACD 지표에 기초하고 있으며, 지표의 원리는 간단하고 이해하기 쉽고 구현하기 쉽습니다.
  2. 트렌드 추적: 전략은 연속적인 골드 포크와 데드 포크 신호를 포착하여 시장의 주요 트렌드를 추적할 수 있으며, 트렌드에서 수익을 창출할 수 있습니다.
  3. 위험 제어: 전략은 사용자가 잠재적인 위험과 손실을 제어하는 데 도움이되는 중지 및 중지 지점을 설정할 수 있습니다.
  4. 유연한 재검토: 전략은 재검토 시간 범위의 선택을 제공하며, 사용자는 필요에 따라 다른 시간 동안 전략의 성과를 평가할 수 있다.

전략적 위험

  1. 매개 변수 민감성: MACD 지표의 성능은 빠른 EMA와 느린 EMA의 주기적 선택에 따라 달라지며, 다른 매개 변수 설정은 다른 거래 신호를 유발할 수 있다.
  2. 시장 소음: 불안정하거나 불확실한 시장 조건에서 MACD 지표는 더 많은 가짜 신호를 생성할 수 있으며, 이는 빈번한 거래와 잠재적인 손실을 초래한다.
  3. 트렌드 지연: MACD 지표는 지연된 지표이며, 거래 신호는 트렌드가 확립된 후에 나타날 수 있으며, 최적의 출입 시간을 놓치게 된다.
  4. 스톱로스 위험: 시장이 급격하게 변동하면 가격이 스톱로스를 빠르게 돌파하여 예상보다 큰 손실을 초래할 수 있습니다.

전략 최적화 방향

  1. 다른 지표와 결합: 신호의 신뢰성을 높이고 가짜 신호를 필터링하기 위해 MACD 지표와 다른 기술 지표 (RSI, 브린 밴드 등) 와 결합하는 것을 고려하십시오.
  2. 최적화 매개 변수: 다양한 빠른 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
strategy("连续MACD交叉和回测范围")
//策略初始化時間設置
useDateFilter = input.bool(true, title="启用时间回测范围", group="回测范围")
backtestStartDate = input(timestamp("1 Jan 2023"), title="开始时间", group="回测范围")
backtestEndDate = input(timestamp("1 Jan 2024"), title="结束时间", group="回测范围")
inTradeWindow = true

// 定义MACD指标参数
fastLength = input.int(12, "快速EMA周期")
slowLength = input.int(26, "慢速EMA周期")
signalSmoothing = input.int(9, "信号线平滑周期")
long_win = input.float(defval = 0.01,title = "多单止盈设置", tooltip = "0.01代表1%" )
long_lose= input.float(0.01,"多单止损设置")
short_win = input.float(0.01,"空单止盈设置")
short_lose = input.float(0.01,"空单止损设置")

// 计算MACD值
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// 定义金叉和死叉的条件
crossUp = ta.crossover(macdLine, signalLine)
crossDown = ta.crossunder(macdLine, signalLine)

// 使用历史状态记录上一次交叉情况
var lastCrossUp = false
var lastCrossDown = false

// 更新历史状态
if crossUp
    lastCrossUp := true
else if crossDown
    lastCrossUp := false

if crossDown
    lastCrossDown := true
else if crossUp
    lastCrossDown := false

// 交易执行逻辑:检查是否存在连续的金叉或死叉
if lastCrossUp and crossUp and inTradeWindow
    strategy.entry("买入开多", strategy.long)
    strategy.exit("买入止盈止损", "买入开多", limit=close * (1 + long_win), stop=close * (1 - long_lose))

if lastCrossDown and crossDown and inTradeWindow
    strategy.entry("卖出开空", strategy.short)
    strategy.exit("卖出止盈止损", "卖出开空", limit=close * (1 - short_win), stop=close * (1 + short_lose))

// 显示MACD线和信号线
plot(macdLine, "MACD线", color=color.blue)
plot(signalLine, "信号线", color=color.orange)