دوہری لائن ٹریکنگ الگورتھمک تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-10-30 15:27:34 آخر میں ترمیم کریں: 2023-10-30 15:27:34
کاپی: 1 کلکس کی تعداد: 718
1
پر توجہ دیں
1617
پیروکار

دوہری لائن ٹریکنگ الگورتھمک تجارتی حکمت عملی

جائزہ

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

حکمت عملی کا اصول

  1. VWAP میڈین لائن کا حساب لگانا جس میں لمبی مدت کے رجحانات اور مختصر مدت کے رجحانات کی نمائندگی کرنے والے مختلف پیرامیٹرز کے دو سیٹ ہیں۔

    • طویل مدتی رجحانات کے لئے سست رفتار اسکرین لائن اور بیس لائن حساب کتاب
    • فوری اسکرین لائن اور بیس لائن حساب کتاب کے قلیل مدتی رجحانات
  2. سست اوسط اور تیز اوسط کے طور پر بالترتیب پردے کی لائن اور بیس لائن کے دو سیٹوں کا اوسط لینا

  3. بلین بینڈ انڈیکیٹر کا حساب لگانا اور اس سے تجاوز کرنا

    • وسط لائن تیز رفتار اوسط اور سست رفتار اوسط کی اوسط ہے
    • ٹریک کے اوپر اور نیچے کی لائنوں کو توڑنے کے لئے استعمال کیا جاتا ہے
  4. ٹرانزیکشن حجم توانائی کے لئے ٹی ایس وی کا حساب لگانا

    • TSV 0 سے زیادہ کا مطلب ہے کہ قیمتوں میں اضافے کی قوت قیمتوں میں کمی کی قوت سے زیادہ ہے۔
    • TSV ای ایم اے سے بڑا ہے اور اس کی طاقت بڑھ گئی ہے
  5. RSI اشارے کا حساب لگانا اور زیادہ خریدنے اور زیادہ فروخت کرنے کا فیصلہ کرنا

    • جب RSI 30 سے نیچے ہے تو یہ ایک اوور سیل رینج ہے اور آپ خرید سکتے ہیں
    • جب RSI 70 سے اوپر ہے تو یہ ایک حد سے زیادہ خریدنے کی حد ہے اور اسے فروخت کیا جانا چاہئے
  6. داخلے کی شرائط:

    • تیز رفتار اوسط لائن پر سست رفتار اوسط لائن کو عبور کریں
    • بند ہونے کی قیمت پر برلن کی پٹریوں پر
    • TSV 0 سے بڑا ہے اور اس کے EMA سے بڑا ہے
    • RSI 30 سے کم
  7. شرائط:

    • سست رفتار اوسط لائن کے نیچے تیز رفتار اوسط لائن
    • RSI 70 سے اوپر

طاقت کا تجزیہ

  1. دوہری مساوی نظام کا استعمال کرتے ہوئے، ایک ہی وقت میں طویل اور قلیل مدتی رجحانات پر قبضہ کر سکتے ہیں

  2. RSI اشارے اوورلوڈ زون میں خریدنے اور اوورلوڈ زون میں فروخت کرنے سے گریز کریں

  3. TSV اشارے کافی مقدار میں تجارت کو یقینی بناتے ہیں جو رجحان کی حمایت کرتے ہیں

  4. برین بینڈ کے اہم نقطہ نظر کا استعمال

  5. متعدد اشارے کے مجموعے ، جعلی کامیابیوں کو مؤثر طریقے سے فلٹر کرنے کے لئے

خطرے کا تجزیہ

  1. مساوی نظام غلط سگنل پیدا کرنے کے لئے آسان ہے، معاون اشارے فلٹرنگ کی ضرورت ہے

  2. RSI اشارے کے پیرامیٹرز کو بہتر بنانے کی ضرورت ہے ، ورنہ خرید و فروخت کی جگہ سے محروم ہوسکتا ہے

  3. TSV اشارے بھی پیرامیٹرز کے لئے حساس ہیں اور احتیاط سے جانچ کی ضرورت ہے

  4. برن کے ساتھ ریل پر توڑنے کے لئے ممکنہ طور پر جعلی توڑ کی ضرورت ہے

  5. کثیر اشارے کا مجموعہ ، پیرامیٹرز کو بہتر بنانا مشکل ہے ، زیادہ بہتر بنانا آسان ہے

  6. ناکافی ٹریننگ اور ٹیسٹ کے اعداد و شمار سے منحنی فٹ ہونے کا امکان ہے

اصلاح کی سمت

  1. زیادہ سے زیادہ سائیکل پیرامیٹرز کی جانچ پڑتال کریں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں

  2. MACD، KD متبادل یا RSI کے ساتھ دوسرے اشارے کی کوشش کریں

  3. پیرامیٹرز کو بہتر بنانے کے لئے واک فارورڈ تجزیہ کا استعمال کریں

  4. نقصانات کو کنٹرول کرنے کے لئے اضافی اسٹاپ نقصانات کی حکمت عملی

  5. مشین لرننگ ماڈل میں معاون سگنل کی تشخیص شامل کرنے پر غور کریں

  6. مختلف مارکیٹوں کے لئے پیرامیٹرز کو ایڈجسٹ کریں ، ایک ہی پیرامیٹرز کے مجموعے پر زیادہ انحصار نہ کریں

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 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.
// "Vidya" code which used in this strategy was written by "everget" active on https://tr.tradingview.com/u/everget/

strategy("HYE Combo Market [Strategy] (Vwap Mean Reversion + Trend Hunter)", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025)
  
//Strategy inputs

source = input(title = "Source", defval = close, group = "Mean Reversion Strategy Inputs")
smallcumulativePeriod = input(title = "Small VWAP", defval = 8, group = "Mean Reversion Strategy Inputs")
bigcumulativePeriod = input(title = "Big VWAP", defval = 10, group = "Mean Reversion Strategy Inputs")
meancumulativePeriod = input(title = "Mean VWAP", defval = 50, group = "Mean Reversion Strategy Inputs")
percentBelowToBuy = input(title = "Percent below to buy %", defval = 2, group = "Mean Reversion Strategy Inputs")
rsiPeriod = input(title = "Rsi Period", defval = 2, group = "Mean Reversion Strategy Inputs")
rsiEmaPeriod = input(title = "Rsi Ema Period", defval = 5, group = "Mean Reversion Strategy Inputs") 
rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30, group = "Mean Reversion Strategy Inputs")
slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
slowkijunsenPeriod = input(13, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
fasttenkansenPeriod = input(3, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
fastkijunsenPeriod = input(7, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Trend Hunter Strategy Inputs")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Trend Hunter Strategy Inputs")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Trend Hunter Strategy Inputs")
tsvlength  = input(20, minval=1, title="TSV Length", group = "Trend Hunter Strategy Inputs")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Trend Hunter Strategy Inputs")
length = input(title="Vidya Length", type=input.integer, defval=20, group = "Trend Hunter Strategy Inputs") 
src = input(title="Vidya Source", type=input.source, defval= hl2 , group = "Trend Hunter Strategy Inputs")

// Vidya Calculation 

getCMO(src, length) =>
    mom = change(src)
    upSum = sum(max(mom, 0), length)
    downSum = sum(-min(mom, 0), length)
    out = (upSum - downSum) / (upSum + downSum)
    out

cmo = abs(getCMO(src, length))

alpha = 2 / (length + 1)

vidya = 0.0
vidya := src * alpha * cmo + nz(vidya[1]) * (1 - alpha * cmo)

// Make input options that configure backtest date range 

startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group = "Strategy Date Range")
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group = "Strategy Date Range")
startYear = input(title="Start Year", type=input.integer,
     defval=2000, minval=1800, maxval=2100, group = "Strategy Date Range")

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

typicalPriceS = (high + low + close) / 3
typicalPriceVolumeS = typicalPriceS * volume
cumulativeTypicalPriceVolumeS = sum(typicalPriceVolumeS, smallcumulativePeriod)
cumulativeVolumeS = sum(volume, smallcumulativePeriod)
smallvwapValue = cumulativeTypicalPriceVolumeS / cumulativeVolumeS

typicalPriceB = (high + low + close) / 3
typicalPriceVolumeB = typicalPriceB * volume
cumulativeTypicalPriceVolumeB = sum(typicalPriceVolumeB, bigcumulativePeriod)
cumulativeVolumeB = sum(volume, bigcumulativePeriod)
bigvwapValue = cumulativeTypicalPriceVolumeB / cumulativeVolumeB 

typicalPriceM = (high + low + close) / 3
typicalPriceVolumeM = typicalPriceM * volume
cumulativeTypicalPriceVolumeM = sum(typicalPriceVolumeM, meancumulativePeriod)
cumulativeVolumeM = sum(volume, meancumulativePeriod)
meanvwapValue = cumulativeTypicalPriceVolumeM / cumulativeVolumeM

rsiValue = rsi(source, rsiPeriod)
rsiEMA   = ema(rsiValue, rsiEmaPeriod)
buyMA = ((100 - percentBelowToBuy) / 100) * bigvwapValue[0]

inTrade = strategy.position_size > 0
notInTrade = strategy.position_size <= 0

if(crossunder(smallvwapValue, buyMA) and rsiEMA < rsiLevelforBuy and close < meanvwapValue and inDateRange and notInTrade)
    strategy.entry("BUY-M", strategy.long)

if(close > meanvwapValue or not inDateRange)
    strategy.close("BUY-M")
    
// Trend Hunter Strategy Calculation

// 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 close > vidya and inDateRange and notInTrade)
    strategy.entry("BUY-T", strategy.long)
 
if((fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1]) or not inDateRange)
    strategy.close("BUY-T")

// Plots 

plot(meanvwapValue, title="MEAN VWAP", linewidth=2, color=color.yellow)

//plot(vidya, title="VIDYA", linewidth=2, color=color.green)

//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)

//plot(smallvwapValue, color=#13C425, linewidth=2)
//plot(bigvwapValue, color=#CA1435, linewidth=2)