حجم کے لحاظ سے وزن شدہ اوسط قیمت اور اتار چڑھاؤ پر مبنی حکمت عملی کے بعد رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-09-21 21:32:40
ٹیگز:

جائزہ

اس حکمت عملی میں متعدد اشارے شامل ہیں جن میں حجم وزن والی اوسط قیمت ، بولنگر بینڈ اور وقت کے لحاظ سے تقسیم شدہ حجم شامل ہیں تاکہ قیمت کے رجحانات کے آغاز اور اختتام کی نشاندہی کی جاسکے اور رجحانات کی پیروی کی جاسکے۔ متعدد تصدیقیں غلط بریکآؤٹس کو مؤثر طریقے سے فلٹر کرسکتی ہیں۔

حکمت عملی منطق

اسٹریٹیجی میں مندرجہ ذیل اہم اقدامات شامل ہیں:

  1. تیز اور سست حجم وزن شدہ اوسط قیمت لائنوں کا حساب لگائیں۔ اصل تجارتی قیمت کو بہتر طور پر ظاہر کرنے کے لئے قریبی قیمت کے بجائے VWAP استعمال کیا جاتا ہے۔

  2. بولنگر بینڈس کو پلاٹ کرنے کے لئے وی ڈبلیو اے پی لائنوں کا اوسط لیں ۔ بینڈس کے ذریعہ دکھائی جانے والی بڑھتی ہوئی اتار چڑھاؤ کا مطلب ہے کہ رجحان کا آغاز۔

  3. تجارتی حجم میں اضافے کی تصدیق اور رجحان کی توثیق کرنے کے لئے وقت میں تقسیم شدہ حجم (TSV) متعارف کرایا جائے۔

  4. جب تیز VWAP سست VWAP کے اوپر سے گزرتا ہے تو خریدنے کا اشارہ پیدا کرتا ہے ، قیمت بولنگر کے اوپری بینڈ سے اوپر ہوتی ہے ، اور TSV مثبت ہوتا ہے۔ جب الٹ ہوتا ہے تو سگنل فروخت کریں۔

  5. VWAP پل بیک اور بولنگر کے نیچے والے بینڈ کو سٹاپ نقصان کے سگنل کے طور پر استعمال کریں۔

فوائد

  • متعدد توثیقوں کو مؤثر طریقے سے جھوٹے بریک آؤٹ کو فلٹر کریں اور رجحان کے آغاز کی شناخت کریں

  • وی ڈبلیو اے پی کا حساب کتاب اصل تجارتی قیمت کو بہتر انداز میں ظاہر کرتا ہے

  • اتار چڑھاؤ کا اشارے فیصلہ کرتا ہے کہ آیا کوئی رجحان موجود ہے

  • تجارتی حجم رجحان کی تسلسل کی تصدیق کرتا ہے

  • معقول سٹاپ نقصان اور منافع لینے کے کنٹرول کا خطرہ

  • ترتیب دینے کے قابل پیرامیٹرز لچکدار اصلاح کی اجازت دیتے ہیں

خطرات

  • متعدد اشارے کو بہتر بنانے میں دشواری

  • VWAP اور بولنگر بینڈ کی تاخیر کی نوعیت

  • مختلف مارکیٹوں کے لئے پیرامیٹرز کی ترتیب کے لئے حساس TSV

  • رینج سے منسلک مارکیٹوں میں مزید غلط سگنل

  • تجارتی اخراجات کو نظر انداز کرتا ہے، اصل P&L بیک ٹسٹ سے کم ہے

بہتری

  • خودکار طور پر پیرامیٹر کے مجموعے کو بہتر بنانے کے لئے مشین لرننگ کا اطلاق کریں

  • منافع میں بہتر تالا لگانے کے لئے متحرک یا ٹریلنگ اسٹاپ نقصان مقرر کریں

  • اختلافات سے بچنے کے لئے حجم کی رفتار کے اشارے شامل کریں

  • رجحان کے مراحل کا تعین کرنے کے لئے ایلیٹ لہروں کو شامل کریں، اس کے مطابق پیرامیٹرز کو ایڈجسٹ کریں

  • تجارتی اخراجات پر غور کریں، لاگت کی کارکردگی کو کنٹرول کرنے کے لئے کم سے کم منافع کا ہدف مقرر کریں

نتیجہ

یہ حکمت عملی متعدد اشارے کو مربوط کرکے ایک اچھی رجحان کی نشاندہی فراہم کرتی ہے۔ یہ حقیقی رجحانات کے آغاز اور اختتام کا مؤثر طریقے سے تعین کرسکتی ہے۔ پیرامیٹر کی اصلاح ، اسٹاپ نقصان کی اصلاح اور فلٹر کی اصلاح کے ذریعے استحکام میں مزید بہتری حاصل کی جاسکتی ہے۔ لیکن مجموعی طور پر ، رجحان کی پیروی کرنے والی حکمت عملی کے طور پر ، اس میں اب بھی کچھ سطحوں کی کمی اور خطرہ انعام کے تناسب ہوتے ہیں۔ تاجروں کو مواقع اور سخت رسک مینجمنٹ ذہنیت کا انتظار کرنے کے لئے صبر کی ضرورت ہے۔


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4

// Credits

// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.

strategy("HYE Trend Hunter [Strategy]", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025, pyramiding = 0)
  
// Strategy inputs 

slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
slowkijunsenPeriod = input(26, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fasttenkansenPeriod = input(5, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fastkijunsenPeriod = input(13, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Bollinger Bands")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Bollinger Bands")
tsvlength  = input(13, minval=1, title="TSV Length", group = "Tıme Segmented Volume")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Tıme Segmented Volume")

// Make input options that configure backtest date range  
 
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group = "Backtest Range")
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group = "Backtest Range")
startYear = input(title="Start Year", type=input.integer,
     defval=2000, minval=1800, maxval=2100, group = "Backtest Range")

endDate = input(title="End Date", type=input.integer, 
     defval=31, minval=1, maxval=31, group = "Backtest Range")
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12, group = "Backtest Range") 
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group = "Backtest Range")
     
inDateRange =  true

//Slow Tenkan Sen Calculation

typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS

//Slow Kijun Sen Calculation

typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS

//Fast Tenkan Sen Calculation

typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF

//Fast Kijun Sen Calculation

typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF

//Slow LeadLine Calculation
 
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)

lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)

slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)

//Fast LeadLine Calculation
 
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)

lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)

fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)

// BBleadLine Calculation

BBleadLine = avg(fastleadLine, slowleadLine)

// Bollinger Band Calculation
 
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev

// TSV Calculation

tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)

// Rules for Entry & Exit  

if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and inDateRange)
    strategy.entry("BUY", strategy.long)
 
if(fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1])
    strategy.close("BUY")

// Plots 

colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)

colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)

p1 = plot(upper, "Upper BB", color=#2962FF)
p2 = plot(lower, "Lower BB", color=#2962FF)
fill(p1, p2, title = "Background", color=color.blue)

مزید