골든 크로스와 데스 크로스 더블 이동 평균 MACD 추세 추적 전략


생성 날짜: 2023-12-22 14:17:34 마지막으로 수정됨: 2023-12-22 14:17:34
복사: 0 클릭수: 381
1
집중하다
1166
수행원

골든 크로스와 데스 크로스 더블 이동 평균 MACD 추세 추적 전략

개요

이 전략은 빠른 이동 평균, 느린 이동 평균, MACD 지표를 계산하여 가격 경향에 대한 판단을 구현하고, 금 포크 사형 포크 거래 신호를 구성하며, 스톱 스톱 손실 추적 스톱 손실과 결합하여 수익을 잠금화하여 추세에 대한 지속적인 추적을 구현합니다.

전략 원칙

이 전략은 크게 세 가지 지표에 기반을 두고 있습니다.

먼저, 빠른 이동 평균과 두 개의 느린 이동 평균을 계산한다. 빠른 이동 평균 위에 두 개의 느린 이동 평균을 통과하면 구매 신호가 생성되고, 빠른 이동 평균 아래 두 개의 느린 이동 평균을 통과하면 판매 신호가 생성된다. 이렇게 가격의 단기 경향과 장기 경향의 관계를 판단하여 금 포크 거래가 이루어진다.

둘째, MACD 선, 신호 선 및 직각 도표를 포함하는 MACD 지표를 계산한다. MACD 직각 도표>0일 때는 다목도표; MACD 직각 도표일 때는 공백도표이다. 이렇게 골드 포크 사다리 신호의 신뢰성을 판단하는데 도움을 준다.

마지막으로, 스톱스톱로스 트래킹 스톱스톱 메커니즘과 결합. 스톱스톱과 스톱스톱을 사용하여 수익을 잠금하고 위험을 제어합니다. 스톱스톱을 사용하여 수익을 추적합니다.

전략적 이점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 금색 포크 데드 포크는 MACD 지표와 결합하여 가격 동향을 신뢰할 수 있습니다.
  2. 손실을 막기 위한 스톱포인트 설정
  3. 자동으로 이동하는 손실을 추적하여 지속적으로 수익을 고정하고 추세를 최대한 활용하십시오.
  4. 변수 설정은 유연하고, 이동 평균 주기 등을 사용자 정의할 수 있다.

전략적 위험

이 전략에는 몇 가지 위험도 있습니다.

  1. 가격 변동이 있을 때, 정지 손실이 유발될 위험이 있습니다.
  2. 장기적인 운행 추적 손실은 지속적인 모니터링과 적시에 조정이 필요합니다.
  3. 잘못된 매개 변수 설정은 거래 빈도 또는 표 누락을 초래할 수 있다.

위험과 대응하는 방법:

  1. 불필요한 손실을 방지하기 위해 합리적인 정지점을 설정합니다.
  2. 매개 변수 설정을 주기적으로 확인하고 최적화합니다.
  3. 인적 개입과 상태 모니터링.

전략 최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. RSI와 같은 더 많은 지표 판단을 추가하여 신호를 더 신뢰할 수 있게 한다.
  2. 이동 평균 변수를 최적화하여 다양한 품종의 특성에 맞게 만들 수 있습니다.
  3. 스톱 스톱 손실의 동적 추적 알고리즘을 추가하여 시장 변화에 따라 스톱 스톱 손실을 변경할 수 있도록;
  4. 포지션 개설 횟수, 포지션 제어 등의 자금 관리 모듈을 늘린다.

요약하다

이 전략은 전체적으로 금색 포크와 MACD 지표를 사용하여 추세를 판단하고, 손실을 추적하는 간단한 효과적인 전략이다. 장점은 트렌드 추적과 이익 잠금을 구현하고, 사용자 정의가 강하며, 여러 품종에 적용되며, 범용적인 변수 최적화 전략이다. 특정 위험과 최적화 할 수있는 공간이 있지만, 전체적으로 신뢰할 수있는 실용적인 거래 전략이다.

전략 소스 코드
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy('The Puria Method', shorttitle = 'Puria',overlay = true)

//=== GENERAL INPUTS ===

// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 5, title = "Fast MA Period", minval = 1)

// long ma 1
maSlow1Source   = input(defval = low, title = "Slow MA1 Source")
maSlow1Length   = input(defval = 85, title = "Slow MA Period", minval = 1)

// long ma 2
maSlow2Source   = input(defval = low, title = "Slow MA2 Source")
maSlow2Length   = input(defval = 75, title = "Slow MA Period", minval = 1)

//macd
macdFastLength   = input(defval = 12, title = "Fast MACD Period", minval = 1)
macdSlowLength   = input(defval = 26, title = "Slow MACD Period", minval = 1)
macdSmaLength   = input(defval = 9, title = "SMA MACD Period", minval = 1)

// the risk management inputs
inpTakeProfit   = input(defval = 30, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 10, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 5, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
maFast = ema(maFastSource, maFastLength)
maSlow1 = wma(maSlow1Source, maSlow1Length)
maSlow2 = wma(maSlow2Source, maSlow2Length)
[_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50)
slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0
signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0

// ===STRATEGY===
strategy.entry(id = "Long", long = true, when = signalUp) 
strategy.entry(id = "Short", long = false, when = signalDown)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)