이 전략은 200일 기하급수적 이동 평균 (200 EMA), 부피 가중화 평균 가격 (VWAP), 그리고 돈 흐름 지수 (MFI) 를 결합하여 구매 및 판매 신호를 생성한다. 주요 아이디어는 트렌드 방향과 강도를 결정하기 위해 이 세 가지 지표의 조합을 사용하여 가격이 200 EMA를 넘어서 VWAP 및 MFI 지표에 의해 확인될 때 거래 신호를 생성하는 것이다. 또한, 더 높은 시간 프레임에서 200 EMA를 트렌드 필터로 도입하고, 현재와 더 높은 시간 프레임에서의 트렌드가 일치할 때만 거래가 실행된다. 또한, 시그널의 신뢰성을 향상시키기 위해 가격 움직임의 연속성이 평가된다.
이 전략은 200일 EMA, VWAP 및 MFI 지표를 결합하여, 더 높은 시간 프레임에서의 트렌드와 가격 움직임의 연속성을 고려하면서, 비교적 견고한 트렌드-추천 거래 시스템을 구축합니다. 이 전략은 여러 조건을 포괄적으로 분석하여 잘못된 신호를 필터링하여 엔트리 타이밍의 정확성을 향상시킵니다. 동시에, 전략 매개 변수의 유연성은 다른 시장과 거래 스타일에 따라 최적화를 허용합니다. 그러나, 전략은 또한 불안정한 시장이나 트렌드 전환점에서의 손실과 잘못된 매개 변수 설정으로 인한 저성능과 같은 특정 위험을 포함합니다. 미래에, 전략은 매개 변수 최적화, 보조 지표 도입, 위험 관리 및 기타 측면 측면에서 더 이상 최적화 및 개선 될 수 있습니다. 전반적으로,이 전략은 트렌드-추천을위한 포괄적이고 실현 가능한 프레임워크를 제공합니다.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("200 EMA, VWAP, MFI Strategy - Visible Signals", overlay=true, pyramiding=0) // Inputs for dynamic adjustments buffer = input.float(0.2, title="EMA Buffer Percentage", step=0.1) / 100 higherTimeframe = input.timeframe("15", title="Higher Timeframe") mfiBuyThreshold = input(60, title="MFI Buy Threshold") mfiSellThreshold = input(40, title="MFI Sell Threshold") consecutiveCloses = input.int(1, title="Consecutive Closes for Confirmation") // Calculate the 200-period EMA ema200 = ta.ema(close, 200) emaBufferedHigh = ema200 * (1 + buffer) emaBufferedLow = ema200 * (1 - buffer) emaHigher = request.security(syminfo.tickerid, higherTimeframe, ta.ema(close, 200)) // VWAP calculation vwap = ta.vwap(hlc3) // Money Flow Index calculation mfiLength = 14 mfi = ta.mfi(close, mfiLength) // Plotting the indicators plot(ema200, title="200 EMA", color=color.blue) plot(vwap, title="VWAP", color=color.orange) plot(mfi, title="MFI", color=color.purple) hline(50, "MFI Reference", color=color.gray, linestyle=hline.style_dashed) plot(emaHigher, title="Higher TF EMA", color=color.red) // Price action confirmation isUpTrend = ta.rising(close, consecutiveCloses) isDownTrend = ta.falling(close, consecutiveCloses) // Define entry conditions longCondition = close > emaBufferedHigh and close > vwap and mfi > mfiBuyThreshold and close > emaHigher and isUpTrend shortCondition = close < emaBufferedLow and close < vwap and mfi < mfiSellThreshold and close < emaHigher and isDownTrend // Trading execution if (longCondition) strategy.entry("Buy", strategy.long) if (shortCondition) strategy.entry("Sell", strategy.short) // Plot shapes for signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, size=size.small, title="Buy Signal", text="Buy") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, size=size.small, title="Sell Signal", text="Sell")