이동평균에 기초한 일방적 진입 전략

저자:차오장, 날짜: 2023-12-25 14:09:49
태그:

img

전반적인 설명

이 전략은 다른 유형의 이동 평균을 계산하여 가격 트렌드 방향을 결정하고 단일 측면 입력을 구현합니다. 가격이 이동 평균을 통과 할 때 긴 또는 짧은 포지션을 개척합니다.

전략 원칙

이 전략은 단순 이동 평균 (SMA), 기하급수적인 이동 평균 (EMA), 부피 가중화 이동 평균 (VWMA), 이중 기하급수적 이동 평균 (DEMA), 트리플 기하급수적 이동 평균 (TEMA), 카우프먼의 적응 이동 평균 (KAMA) 및 가격 채널 중선) 을 포함한 7 가지 다른 이동 평균 유형 중에서 선택할 수 있습니다. 선택된 이동 평균과 폐쇄 가격 사이의 관계를 기반으로 가격 트렌드 방향을 판단합니다.

닫기 가격은 상향 이동 평균선을 통과하면 상승 추세로 판단되고 긴 포지션이 개척됩니다. 닫기 가격은 하향 추세를 통과하고 짧은 포지션을 개척하면 하락 추세로 판단됩니다. 이것은 가격 트렌드의 전환점을 포착하고 단일 측면 입력을 달성 할 수 있습니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 다양한 종류의 이동 평균은 다양한 제품과 주기에 맞는 유연성을 위해 선택할 수 있습니다.

  2. 단면으로 입력하면 위험을 효과적으로 제어할 수 있습니다.

  3. 트렌드 방향으로 진입하면 쉽게 수익을 얻을 수 있습니다.

  4. 이해하기 쉽고 적용하기 쉽습니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 가격이 이동 평균 라인 주위에서 변동할 때, 여러 가지 잘못된 신호와 역입입 지위가 발생할 것입니다. 적절한 스톱 로스는 위험을 제어하기 위해 설정되어야합니다.

  2. 급속한 상승 또는 하락 가격 움직임에 의한 위험을 완전히 피할 수 없습니다. 다른 지표가 결합되어 경향 신호를 결정해야합니다.

  3. 분석가는 적절한 이동 평균 매개 변수를 선택해야합니다. 부적절한 매개 변수는 쉽게 거래 신호의 지연으로 이어질 수 있습니다.

최적화 방향

전략은 다음 측면에서 최적화 될 수 있습니다:

  1. MACD, RSI와 같은 다른 기술 지표와 결합하여 트렌드 신호를 판단하고 거래 조합을 형성합니다.

  2. 트래일링 스톱 로스 또는 대기 주문 스톱 로스 같은 스톱 로스 로직을 추가합니다.

  3. 최적의 매개 변수 조합을 찾기 위해 이동 평균 기간, 이동 평균 유형과 같은 매개 변수를 테스트하고 최적화합니다.

  4. 트렌드를 추적하기 위해 MarketIfTouched 주문 유형을 입력하는 것을 고려하십시오.

요약

이 전략은 이동평균을 기반으로 가격 트렌드 방향을 결정하고, 단일 측면 엔트리를 구현합니다. 사용하기 쉽고 구현하며 위험을 효과적으로 제어 할 수 있습니다. 그러나 잘못된 신호 및 역 엔트리의 위험도 있습니다. 다른 신호 지표, 최적화 매개 변수를 결합하여 지속적으로 개선 할 수 있으며, 전략을 더 안정적이고 신뢰할 수 있습니다.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
    
    
    

더 많은