리소스 로딩... 로딩...

제한된 마틴게일과 함께 고급 MACD 전략

저자:차오장, 날짜: 2024-05-11 17:24:43
태그:MACDMA

img

전반적인 설명

이 전략은 시장 트렌드가 변할 때 거래 기회를 포착하기 위해 MACD 지표와 제한된 마틴게일 돈 관리 방법을 결합합니다. MACD 빠른 라인이 느린 라인을 넘을 때 구매 신호가 생성되며 빠른 라인이 느린 라인을 넘을 때 판매 신호가 생성됩니다. 동시에 전략은 최대 3 개의 추가 포지션을 사용하여 유출을 제어하기 위해 제한된 마틴게일 방법을 사용합니다. 전략은 각 거래에 대해 1%의 고정 수익 및 스톱 손실을 설정합니다.

전략 원칙

  1. MACD 지표의 빠른 라인, 느린 라인 및 신호 라인을 계산합니다.
  2. 빠른 선과 느린 선의 교차점을 결정합니다. 상승세 교차선에서 길고 하락세 교차선에서 짧습니다.
  3. 각 거래에 대해 고정된 거래량 (0.01) 을 설정합니다.
  4. 이전 거래의 순이익을 기록합니다.
  5. 현재 순이익이 이전 거래보다 적고 추가 포지션 수가 3개 미만인 경우 다음 거래량을 두 배로 늘리고 추가 포지션 수를 1개로 늘립니다. 그렇지 않으면 거래량과 추가 포지션 수를 재설정합니다.
  6. 각 긴 포지션에 대해, 가격이 1% 상승하면 수익을 취하고, 1% 떨어지면 손실을 중지합니다. 짧은 포지션에 대해 반대로.
  7. 차트에서 구매 및 판매 포인트를 표시합니다.

전략적 장점

  1. 트렌드를 따르는 MACD 지표를 마틴게일 화폐 관리와 결합하여 트렌드 시장을 더 잘 파악할 수 있습니다.
  2. 일정한 수익을 취하고 개인 거래 위험을 통제하기 위해 손실을 멈추는 수준이 설정됩니다.
  3. 트렌드가 계속될 때 더 높은 수익을 얻기 위해 제한된 마틴게일 포지션 사이징을 사용합니다.
  4. 추가 포지션의 최대 수를 3개로 제한하여 계좌 파업으로 이어지는 과도한 포지션 크기의 위험을 피합니다.
  5. 마크는 전략 성과를 쉽게 관찰하기 위해 차트에 구매 및 판매 신호를 표시합니다.

전략 위험

  1. MACD 지표는 신호와 가격 사이의 오차를 경험할 수 있으며 잘못된 판단으로 이어질 수 있습니다.
  2. 고정된 수익률과 스톱 로스 비율은 더 큰 수익 기회를 놓칠 수도 있고 더 큰 손실을 입을 수도 있습니다.
  3. 마틴게일 포지션 사이징은 3배로 제한되지만, 불안한 시장에서 연속적인 손실을 경험할 때 여전히 계좌 폭발 위험이 있습니다.
  4. 이 전략은 예상대로 실행할 수 없는 갑작스러운 격차와 같은 비정상적인 시장 변동을 고려하지 않습니다.

전략 최적화 방향

  1. MACD 신호를 필터링하기 위해 MA와 같은 트렌드 확인 지표를 도입하는 것을 고려하십시오.
  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")

관련

더 많은