यह रणनीति वीडब्ल्यूएपी (वॉल्यूम वेटेड एवरेज प्राइस) और सुपरट्रेंड इंडिकेटर को जोड़ती है। यह वीडब्ल्यूएपी और सुपरट्रेंड इंडिकेटर की दिशा के सापेक्ष कीमत की स्थिति की तुलना करके खरीद और बिक्री संकेत निर्धारित करती है। जब कीमत वीडब्ल्यूएपी के ऊपर पार हो जाती है और सुपरट्रेंड सकारात्मक होता है, तो एक खरीद संकेत उत्पन्न होता है, जबकि जब कीमत वीडब्ल्यूएपी के नीचे पार हो जाती है और सुपरट्रेंड नकारात्मक होता है, तो एक बिक्री संकेत उत्पन्न होता है। रणनीति भी एक विपरीत संकेत दिखाई देने तक पिछले संकेत की स्थिति को रिकॉर्ड करके डुप्लिकेट संकेत उत्पन्न करने से बचती है।
वीडब्ल्यूएपी और सुपरट्रेंड खरीद / बिक्री रणनीति का उद्देश्य दो अलग-अलग प्रकार के संकेतकों को मिलाकर बाजार के रुझानों और संभावित मोड़ बिंदुओं को व्यापक रूप से पकड़ना है। रणनीति तर्क स्पष्ट और लागू करने और अनुकूलित करने में आसान है। हालांकि, रणनीति का प्रदर्शन पैरामीटर चयन पर निर्भर करता है और जोखिम प्रबंधन उपायों की कमी है। व्यावहारिक अनुप्रयोगों में, विभिन्न बाजार की परिस्थितियों और व्यापार आवश्यकताओं के अनुकूल होने के लिए आगे अनुकूलन और परिष्करण की आवश्यकता होती है।
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="VWAP and Super Trend Buy/Sell Strategy", shorttitle="VWAPST", overlay=true) //===== VWAP ===== showVWAP = input.bool(title="Show VWAP", defval=true, group="VWAP") VWAPSource = input.source(title="VWAP Source", defval=hl2, group="VWAP") VWAPrice = ta.vwap(VWAPSource) plot(showVWAP ? VWAPrice : na, color=color.teal, title="VWAP", linewidth=2) //===== Super Trend ===== showST = input.bool(true, "Show SuperTrend Indicator", group="Super Trend") Period = input.int(title="ATR Period", defval=10, group="Super Trend") Multiplier = input.float(title="ATR Multiplier", defval=2.0, group="Super Trend") // Super Trend ATR Up = hl2 - (Multiplier * ta.atr(Period)) Dn = hl2 + (Multiplier * ta.atr(Period)) var float TUp = na var float TDown = na TUp := na(TUp[1]) ? Up : close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up TDown := na(TDown[1]) ? Dn : close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn var int Trend = na Trend := na(Trend[1]) ? 1 : close > TDown[1] ? 1 : close < TUp[1] ? -1 : Trend[1] Tsl = Trend == 1 ? TUp : TDown linecolor = Trend == 1 ? color.green : color.red plot(showST ? Tsl : na, color=linecolor, style=plot.style_line, linewidth=2, title="SuperTrend") // Buy/Sell Conditions var bool previousBuysignal = false var bool previousSellsignal = false buysignal = not previousBuysignal and Trend == 1 and close > VWAPrice sellsignal = not previousSellsignal and Trend == -1 and close < VWAPrice // Ensure the signals are not repetitive if (buysignal) previousBuysignal := true previousSellsignal := false else if (sellsignal) previousBuysignal := false previousSellsignal := true // Execute buy and sell orders if (buysignal) strategy.entry("Buy", strategy.long) if (sellsignal) strategy.entry("Sell", strategy.short) // Plot Buy/Sell Labels //plotshape(buysignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.normal) //plotshape(sellsignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.normal)