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

동적 포지션 사이징 단기 외환 거래 전략

저자:차오장, 날짜: 2024-05-28 11:11:26
태그:MACDSMAEMARSIADX

img

전반적인 설명

이 전략은 포지션 크기를 동적으로 조정함으로써 위험 관리를 향상시키는 데 초점을 맞춘 단기 외환 거래 전략이다. 전략은 현장 계좌 주식과 거래 당 위험 비율에 따라 동적 포지션 크기를 계산합니다. 또한 가격이 불리하게 움직일 때 포지션을 신속하게 닫고 가격이 유리한 방향으로 움직일 때 이익을 잠금하기 위해 엄격한 스톱 로스 및 영리 조건을 설정합니다.

전략 원칙

  1. 사용자 입력 매개 변수, 즉 단기 보유의 날 수, 가격 하락 비율, 거래 당 위험 비율, 스톱-러스 비율 및 수익률 비율을 기반으로 관련 변수를 초기화합니다.
  2. 오픈 포지션이 없는 경우 매매 당 주류 계좌 자금과 위험 비율을 기준으로 동적 포지션 크기를 계산하고 시장 가격에 짧은 포지션을 개척합니다.
  3. 입시 가격과 예상 출구 시간을 기록하세요.
  4. 보유 기간 동안, 지속적으로 가격 움직임을 모니터링 합니다. 가격이 스톱 로스 가격, 영업 가격, 또는 미리 설정 된 보유 시간까지 도달하면, 짧은 포지션을 닫습니다.
  5. 그래프에 입력 및 출구 지점을 표시하여 거래 상황을 시각적으로 표시하십시오.

이점 분석

  1. 동적 위치 크기: 계정 자금과 위험 비율에 따라 각 거래의 위치 크기를 동적으로 조정함으로써 전략은 위험을 제어하는 동시에 자본 활용을 향상시킵니다.
  2. 엄격한 스톱 로스 및 영업 취득: 엄격한 스톱 로스 및 영업 취득 수준을 설정하면 수익을 제때 확보하는 동시에 개별 거래의 위험 노출을 효과적으로 제어 할 수 있습니다.
  3. 단기 거래: 전략은 짧은 보유 기간을 가진 단기 거래 기회에 초점을 맞추고 시장 변화에 빠르게 적응하고 단기 가격 변동을 포착 할 수 있습니다.
  4. 간단하고 사용자 친화적: 전략 논리는 명확하고 매개 변수 설정은 간단하여 초보자도 배울 수 있고 사용할 수 있습니다.

위험 분석

  1. 시장 위험: 외환 시장은 매우 역동적이며, 전략이 종종 스톱 로스를 유발할 수있는 극심한 단기 가격 변동이 있습니다.
  2. 매개 변수 설정 위험: 과도하게 높은 위험 비율이나 너무 좁은 스톱 로스 및 영리 범위와 같은 부적절한 매개 변수 설정은 급속한 계좌 파업으로 이어질 수 있습니다.
  3. 포지션 크기 위험: 전략은 역동적인 포지션 크기를 사용하지만 단일 거래에 너무 많은 자본을 할당하지 않도록 각 거래에 대한 위험 비율을 신중하게 설정해야합니다.

최적화 방향

  1. 이동 평균 및 MACD와 같은 더 많은 기술적 지표를 도입하여 트렌드와 입출시기를 판단하는 데 도움이 됩니다.
  2. 전략의 위험/이익 비율을 향상시키기 위해 후속 스톱 손실 및 부분 스톱 손실을 사용하는 것과 같은 스톱 손실 및 수익을 취하는 논리를 최적화하십시오.
  3. 전략의 적응성과 안정성을 높이기 위해 다양한 통화 쌍 및 시장 조건에 대한 다른 매개 변수 조합을 설정합니다.
  4. 각 거래에 대한 위험 비율을 동적으로 조정하기 위해 켈리 기준을 사용하는 것과 같은 포지션 관리 논리를 포함합니다.

요약

이 전략은 동적인 포지션 사이징과 엄격한 스톱 로스 및 테이크프로피트 규칙을 활용하여 단기 거래에서 리스크 제어 및 수익 추구 사이의 균형을 달성합니다. 전략 논리는 간단하고 명확하여 초보자도 배우고 마스터하기에 적합합니다. 그러나 시장 변화에 따라 리스크 제어 및 지속적인 최적화 및 개선에주의를 기울여 실질적인 응용에서는 여전히 주의가 필요합니다. 더 많은 기술적 지표를 도입하고, 스톱 로스 및 테이크프로피트 논리를 최적화하고, 다른 시장 조건에 대한 매개 변수를 설정하고, 포지션 관리를 통합함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Short High-Grossing Forex Pair - Enhanced Risk Management", overlay=true)

// Parameters
shortDuration = input.int(7, title="Short Duration (days)")
priceDropPercentage = input.float(30, title="Price Drop Percentage", minval=0, maxval=100)
riskPerTrade = input.float(2, title="Risk per Trade (%)", minval=0.1, maxval=100) / 100  // Increased risk for short trades
stopLossPercent = input.float(2, title="Stop Loss Percentage", minval=0)  // Tighter stop-loss for short trades
takeProfitPercent = input.float(30, title="Take Profit Percentage", minval=0)  // Take Profit Percentage

// Initialize variables
var int shortEnd = na
var float entryPrice = na

// Calculate dynamic position size
equity = strategy.equity
riskAmount = equity * riskPerTrade
pipValue = syminfo.pointvalue
stopLossPips = close * (stopLossPercent / 100)
positionSize = riskAmount / (stopLossPips * pipValue)

// Entry condition: Enter short position at the first bar with calculated position size
if (strategy.opentrades == 0)
    strategy.entry("Short", strategy.short, qty=positionSize)
    shortEnd := bar_index + shortDuration
    entryPrice := close
    alert("Entering short position", alert.freq_once_per_bar_close)

// Exit conditions
exitCondition = (bar_index >= shortEnd) or (close <= entryPrice * (1 - priceDropPercentage / 100))

// Stop-loss and take-profit conditions
stopLossCondition = (close >= entryPrice * (1 + stopLossPercent / 100))
takeProfitCondition = (close <= entryPrice * (1 - takeProfitPercent / 100))

// Exit the short position based on the conditions
if (strategy.opentrades > 0 and (exitCondition or stopLossCondition or takeProfitCondition))
    strategy.close("Short")
    alert("Exiting short position", alert.freq_once_per_bar_close)

// Plot entry and exit points for visualization
plotshape(series=strategy.opentrades > 0, location=location.belowbar, color=color.red, style=shape.labeldown, text="Short")
plotshape(series=strategy.opentrades == 0, location=location.abovebar, color=color.green, style=shape.labelup, text="Exit")

// Add alert conditions
alertcondition(strategy.opentrades > 0, title="Short Entry Alert", message="Entering short position")
alertcondition(strategy.opentrades == 0, title="Short Exit Alert", message="Exiting short position")


관련

더 많은