SMA 전략의 추세

저자:차오장, 날짜: 2023-11-02 16:58:23
태그:

img

전반적인 설명

트렌드 다음 SMA 전략은 단순한 이동 평균 (SMA) 과 빠른 SMA의 조합을 사용하여 시장 트렌드 방향을 결정하고 거래 신호를 생성합니다. 가격이 SMA와 FSMA 위에 넘어가면 길게 가고 가격이 아래로 넘어가면 길게 빠져 나갑니다. 가격이 SMA와 FSMA 아래에 넘어가면 짧게 가고 가격이 위를 넘어가면 짧게 빠져 나갑니다. 전략은 트렌드 변화를 포착하기 위해 동적 인 곡선 맞지 않는 거래 신호를 제공합니다.

전략 논리

이 전략은 50주기 SMA와 빠른 SMA fsma를 계산하기 위해 sma 함수를 사용합니다. fsma는 SMA와 n 기간 동안 가격의 표준편차의 6배를 기준으로 계산됩니다.

두 개의 부울 변수인 롱과 쇼트는 롱 및 쇼트 포지션을 기록하는 데 사용됩니다. 롱은 가격이 sma와 fsma를 넘어서면 1로 설정되며, 롱 엔트리에 대한 가격은 아래로 넘어가면 -1로 설정됩니다. 쇼트는 짧은 포지션에 대한 유사한 논리를 따릅니다.

트렌드 변수는 트렌드 결정에 사용됩니다. 가격은 fsma 이상과 상승 트렌드 SMA 이상에서 1로 설정되며, 가격이 fsma 이하와 하락 트렌드 SMA 이상에서 -1로 설정됩니다.

긴 및 짧은 거래 신호는 실시간 트렌드 방향에 따라 생성됩니다. 트렌드가 아래에서 위로 변할 때, 가격이 fsma보다 높으면 길게 이동합니다. 트렌드가 위에서 아래로 변할 때, 가격이 sma 이하라면 짧게 이동합니다.

이 전략은 트렌드 변화의 기회를 포착하기 위해 트렌드 추적과 브레이크아웃 방법을 결합합니다.

장점

  1. 두 개의 M.A.를 두 번 확인하면 가짜 탈출을 필터링할 수 있어요

  2. 트렌드 추종과 브레이크오웃을 결합하면 전환점이 나타납니다.

  3. 동적 거래 신호에 대한 곡선 조정이나 최적화가 없습니다.

  4. 단순하고 명확한 논리, 이해하기 쉽고 수정하기 쉽습니다.

  5. 길이를 위한 커스터마이징 가능한 매개 변수, 다른 시장에 대한 곱셈.

위험성

  1. 이중 MA 교차는 과도한 윙사 트레이드 및 반전을 일으킬 수 있습니다.

  2. MA 지연은 초기 트렌드 반전을 놓칠 수 있습니다.

  3. 단일 거래 손실을 통제하기 위한 스톱 로스 메커니즘이 없습니다.

  4. 부적절한 매개 변수 조정은 과잉 거래 또는 지연으로 이어집니다.

  5. 리스크 1 및 리스크 2의 경우 MA 기간을 연장하고 마감 스톱 손실을 추가합니다.

  6. 리스크 3의 경우, 비율을 추가하거나 Stop Loss 주문을 합니다.

  7. 리스크 4의 경우, 다른 시장에 대한 매개 변수를 동적으로 조정합니다.

강화

  1. 트렌드를 확인하기 위해 MACD, DMI를 사용하여 트렌드 필터를 추가합니다.

  2. KD, RSI를 사용해서 평균 역전 과잉 구매/ 과잉 판매를 거래합니다.

  3. 전체 스톱 손실을 추가합니다.

  4. 동적 조절을 위해 위치 크기를 조정하는 모듈을 추가합니다.

  5. 매개 변수를 최적화해서

  6. 자동 매개 변수 조정을 위한 기계 학습을 도입합니다.

  7. 추가 필터로 복합적인 전략을 구축합니다.

  8. 복잡한 트렌드 패턴을 탐지하기 위해 딥러닝을 활용합니다.

결론

트렌드를 따르는 전략은 간단한 트렌드 트레이딩 시스템이다. 트렌드 방향 및 트렌드 반전을 파악하는 데 도움이되는 빠르고 느린 MAs를 사용합니다. 그러나 윙사와 레이그와 같은 위험이 존재한다. 향후 개선에는 필터, 스톱, 동적 매개 변수 등을 추가하는 것이 포함됩니다. 전반적으로 트렌드를 따르는 전략의 좋은 시작점으로 작용하지만 실전 응용 프로그램에서 최적화가 필요하여 성능을 극대화합니다.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
tri=input(false, title="Use triangles?")


r(src, n)=>
    s = 0.0
    for i = 0 to n-1
        s := s + ((n-(i*2+1))/2)*src[i]
    x=s/(n*(n+1))
    x

l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)

trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]

strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and src_>h)
strategy.entry("Short", strategy.short, when=trend==-1 and src_<l)

long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]

barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na)
plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top)

//shortenter=
a1=plot(plots? l : na, color=color.blue, linewidth=1)
//longenter=
a2=plot(plots? h : na, color=color.blue, linewidth=1)
fill(a1, a2, color=color.blue)
//stopshort=
b1=plot(plots? hr : na, color=color.navy, linewidth=1)
//stoplong=
b2=plot(plots? lr : na, color=color.navy, linewidth=1)
fill(b1, b2, color=color.navy)

더 많은