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

MA, SMA, MA 슬로프, 트래일링 스톱 손실, 재입구

저자:차오장, 날짜: 2024-06-07 16:41:53
태그:MASMAMA

img

전반적인 설명

이 전략은 이동 평균 (MA) 의 기울기와 MA에 대한 가격의 상대적 위치에 따라 거래 결정을 내립니다. MA 기울기가 최소 기울기 문턱보다 크고 가격이 MA보다 높을 때 전략은 긴 위치를 시작합니다. 또한 전략은 리스크를 관리하기 위해 트레일링 스톱 로스를 사용하고 특정 조건 하에서 재입구를 허용합니다. 전략은 역동적 인 스톱 로스 및 재입구 메커니즘을 통해 수익과 위험을 최적화하면서 상승 추세의 기회를 포착하는 것을 목표로합니다.

전략 원칙

  1. 주요 트렌드 지표로 지정된 기간 동안의 단순 이동 평균 (SMA) 을 계산합니다.
  2. 현재 트렌드의 강도를 결정하기 위해 지정된 창 크기의 SMA의 기울기를 계산합니다.
  3. SMA 기울기가 최소 기울기 문턱보다 높고 가격이 SMA보다 높으면 시장이 상승 추세라고 간주하고 긴 포지션을 시작합니다.
  4. 포지션이 열리면 전략은 트레이링 스톱 로스 메커니즘을 사용하여 현재 가격과 특정 비율에 따라 스톱 로스 수준을 동적으로 조정합니다.
  5. 만약 가격이 마이너스 스톱 로스 레벨에 도달한다면, 전략은 포지션을 종료하고 스톱 로스 이벤트가 발생한다는 것을 표시합니다.
  6. 스톱 로스 이벤트가 발생하면 가격이 특정 비율로 SMA 아래로 다시 올라간다면 전략은 시장에 다시 진입합니다.
  7. 만약 가격이 SMA 아래로 넘어가면 전략은 직결적으로 포지션을 닫습니다.

이점 분석

  1. 트렌드 추적: SMA 기울기와 SMA에 대한 가격의 상대적 위치를 사용하여 전략은 상승 추세에서 이익을 얻는 데 도움이됩니다.
  2. 동적 스톱 로스: 후속 스톱 로스 메커니즘은 가격 변화에 따라 동적으로 스톱 로스 수준을 조정하여 이익을 더 잘 보호하고 손실을 제한합니다.
  3. 재입구: 스톱 로스 이벤트가 발생하면 가격이 특정 비율로 SMA 아래로 다시 올라갈 때 전략이 시장에 다시 진출하여 잠재적인 리바운드 기회를 허용합니다.
  4. 유연한 매개 변수: 전략은 다양한 시장 조건에 따라 최적화 될 수 있는 여러 가지 조정 가능한 매개 변수를 제공합니다. 예를 들어 SMA 기간, 최소 기울기 문턱, 후속 스톱 로스 비율 등이 있습니다.

위험 분석

  1. 매개 변수 민감성: 전략의 성능은 매개 변수 설정에 민감할 수 있으며, 잘못된 매개 변수 선택은 열등한 결과를 초래할 수 있습니다.
  2. 트렌드 인식: 전략은 주로 SMA 기울기와 SMA에 대한 가격의 상대적 위치에 의존하여 특정 시장 조건에서 잘못된 신호를 생성할 수 있는 트렌드를 식별합니다.
  3. 스톱 로스 빈도: 트레일링 스톱 로스 메커니즘은 특히 매우 변동적인 시장 조건에서 일반적인 전략 성과에 영향을 미치는 빈도의 스톱 로스를 초래할 수 있습니다.
  4. 재진출 위험: 재진출 메커니즘은 때때로 전략이 추가 감소 후 시장에 재진출하여 손실을 증폭시킬 수 있습니다.

최적화 방향

  1. 트렌드 확인: 트렌드 인식의 정확성을 향상시키기 위해, 추가 기술 지표 또는 가격 행동 패턴을 SMA 기울기와 가격 위치와 함께 통합하는 것을 고려하십시오.
  2. 스톱 로스 최적화: 다른 시장 조건에 더 잘 적응하기 위해 변동성 기반 또는 지원/저항 기반 스톱 로스와 같은 대체 스톱 로스 방법을 탐구합니다.
  3. 재입구 조건: 불리한 재입구 신호를 필터링하기 위해 가격 리트레이스의 규모와 기간과 같은 요소를 고려하여 재입구 조건을 정제합니다.
  4. 포지션 크기: 시장 변동성 또는 다른 위험 지표에 따라 각 거래의 크기를 조정하는 포지션 크기 메커니즘을 도입하여 전체 위험 노출을 제어하는 데 도움이됩니다.

요약

이 전략은 유동 평균의 기울기와 유동 평균에 대한 가격의 상대적 위치에 따라 트렌드를 결정한다. 트레이일링 스톱 로스 (Trailing Stop Loss) 와 조건부 재입구 메커니즘을 사용하여 트레이드를 관리한다. 전략의 장점은 트렌드를 따르는 능력, 동적 스톱 로스 보호 및 재입구 기회를 포착하는 데 있다. 그러나 전략에는 매개 변수 민감성, 트렌드 인식 오류, 스톱 로스 빈도, 재입구 위험과 같은 잠재적 인 단점도 있다. 최적화 방향에는 트렌드 인식, 스톱 로스 방법, 재입구 조건 및 포지션 사이징을 정제하는 것이 포함된다. 전략을 실제 적용할 때 특정 시장 특성과 거래 스타일에 따라 신중하게 평가하고 조정하는 것이 중요합니다.


/*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("MA Incline Strategy with Trailing Stop-Loss and Conditional Re-Entry", overlay=true, calc_on_every_tick=true)

// Input parameters
windowSize = input.int(10, title="Window Size")
maLength = input.int(150, title="Moving Average Length")
minSlope = input.float(0.001, title="Minimum Slope")
trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 100
reEntryPercentage = input.float(4.2, title="Re-Entry Percentage Above MA (%)") / 100

// Calculate the moving average
ma = ta.sma(close, maLength)

// Calculate the slope of the moving average over the window size
previousMa = ta.sma(close[windowSize], maLength)
slopeMa = (ma - previousMa) / windowSize

// Check conditions
isAboveMinSlope = slopeMa > minSlope
isAboveMa = close > ma

// Variables to track stop loss and re-entry condition
var bool stopLossOccurred = false
var float trailStopPrice = na
// Buy condition
buyCondition = isAboveMinSlope and isAboveMa and ((not stopLossOccurred) or (stopLossOccurred and low < ma * (1 + reEntryPercentage)))

// Execute strategy
if (buyCondition and strategy.opentrades == 0)
    if (stopLossOccurred and close < ma * (1 + reEntryPercentage))
        strategy.entry("Long", strategy.long)
        stopLossOccurred := false
    else if (not stopLossOccurred)
        strategy.entry("Long", strategy.long)

// Trailing stop-loss
if (strategy.opentrades == 1)
    // Calculate the trailing stop price
    trailStopPrice := close * (1 - trailingStopPercentage)
    // Use the built-in strategy.exit function with the trailing stop
    strategy.exit("Trail Stop", "Long", stop=close * (1 - trailingStopPercentage))

// Exit condition
sellCondition = ta.crossunder(close, ma)
if (sellCondition and strategy.opentrades == 1)
    strategy.close("Long")

// Check if stop loss occurred
if (strategy.closedtrades > 0)
    lastExitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)
    if (not na(trailStopPrice) and lastExitPrice <= trailStopPrice)
        stopLossOccurred := true

// Reset stop loss flag if the price crosses below the MA
if (ta.crossunder(close, ma))
    stopLossOccurred := false


관련

더 많은