이동평균선, 단순이동평균선, 이동평균경사선, 트레일링스톱, 재진입

MA SMA MA
생성 날짜: 2024-06-07 16:41:53 마지막으로 수정됨: 2024-06-07 16:41:53
복사: 0 클릭수: 891
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균선, 단순이동평균선, 이동평균경사선, 트레일링스톱, 재진입

개요

이 전략은 이동 평균 (MA) 의 기울기와 MA의 상대적 위치에 대한 가격에 따라 거래 결정을 내립니다. MA의 기울기가 최소 기울기 절치보다 크고 MA보다 가격이 높을 때 전략이 구매됩니다. 동시에, 전략은 추적 스톱 손실 (Trailing Stop Loss) 을 사용하여 위험을 관리하고 특정 조건 하에서 재입장 (Re-Entry) 합니다. 이 전략은 상승 추세에서 기회를 잡는 것을 목표로하며 동적 스톱 손실과 재입장 메커니즘을 통해 수익과 위험을 최적화합니다.

전략 원칙

  1. 지정된 기간의 간단한 이동 평균 ((SMA) 을 주요 경향 지표로 계산한다.
  2. 현재 트렌드의 강도를 판단하기 위해 지정된 창 기간 동안 SMA의 기울기를 계산합니다.
  3. SMA 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너스 마이너
  4. 일단 시장에 진입하면, 전략은 트래킹 스톱스 메커니즘을 사용하여 현재 가격과 지정된 비율에 따라 스톱스 가격을 동적으로 조정한다.
  5. 만약 가격이 트래킹 스톱로즈 가격에 닿으면, 전략적으로 청산하고 스톱로즈가 발생했다고 표시한다.
  6. 스톱 손실이 발생했을 때, 가격이 SMA 아래의 특정 퍼센트로 되돌아가면 전략이 다시 시작됩니다.
  7. 만약 가격이 SMA를 넘어간다면, 전략은 곧바로 청산한다.

우위 분석

  1. 트렌드 추적: SMA 경사율과 가격과 SMA의 상대적인 위치를 통해 트렌드를 판단하여 전략이 상승 추세에서 수익을 창출하는 데 도움이 됩니다.
  2. 동적 스톱: 트래킹 스톱 메커니즘을 적용하여 가격 변화의 동적으로 스톱 위치를 조정하여 이익을 더 잘 보호하고 손실을 제한 할 수 있습니다.
  3. 재입장: 스톱 손실이 발생 한 후, 전략은 잠재적인 반전 기회를 잡기 위해 SMA 아래로 특정 비율로 회수 할 때 재입장합니다.
  4. 변수 유연성: 전략은 SMA 주기, 최소 기울기 마이너스, 추적 스톱 손실 비율 등과 같은 여러 가지 조정 가능한 변수를 제공하여 다른 시장 조건에 따라 최적화 할 수 있습니다.

위험 분석

  1. 매개 변수 민감성: 정책의 성능은 매개 변수 설정에 민감할 수 있으며, 부적절한 매개 변수 선택은 정책의 성능이 좋지 않을 수 있다.
  2. 트렌드 인식: 전략은 주로 SMA의 기울기와 가격과 SMA의 상대적인 위치에 의존하여 트렌드를 판단합니다. 일부 시장 조건에서는 잘못된 신호가 발생할 수 있습니다.
  3. 중단 빈도: 추적 중지 메커니즘은 특히 시장의 큰 변동이있는 경우, 전략의 전반적인 성능에 영향을 미치며, 자주 중단으로 이어질 수 있습니다.
  4. 재입장 위험: 재입장 메커니즘은 어떤 경우에 전략이 재입장 후 추가 하락을 겪게 하여 손실을 확대할 수 있다.

최적화 방향

  1. 트렌드 확인: 트렌드를 판단할 때, 다른 기술 지표 또는 가격 행동 패턴과 결합하여 트렌드 식별의 정확도를 높일 수 있다.
  2. 스톱 최적화: 다른 스톱 방법을 탐색 할 수 있습니다. 예를 들어, 변동률 또는 지지 / 저항 위치에 기반한 스톱은 다른 시장 상황에 더 잘 적응합니다.
  3. 재입장 조건: 재입장 조건을 최적화 할 수 있습니다. 가격 회수의 규모, 시간 길이를 고려하여 불리한 재입장 신호를 필터링합니다.
  4. 포지션 관리: 포지션 관리 메커니즘을 도입하여 시장의 변동성이나 기타 위험 지표에 따라 거래 당 포지션 크기를 조정하여 전체 위험 을 제어합니다.

요약하다

이 전략은 이동 평균의 기울기와 가격과 이동 평균의 상대적인 위치를 통해 트렌드를 판단하고, 스톱을 추적하고 조건부 재입장을 하는 메커니즘을 사용하여 거래를 관리한다. 전략의 장점은 트렌드 추적 능력, 동적 스톱 보호 및 재입장 기회를 포착하는 데 있다. 그러나 전략에는 변수 민감성, 트렌드 식별 오류, 스톱 빈도 및 재입장 위험과 같은 잠재적인 문제도 있다.

전략 소스 코드
/*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