MACD와 제한된 마팅게일을 결합한 고급 전략

MACD ATR
생성 날짜: 2024-06-03 10:43:00 마지막으로 수정됨: 2024-06-03 10:43:00
복사: 2 클릭수: 367
1
집중하다
1217
수행원

MACD와 제한된 마팅게일을 결합한 고급 전략

개요

이 전략은 MACD 지수와 마틴겔 재무 관리 방법을 결합하여 트렌드적인 행동을 포착하면서 위험을 통제하기 위해 고안되었습니다. 전략은 MACD 지수의 빠른 선과 느린 선의 교차를 거래 신호로 사용하고 제한된 수의 마틴겔 방식을 사용하여 포지션 규모를 제어합니다. 손실 거래가 발생하면 전략은 이전 손실을 보충하기 위해 다음 거래의 계약 수를 두 배, 최대 세 배로 늘립니다.

전략 원칙

  1. MACD 지표의 패스트 라인 (기본 주기는 12) 과 패스트 라인 (기본 주기는 26) 의 교차를 거래 신호로 사용하여 패스트 라인에서 패스트 라인을 통과할 때 더하고 패스트 라인 아래에서 패스트 라인을 통과할 때 공백을 낸다.
  2. 초기 계약 수는 0.02이며, 손실 거래가 발생하면 다음 거래의 계약 수를 두 배, 최대 세 배로 늘립니다. 세 배가 된 후에도 수익을 얻지 못하면 계약 수를 초기 값인 0.02로 재설정합니다.
  3. 정지 조건: 다단계 포지션에서는, 가격이 포지션 개시 가격보다 1.5% 상승했을 때 매매; 공백 포지션에서는, 가격이 포지션 개시 가격보다 1% 떨어졌을 때 매매.
  4. 스톱로스 조건을 설정: 다단계 포지션에서는, 가격이 포지션 개시 가격보다 1% 떨어졌을 때 매매; 공백 포지션에서는, 가격이 포지션 개시 가격보다 1% 상승했을 때 매매.

전략적 이점

  1. 트렌드 추적 지표인 MACD와 마틴겔의 재무 관리 방법을 결합하여, 트렌드 상황에서 수익을 올릴 수 있으며, 동시에 회수를 제어할 수 있다.
  2. 제한된 마틴겔을 사용해서 무제한으로 코드를 추가하는 위험을 피한다.
  3. 명확한 스톱 및 스톱 손실 조건을 설정하여 위험을 더욱 제어합니다.
  4. 코드의 논리는 명확하고, 이해하기 쉽고, 구현하기 쉽습니다.

전략적 위험

  1. 마틴겔 방식은 코딩 횟수를 제한하지만, 너무 깊은 코딩으로 인해 큰 손실이 발생할 위험이 있습니다.
  2. MACD 지표가 가격과 이탈할 경우 거래 신호가 무효화될 수 있다.
  3. 고정된 스톱 스톱 손실 비율은 시장의 다른 상황에 적응하지 못할 수 있으며, 이는 조기 스톱 스톱 또는 스톱 스피드를 초래할 수 있다.

전략 최적화 방향

  1. 마틴게일카드의 비율과 수를 동적으로 조정할 수 있으며, 현재 시장의 변동성과 계좌의 위험 감수성에 따라 가변적으로 조정할 수 있다.
  2. MACD 신호를 기반으로 RSI, 브린 띠 등과 같은 다른 기술 지표와 결합하여 더 신뢰할 수있는 거래 신호를 형성합니다.
  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")