더블 이동 평균 골든 크로스와 데스 크로스 전략


생성 날짜: 2023-09-17 22:35:07 마지막으로 수정됨: 2023-09-17 22:35:07
복사: 1 클릭수: 626
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이 전략은 두 개의 다른 주기의 이동 평균을 계산하고, 그들의 황금 포크에 따라 구매 및 판매 신호를 형성한다.

전략 원칙

이 전략은 먼저 사용자가 이동 평균의 종류와 길이를 선택할 수 있도록 한다. 종류는 SMA, EMA, VWMA 등이 있으며, 길이는 평균의 주기를 결정한다.

다음으로 사용자의 선택에 따라 두 개의 이동 평균을 계산한다. 만약 빠른 선이 아래에서 느린 선을 통과하여 금색 포크를 형성하면 구매 신호가 발생한다. 만약 빠른 선이 위에서 아래에서 느린 선을 통과하여 사다리 포크를 형성하면 판매 신호가 발생한다.

따라서, 단기 평균 가격이 장기 평균 가격보다 높을 때, 시장이 상승 추세에 있다고 여겨져 구매해야 한다. 단기 가격이 장기 가격보다 낮을 때, 시장이 하락 추세에 있다고 여겨져 판매해야 한다.

우위 분석

  • 전략의 논리는 간단하고 명확하며, 이해하기 쉽고 구현된다.
  • 이동 평균은 시장의 소음을 효과적으로 필터링하여 트렌드를 식별합니다.
  • 이동 평균 유형과 변수를 유연하게 선택하여 다양한 품종과 주기에 적합합니다.
  • 여러 지표 조합을 통해 최적화 할 수 있습니다.

위험 분석

  • 시장이 흔들릴 때, 여러 가지 잘못된 신호가 발생할 수 있습니다.
  • 잘못된 변수 선택으로 인해 전략이 제대로 작동하지 않을 수 있습니다.
  • 신호가 지연되어 전환점을 잡을 수 없습니다.
  • “비상사태가 발생할 경우, 위험합니다”.

적절한 최적화 매개 변수, 다른 지표의 조합으로 신호를 생성하고, 스톱 스톱을 설정하는 등의 방법으로 위험을 제어할 수 있다.

최적화 방향

  • 다양한 유형의 및 길이의 변수를 테스트하여 최적의 변수 조합을 찾습니다.
  • 다른 지표들을 필터링하는 것, 예를 들어 물가 지표, 변동률 지표 등.
  • 스탠드피드 로직을 추가하고, 회귀를 줄여줍니다.
  • 트렌드를 판단하는 지표와 결합하여 부적절한 거래 환경을 피하십시오.
  • 포지션 관리, 리스크 예산 등과 같은 자금 관리 전략을 최적화하십시오.

요약하다

이 전략의 전체적인 아이디어는 간단하고 명확하며, 쌍평평선을 계산하여 거래 신호를 형성하고, 시장 환경에 따라 유연하게 조정할 수 있는 파라미터와 다른 전략 조합을 최적화할 수 있지만, 흔들리는 시장의 위험을 예방하는 데 주의를 기울이고, 합리적인 자금 관리를 수행할 필요가 있다. 전체적으로 고려할 가치가 있는 선택이다.

전략 소스 코드
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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


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")

//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 = low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short)