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

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

저자:차오장, 날짜: 2024-06-03 10:43:00
태그:MACDATR

img

전반적인 설명

이 전략은 트렌딩 시장 움직임을 파악하고 위험을 제어하기 위해 MACD 지표와 마틴게일 금전 관리 방법을 결합합니다. 전략은 MACD 빠른 라인과 느린 라인의 교차를 거래 신호로 사용하고, 포지션 크기를 제어하기 위해 제한된 수의 마틴게일 접근 방식을 채택합니다. 손실 거래가 발생하면 전략은 이전 손실을 복구하기 위해 다음 거래의 계약을 최대 3 배로 두 배로 증가시킵니다. 동시에 전략은 위험을 더 제어하기 위해 수익을 취하고 중지 손실 조건을 설정합니다.

전략 원칙

  1. MACD 패스트 라인 (디폴트 기간 12) 및 슬로우 라인 (디폴트 기간 26) 의 크로스오버를 거래 신호로 사용하십시오. 패스트 라인이 슬로우 라인 위에 넘어가면 긴 라인, 패스트 라인이 슬로우 라인 아래에 넘어가면 짧은 라인.
  2. 초기 계약 수는 0.02입니다. 손실 거래가 발생하면 다음 거래의 계약 수를 최대 3 배까지 두 배로 증가시킵니다. 세 번의 두 배 이후 수익성이 달성되지 않으면 계약 수를 0.02의 초기 값으로 재설정합니다.
  3. 영업 조건 설정: 긴 포지션의 경우 입시 가격보다 1.5% 상승할 때 포지션을 닫습니다. 짧은 포지션의 경우 입시 가격보다 1% 떨어질 때 포지션을 닫습니다.
  4. 스톱 로스 조건을 설정합니다. 긴 포지션의 경우 가격이 입상 가격보다 1% 떨어지면 포지션을 닫습니다. 짧은 포지션의 경우 가격이 입상 가격보다 1% 상승하면 포지션을 닫습니다.

전략적 장점

  1. 트렌드를 따르는 MACD 지표와 마틴게일 금전 관리 방법을 결합함으로써 전략은 유출을 통제하면서 트렌드 시장에서 이익을 얻을 수 있습니다.
  2. 이 전략은 제한된 수의 마틴게일 접근법을 사용하며, 무제한 레버리징의 위험을 피합니다.
  3. 이윤을 취득하고 손실을 멈추는 명확한 조건이 설정되어 있으며, 추가로 위험을 통제합니다.
  4. 코드 논리는 명확하고 이해하기 쉽고 구현하기 쉽습니다.

전략 위험

  1. 마틴게일 방식은 레버링의 수를 제한하지만, 여전히 과잉 레버링의 위험이 있으며 큰 손실을 초래합니다.
  2. MACD 지표가 가격과 다른 경우 거래 신호가 유효하지 않습니다.
  3. 고정된 영업이익률과 영업손실률은 다른 시장 조건에 적응하지 못할 수 있으며, 이로 인해 영업이익이 조기에 취득되거나 손실이 중단될 수 있습니다.

전략 최적화 방향

  1. 현재 시장 변동성 및 계정 리스크 용량에 따라 마틴게일 레버리지 비율과 수를 동적으로 조정하는 것을 고려하십시오.
  2. RSI와 볼린저 밴드와 같은 다른 기술적 지표를 MACD 신호와 결합하여 더 신뢰할 수 있는 거래 신호를 형성합니다.
  3. ATR 기반의 취득 및 중단 손실과 같은 적응 가능한 취득 및 중단 손실 방법을 채택하거나 시장 추세와 변동성에 따라 취득 및 중단 손실 비율을 동적으로 조정합니다.
  4. 각 거래의 포지션 크기를 회계 잔액 및 위험 용도와 같은 요소를 기반으로 동적으로 조정하는 포지션 관리 모듈을 도입합니다.

요약

이 전략은 MACD 지표와 마틴게일 금전 관리 방법을 결합하여 위험을 제어하면서 트렌딩 시장에서 이익을 얻으려고 한다. 전략 논리는 명확하고 구현하기 쉽지만, 여전히 마틴게일 레버리지와 고정된 영업이익 및 스톱-러스 비율의 한계와 관련된 위험이 있다. 미래에, 전략은 레버리지 접근 방식을 동적으로 조정하고, 거래 신호를 최적화하고, 적응성 있는 영업이익 및 스톱-러스 방법을 채택하고, 전략의 안정성과 수익성을 향상시키기 위해 포지션 관리를 구현함으로써 최적화 될 수 있다.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 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=500)

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

// 계약수 및 이전 거래 결과 기록
var float contractSize = 0.02 // 계약 수를 0.05로 시작
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.015))
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.02 // 리셋 할 때 0.05로 리셋
        martingaleCount := 0
else
    contractSize := 0.02 // 초기화
    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")

관련

더 많은