SMA 추세 추종 전략

SMA MA TS OSL
생성 날짜: 2024-06-03 16:25:32 마지막으로 수정됨: 2024-06-03 16:25:32
복사: 0 클릭수: 599
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

SMA 추세 추종 전략

개요

이 전략은 간단한 이동 평균 ((SMA) 의 기울기를 기반으로 상승 추세를 식별하고 특정 조건이 충족되면 더 많은 위치를 열습니다. 또한, 선택적인 추적 중지 메커니즘을 도입하여 중지 손실 가격을 동적으로 조정하여 이익을 보호합니다. 또한, 이 전략은 가격이 너무 높을 때 다시 입지를 구축하는 것을 막기 위해 중지 된 후 다시 입장을 설정하는 조건을 설정합니다. 이러한 기능을 통해 이 전략은 상승 추세를 효과적으로 포착하고 위험을 제어하고 규율 된 거래를 구현 할 수 있습니다.

전략 원칙

  1. 지정된 주기의 SMA를 계산하고, 주어진 창 기간 동안의 경사율이 최소 경사율 절단치보다 크는지 판단하여 상승세를 결정한다.
  2. SMA 마이너스 마이너스가 긍정적이고 현재 가격이 SMA보다 높을 때, 전략은 더 많은 것을 한다.
  3. 트래킹 스톱로스가 활성화되면, 현재 시장 가격과 지정된 트래킹 스톱로스 비율에 따라 트래킹 스톱로스가 계산된다. 트래킹 스톱로스는 가격 상승에 따라 지속적으로 조정되어 수익을 보호한다.
  4. 가격이 SMA를 넘어서거나 추적 상쇄를 유발할 때, 전략은 평지한다.
  5. 스톱로스 평준을 촉발한 후, 가격이 SMA보다 지정된 비율을 초과하면, 가격이 너무 높을 때 구매하는 것을 피하기 위해 전략은 재출장하지 않습니다.

전략적 이점

  1. 트렌드 추적: SMA 마이너스 경사율을 통해 상승세를 판단하여 트렌드 기회를 효과적으로 포착한다.
  2. 위험 관리: 선택적 추적 중지 기능으로 수익을 동적으로 보호하고 잠재적인 손실을 제한할 수 있습니다.
  3. 규율적 재입장: 상쇄 후 재입장 조건은 가격이 너무 높을 때 구매를 방지하고 거래 규율을 보장한다.
  4. 매개 변수 유연성: SMA 길이, 최소 마이너스, 트래킹 스톱 손실 비율 등과 같은 여러 가지 조정 가능한 매개 변수를 제공하여 다른 시장과 거래 스타일에 따라 조정할 수 있습니다.

전략적 위험

  1. 매개 변수 민감성: 정책 성능은 매개 변수 선택에 민감하며, 부적절한 매개 변수 설정은 부등 우수 결과를 초래할 수 있다.
  2. 흔들리는 시장: 흔들리는 시장 조건에서, 자주 거래하는 것은 높은 거래 비용과 잠재적인 손실을 초래할 수 있다.
  3. 갑작스러운 사건: 시장의 갑작스러운 사건과 비정상적인 변동은 전략의 실패 또는 예상치 못한 손실을 초래할 수 있습니다.

전략 최적화 방향

  1. 동적 변수 최적화: 시장 상황에 따라 동적으로 SMA 길이, 최소 기울기 등의 변수를 조정하는 적응 메커니즘을 도입하여 다른 시장 환경에 적응합니다.
  2. 위험 제어 강화: 다른 위험 관리 기술과 결합하여, 변동률 기반의 포지션 조정, 동적 중단 등으로, 위험 을 더욱 제어한다.
  3. 다공간 쌍방향 거래: 상공 거래를 지원하기 위한 확장 전략으로 하향 추세에서도 수익을 얻을 수 있다.
  4. 다중 시간 프레임 확인: 여러 시간 프레임의 신호를 결합하여 트렌드 판단의 신뢰성과 안정성을 향상시킵니다.

요약하다

이 전략은 SMA 트렌드 추적, 스톱 추적 및 징계 재입장과 같은 메커니즘을 사용하여 상승 추세를 포착하면서 위험을 제어합니다. 최적화된 매개 변수 설정, 위험 관리 강화, 양방향 거래 및 다중 시간 프레임 확인을 지원하는 방법과 같은 방법을 통해 전략의 적응성과 강도를 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA Incline Strategy with Optional Trailing Stop-Loss", overlay=true, calc_on_every_tick=true)

// Input parameters
windowSize = input.int(20, title="Window Size")
maLength = input.int(150, title="Moving Average Length")
minSlope = input.float(0.1, title="Minimum Slope")
useTrailingStop = input.bool(true, title="Use Trailing Stop-Loss")
trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 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

// Buy condition
buyCondition = isAboveMinSlope and isAboveMa

// Execute strategy
if (buyCondition and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

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

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