제한된 마팅게일을 기반으로 한 고급 MACD 전략

MACD MA
생성 날짜: 2024-05-11 17:24:43 마지막으로 수정됨: 2024-05-11 17:24:43
복사: 0 클릭수: 444
1
집중하다
1226
수행원

제한된 마팅게일을 기반으로 한 고급 MACD 전략

개요

이 전략은 MACD 지표와 제한된 마틴겔 재원 관리 방법을 결합하여 시장 추세 변화에 따라 거래 기회를 잡기 위해 고안되었습니다. MACD 빠른 선과 느린 선이 발생했을 때 구매 신호가 발생하고, 죽은 포크가 발생했을 때 판매 신호가 발생했습니다. 동시에, 이 전략은 제한된 마틴겔 방법을 사용하여 회수를 제어합니다. 최대 3번의 포지션. 이 전략은 단일 거래에 1%의 고정된 스톱 손실을 설정합니다.

전략 원칙

  1. MACD 지표의 빠른 선, 느린 선 및 신호 선을 계산한다.
  2. 빠른 선과 느린 선의 교차 상황을 판단하기 위해, 황금 포크가 더 많이, 죽은 포크가 공허합니다.
  3. 고정된 단일 거래량을 설정합니다.
  4. 거래의 순이익을 기록한다.
  5. 만약 현재 당기순이익이 이전 거래보다 적고, 3번보다 적은 상장수 (加仓次数) 가 있다면, 다음 거래의 양을 두 배로 하고, 상장수 (加仓次数) 를 1번 더한다. 그렇지 않으면 거래량과 상장수 (加仓次数) 를 재설치한다.
  6. 각 과잉 주문에 대해, 가격이 1% 상승하면 정지, 1% 하락하면 정지; 빈 티켓은 반대로.
  7. 그래프에서 매매 지점을 표시하세요.

전략적 이점

  1. 트렌드 추적 지표인 MACD와 마틴게일 재무 관리를 결합하여 트렌드 상황을 파악할 수 있습니다.
  2. 고정 스톱 스톱 손실을 설정하여 단일 거래 위험을 제어합니다.
  3. 한정된 마틴겔 가설을 적용하면 추세가 지속될 때 더 높은 수익을 얻을 수 있다.
  4. 최대 3번의 포지션으로, 과도한 포지션으로 인한 포지션 폭발의 위험을 피할 수 있습니다.
  5. 차트는 매매 신호를 표시하여 전략의 효과를 볼 수 있습니다.

전략적 위험

  1. MACD 지표는 가격과 신호의 오차가 발생할 수 있으며, 이는 잘못된 판단으로 이어진다.
  2. 고정된 스톱 스톱 손실 비율은 더 큰 수익 공간을 놓칠 수도 있고 더 큰 손실을 입을 수도 있습니다.
  3. 마틴겔은 3번 이상으로 상장할 수 있지만, 충격적인 상황 속에서 연속으로 손실을 입으면 상장 폭파의 위험이 있다.
  4. 전략은 시장의 비정상적인 변동, 예를 들어 순간적인 폭등 같은 상황을 고려하지 않았습니다. 이는 예상대로 거래가 불가능하게 만들 수 있습니다.

전략 최적화 방향

  1. MA, MACD의 신호를 필터링하는 트렌드 확인 지표가 도입되는 것을 고려할 수 있습니다.
  2. 정지 손실을 최적화하는 설정, 예를 들어 ATR 또는 비율을 동적 손실로 사용한다.
  3. 포지션 수와 포지션 비율을 최적화하여 철수 위험을 제어하십시오.
  4. 가격 상승 시 거래 중지 등과 같은 비정상적인 상황에 대응하는 장치를 설정하십시오.
  5. 포지션 관리를 도입하고, 시장의 변동에 따라 포지션을 동적으로 조정하는 것을 고려하십시오.

요약하다

이 전략은 MACD 지표를 통해 트렌드를 포착하고, 제한된 마팅겔 제어 회전을 적용하여 트렌드 상황에서 좋은 효과를 얻을 수 있습니다. 그러나 전략에는 신호 실패, 고정 스톱 등과 같은 특정 위험이 있습니다. 다른 지표, 최적화 파라미터 설정, 포지션 관리 등의 방법을 도입함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=100)

// MACD 설정
fastLength = 15
slowLength = 30
signalSmoothing = 9
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)

// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.01
var int martingaleCount = 0 // 마틴게일 카운트
var float lastTradeResult = 0

// 매수 및 매도 조건
longCondition = ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(macdLine, signalLine)

// 매수 신호
if (longCondition)
    strategy.entry("Long", strategy.long, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 매도 신호
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=contractSize)
    lastTradeResult := strategy.netprofit

// 익절 및 손절 조건
strategy.close("Long", when=(close / strategy.position_avg_price >= 1.01))
strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01))
strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99))
strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99))

// 마틴게일 전략 적용
if (strategy.netprofit < lastTradeResult)
    if (martingaleCount < 3)
        contractSize := contractSize * 2
        martingaleCount := martingaleCount + 1
    else
        contractSize := 0.01
        martingaleCount := 0
else
    contractSize := 0.01
    martingaleCount := 0

// 매수, 매도 포인트 화살표로 표시
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")