SMA 및 ATR 기반 트렌드 추적 전략

저자:차오장, 날짜: 2024-01-18 16:04:51
태그:

img

I. 전략 이름

이 전략은SMA 및 ATR 기반 트렌드 추적 전략.

전략 개요

이 전략은 가격 트렌드 방향을 결정하기 위해 SMA 지표를 사용하여 트렌드를 추적하기 위해 ATR 지표로 스톱 로스 포지션을 설정합니다. 가격이 상승 추세를 깨고 가격이 추세를 넘어갈 때 짧고 트렌드 거래를 구현하기 위해 가격이 하락 추세를 깨면 길게됩니다.

III. 전략 원칙

1. 진입 신호

(1) 닫기 가격이 상승하고 SMA보다 높을 때 길게 가십시오.
(2) 닫기 가격이 하락하고 SMA보다 낮을 때 짧습니다.

2. 손실 설정 중지

ATR 지표의 값과 정해진 스톱 손실 배수를 스톱 손실 위치로 사용한다.

3. 손실 업데이트 를 중단

각 바가 닫히면, 스톱 로스 포지션을 확인하고 현재 가격에 가까운 스톱 로스 값으로 업데이트하십시오.

4. 출구 신호

가격이 스톱 로스 라인에 닿을 때 적극적으로 스톱 로스를 합니다.

IV. 전략의 장점

1. 강한 경향 추적 능력

ATR 지표의 동적 스톱 로스 설정은 트렌드를 자동으로 추적 할 수 있습니다.

2. 잘 조절 하는 것

엄격한 스톱 로스 규칙은 거래당 최대 마이너 다운을 제어하는 데 도움이 됩니다.

3. 간단한 매개 변수 설정

단지 3개의 매개 변수만으로 조정과 최적화를 쉽게 할 수 있습니다.

V. 전략 의 위험

1. 너무 느슨한 스톱 로스 위험

만약 스톱 로스 인더플리퍼가 너무 높게 설정되면 스톱 로스 포지션이 너무 느슨해져서 드라우다운이 증가할 수 있습니다.

2. 거짓 발병 위험성

가격의 잘못된 브레이크는 트렌드 방향을 놓치게 할 수 있습니다. 신호를 필터하기 위해 다른 지표를 사용해야합니다.

3. 매개 변수 최적화의 위험

매개 변수 최적화에 과도하게 의존하면 곡선 부착이 발생할 수 있습니다. 매개 변수의 안정성은 신중하게 평가되어야합니다.

전략 최적화 방향

1. 스톱 로스 알고리즘 최적화

다른 종류의 스톱 로스 알고리즘을 테스트 할 수 있습니다. 예를 들어 이동 스톱 로스, 비례 스톱 로스 등이 있습니다.

2. 필터 신호 를 추가 함

다른 지표가 추가될 수 있습니다. 예를 들어 거래량 조건을 추가하는 것 처럼.

3. 매개 변수 안정성 평가

다른 제품과 시간 프레임에 대한 매개 변수 적응성을 평가하기 위해 백트 테스트 역사.

VII. 요약

이 전략의 전반적인 아이디어는 명확하다. 그것은 SMA를 통해 트렌드 방향을 판단하고 ATR을 사용하여 좋은 드래운 다운 제어로 트렌드를 추적한다. 그것은 중장기 트렌드 거래에 적합하다. 그러나 매개 변수는 여전히 라이브 거래에서 적절한 조정이 필요하며 과도한 최적화 위험이 예방되어야 한다.


/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-16 17:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="SMA with ATR", overlay=true)

smaLen = input.int(100, title="SMA Length")

atrLen     = input.int(10, title="ATR Length")
stopOffset = input.float(4, title="Stop Offset Multiple", step=0.25)


smaValue  = ta.sma(close, smaLen)
stopValue = ta.atr(atrLen) * stopOffset


lowerCloses = close < close[1] and 
     close[1] < close[2] and
     close[2] < close[3]

enterLong = close > smaValue and 
     lowerCloses


longStop = 0.0
longStop := if enterLong and strategy.position_size < 1
    close - stopValue
else
    math.max(close - stopValue, longStop[1])


higherCloses = close > close[1] and 
     close[1] > close[2] and
     close[2] > close[3]

enterShort = close < smaValue and 
     higherCloses


shortStop = 0.0
shortStop := if enterShort and strategy.position_size > -1
    close + stopValue
else
    math.min(close + stopValue, shortStop[1])


plot(smaValue, color=#4169e1, linewidth=2, title="SMA")

plot(strategy.position_size > 0 ? longStop : na, color=color.lime,
     style=plot.style_linebr, title="Long stop", linewidth=2)

plot(strategy.position_size < 0 ? shortStop : na, color=color.red,
     style=plot.style_linebr, title="Short stop", linewidth=2)


if enterLong
    strategy.entry("EL", strategy.long)

if enterShort
    strategy.entry("ES", strategy.short)


if strategy.position_size > 0
    strategy.exit("SL Long", from_entry="EL", stop=longStop)

if strategy.position_size < 0
    strategy.exit("SL Short", from_entry="ES", stop=shortStop)


if enterLong
    strategy.cancel("Exit Short")

if enterShort
    strategy.cancel("Exit Long")


더 많은