এই কৌশলটি ভিডাব্লুএপি (ভলিউম ওয়েটেড মিডিয়ার প্রাইস) এবং সুপারট্রেন্ড সূচকগুলিকে একত্রিত করে। এটি ভিডাব্লুএপি এবং সুপারট্রেন্ড সূচকের দিকের তুলনায় দামের অবস্থান তুলনা করে ক্রয় এবং বিক্রয় সংকেতগুলি নির্ধারণ করে। যখন দাম ভিডাব্লুএপি এর উপরে ক্রস করে এবং সুপারট্রেন্ড ইতিবাচক হয় তখন একটি ক্রয় সংকেত উত্পন্ন হয়, যখন দাম ভিডাব্লুএপি এর নীচে ক্রস করে এবং সুপারট্রেন্ড নেতিবাচক হয় তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। কৌশলটি পূর্ববর্তী সংকেতের অবস্থা রেকর্ড করে ডুপ্লিকেট সংকেত উত্পাদন এড়ায় যতক্ষণ না বিপরীত সংকেত উপস্থিত হয়।
ভিডাব্লুএপি এবং সুপারট্রেন্ড কিনুন / বিক্রয় কৌশলটি দুটি ভিন্ন ধরণের সূচককে একত্রিত করে বাজারের প্রবণতা এবং সম্ভাব্য টার্নিং পয়েন্টগুলি ব্যাপকভাবে ক্যাপচার করার লক্ষ্য রাখে। কৌশল যুক্তিটি স্পষ্ট এবং বাস্তবায়ন এবং অনুকূলিতকরণ করা সহজ। তবে, কৌশলটির পারফরম্যান্স পরামিতি নির্বাচনের উপর নির্ভর করে এবং ঝুঁকি পরিচালনার ব্যবস্থাগুলির অভাব রয়েছে। ব্যবহারিক অ্যাপ্লিকেশনগুলিতে, বিভিন্ন বাজারের পরিস্থিতি এবং ট্রেডিং প্রয়োজনীয়তার সাথে খাপ খাইয়ে নেওয়ার জন্য আরও অপ্টিমাইজেশন এবং পরিমার্জন প্রয়োজন।
/*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)