다이나믹 포지션 사이징 단기 외환 거래 전략

MACD SMA EMA RSI ADX
생성 날짜: 2024-05-28 11:11:26 마지막으로 수정됨: 2024-05-28 11:11:26
복사: 8 클릭수: 640
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다이나믹 포지션 사이징 단기 외환 거래 전략

개요

이 전략은 단선 외환 거래 전략으로, 주요 아이디어는 포지션 규모를 동적으로 조정하여 위험 관리를 강화하는 것입니다. 전략은 현재 계정 지분 및 각 거래의 위험 비율에 따라 역동적인 포지션 규모를 계산합니다. 동시에, 전략은 엄격한 중지 및 중지 조건을 설정하고, 가격이 불리하게 변할 때 신속하게 청산하여 위험을 제어합니다. 가격이 유리하게 변할 때, 수익을 적시에 잠금합니다.

전략 원칙

  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")