이 전략은 MACD 지표의 이중 이동 평균의 교차를 계산하여 구매 및 판매 신호를 식별합니다. 거래 신호를 표시하기 위해 차트에 화살표를 표시합니다.
이 전략은 먼저 빠른 라인 (12주기 EMA), 느린 라인 (26주기 EMA) 및 MACD 차이를 계산합니다. 다음에는 빠른 라인과 느린 라인의 교차와 MACD 차이의 긍정적 / 부정적인 값을 기반으로 긴 신호와 짧은 신호를 결정합니다.
잘못된 신호를 필터링하기 위해, 코드는 또한 이전 촛불의 신호를 검사합니다. 현재의 신호는 이전 촛불이 반대 신호 (구입 대 판매 또는 반대로) 를 가지고있는 경우에만 트리거됩니다.
또한, 화살표에는 구매 및 판매 신호를 표시하기 위해 화살표 모양이 그려져 있습니다.
이 전략의 장점은 다음과 같습니다.
이 전략의 몇 가지 위험:
전략을 개선할 수 있는 몇 가지 방법:
이중 이동 평균 크로스오버 화살표 전략은 상당히 간단하고 실용적입니다. 두 이동 평균의 크로스오버와 MACD 차이 필터링을 사용하여 중간 및 장기 트렌드 중에 입출구를 식별하여 놓친 가격 반전을 피합니다. 화살표 신호는 또한 명확한 운영 지침을 제공합니다. 매개 변수 조정, 추가 필터 및 적응적 최적화로 안정성과 수익성이 더 향상 될 수 있습니다.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //Daniels stolen code strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0) //Define MACD Variables fast = 12, slow = 26 fastMACD = ema(hlc3, fast) slowMACD = ema(hlc3, slow) macd = fastMACD - slowMACD signal = sma(macd, 9) hist = macd - signal currMacd = hist[0] prevMacd = hist[1] currPrice = hl2[0] prevPrice = hl2[1] buy = currPrice > prevPrice and currMacd > prevMacd sell = currPrice < prevPrice and currMacd < prevMacd neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd) //Plot Arrows timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1)) timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1)) plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup) plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown) //plotshape(neutral, color=black, location=location.belowbar, style=shape.circle) //Test Strategy // strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high // strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01)) strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01)) strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01)) // strategy.entry(id = "Short", long = false, when = enterShort()) // strategy.close(id = "Short", when = exitShort()) //strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high // strategy.exit("exit", "long", profit = 10, loss = 5) // ge