حجم فلو اشارے پر مبنی حکمت عملی کے بعد رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-10-10 14:51:13
ٹیگز:

جائزہ

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

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

  1. VFI اشارے کا حساب لگائیں: لاگارتھمک قیمت کی تبدیلی اور حجم کی بنیاد پر VFI قدر کا حساب لگائیں ، اور ہموار کرنے کی تکنیکوں کے ذریعے نوسازیوں کو ہموار کریں۔

  2. رجحان کی سمت کا تعین کریں: وی ایف آئی کی سطح 0 سے اوپر جانا ایک تیزی کا اشارہ ہے جبکہ 0 سے نیچے جانا ایک منفی اشارہ ہے۔

  3. ٹریڈنگ سگنل: جب تیز EMA سست EMA سے اوپر اور VFI خرید لائن سے اوپر کراس کرتا ہے تو طویل عرصے تک جانا؛ جب VFI فروخت لائن سے نیچے کراس کرتا ہے تو بند پوزیشن۔

  4. سٹاپ نقصان: سٹاپ نقصان کا مقررہ فیصد مقرر کریں۔

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

فوائد

  1. وی ایف آئی واحد قیمت کے اشارے سے بہتر رجحانات کا تعین کرتا ہے، مؤثر طریقے سے استحکام اور جھوٹے بریک آؤٹ کو فلٹر کرتا ہے۔

  2. چلتے ہوئے اوسط اضافی فیصلے فراہم کرتے ہیں، مختلف مارکیٹوں میں VFI کے غلط سگنل سے بچنے کے لئے.

  3. فکسڈ سٹاپ نقصان خطرے کو کنٹرول کرتا ہے اور خطرے کے انتظام کو آسان بناتا ہے۔

  4. رجحان کے بعد موڈ واپسی کی پیش گوئی کے بغیر زیادہ واپسی پیدا کرتا ہے.

  5. لچکدار پیرامیٹر ایڈجسٹمنٹ مختلف ادوار اور مصنوعات کے مطابق ہے.

خطرات

  1. VFI اہم اتار چڑھاؤ کے دوران غلط سگنل پیدا کر سکتا ہے.

  2. مقررہ سٹاپ نقصان بہت وسیع یا بہت تنگ ہو سکتا ہے.

  3. غلط ترتیب دی گئی اندراج اور باہر نکلنے کی ترتیبات سے زیادہ تجارت یا لاپتہ تجارت ہوتی ہے۔

  4. رجحان کی پیروی کرنے میں ناکام رہتا ہے اور بروقت سٹاپ نقصان کی ضرورت ہوتی ہے.

  5. غلط پیرامیٹرز ابتدائی یا تاخیر سے داخل ہونے کا سبب بنتے ہیں.

بہتری

  1. پیرامیٹرز کو ایڈجسٹ کرکے VFI حساب کو بہتر بنائیں۔

  2. بہتر سگنل ٹائمنگ کے لئے ٹھیک ٹونگ چلتی اوسط ادوار.

  3. ایک مقررہ کے بجائے متحرک سٹاپ نقصان کا استعمال کریں.

  4. سگنل فلٹر کرنے کے لئے دیگر اشارے شامل کریں.

  5. وقت کے فریم پر مبنی الگ الگ پیرامیٹرز کو بہتر بنائیں.

  6. مختلف مصنوعات میں استحکام کی جانچ کریں.

نتیجہ

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


/*backtest
start: 2023-10-02 00:00:00
end: 2023-10-06 21:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee
//This strategy is based on VFI indicator published by  UTS.  
//more details of VFI indicator can be found at  [url=http://mkatsanos.com/VFI.html]http://mkatsanos.com/VFI.html[/url] 
// I have added buy line and sell line to the indicator  and tested  SPY stock/index on one hour chart

//@version=4
strategy(title="VFI  strategy [based on VFI indicator published by  UTS]", overlay=false,pyramiding=2, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)


// Const
kMaColor = color.aqua
kNeutralColor = color.gray
kBearColor = color.red
kBullColor = color.green

kAlma = "ALMA"
kEma = "EMA"
kSma = "SMA"
kWma = "WMA"


// Input

vfi_length = input(8, title="Length", minval=1)  //default 130
vfi_coef = input(0.2, title="Coef", minval=0.1)
vfi_volCutoff = input(2.5, title="Volume Cutoff", minval=0.1)
vfi_smoothLen = input(3, title="Smoothing Period", minval=1)
vfi_smoothType = input(kEma, title="Smoothing Type", options=[kAlma, kEma, kSma, kWma])

//These are adde by me for the strategy purpose  BEGIN
vfi_buyLine = input(-4, title="Buy Line", minval=-10)
vfi_sellLine = input(5, title="Sell Line", minval=-10)
stopLoss = input(title="Stop Loss%", defval=5, minval=1)
//These are adde by me for the strategy purpose  END

vfi_longEMA = input(200, title="Long EMA", minval=1)
vfi_shortEMA1 = input(50, title="short EMA1", minval=1)
vfi_shortEMA2 = input(9, title="short EM2A", minval=1)

vfi_showTrend = input(false, title="Visualize Trend")
vfi_showFill = input(true, title="Apply Filling")
vfi_showMa = input(true, title="Show Moving Average")
vfi_maType = input(kSma, title="Moving Average Type", options=[kAlma, kEma, kSma, kWma])
vfi_maLength = input(30, title="Moving Average Length", minval=1)
vfi_almaOffset = input(0.85, title="• ALMA - Offset (global setting)", minval=0.0, maxval=1.0, step=0.05) // more smoothness (closer to 1) vs. more responsiveness (closer to 0)
vfi_almaSigma = input(6.0, title="• ALMA - Sigma (global setting)", minval=0.0, step=0.05) // the larger sigma the smoother ALMA


// Functionality

isRising(sig) =>
    sig > sig[1]
    
isFlat(sig) =>
    sig == sig[1]

vfi_trendColor(sig) =>
    isFlat(sig) ? kNeutralColor : isRising(sig) ? kBullColor : kBearColor
    
vfi_color(sig) =>
    isFlat(sig) ? kNeutralColor : sig > 0 ? kBullColor : kBearColor
    
osc_color(sig) =>
    sig == 0 ? kNeutralColor : sig > 0 ? kBullColor : kBearColor

smooth(t, sig, len) =>
    ma = float(sig)         // None
    if t == kSma            // Simple
        ma := sma(sig, len)
    if t == kEma            // Exponential
        ma := ema(sig, len)
    if t == kWma            // Weighted
        ma := wma(sig, len)
    if t == kAlma           // Arnaud Legoux
        ma := alma(sig, len, vfi_almaOffset, vfi_almaSigma)
    ma

calc_vfi(fviPeriod, smoothType, smoothLen, coef, vCoef) =>
    avg = nz(hlc3)
    inter = log(avg) - log(avg[1])
    vInter = stdev(inter, 30)
    cutOff = coef * vInter * close
    vAve = smooth(kSma, volume[1], fviPeriod)
    vMax = vAve * vCoef
    vC = min(volume, vMax)
    mf = avg - avg[1]
    vCp = iff(mf > cutOff, vC, iff(mf < -cutOff, -vC, 0))
    sVfi = sum(vCp, fviPeriod) / vAve
    vfi = smooth(smoothType, sVfi, smoothLen)
    
value_vfi = calc_vfi(vfi_length, vfi_smoothType, vfi_smoothLen, vfi_coef, vfi_volCutoff)
value_ma = smooth(vfi_maType, value_vfi, vfi_maLength)

longEMAval= ema(close, vfi_longEMA)
shortEMAval1= ema(close, vfi_shortEMA1)
shortEMAval2= ema(close, vfi_shortEMA2)

color_vfi = vfi_showTrend ? vfi_trendColor(value_vfi) : vfi_color(value_vfi)
color_osc = vfi_showFill ? osc_color(value_vfi) : na
color_ma = vfi_showMa ? kMaColor : na


// Drawings

plot_vfi = plot(value_vfi, title="VFI", color=color_vfi, linewidth=1)
plot_fill = plot(0, color=color_vfi, editable=false)
fill(plot_vfi, plot_fill, title="Oscillator Fill", color=color_osc, transp=75) 
hline(vfi_buyLine, color=color.green, title="Buy Line", linewidth=2, linestyle=hline.style_dashed)
hline(vfi_sellLine, color=color.purple, title="Sell Line", linewidth=2, linestyle=hline.style_dashed)
plot(value_ma, title="MA", color=color_ma, linewidth=2)

strategy.entry(id="VFI LE", long=true,  when=crossover(value_vfi,vfi_buyLine)  and ( shortEMAval1 >= longEMAval  ))

//strategy.close(id="VFI LE", comment="Exit",   when=crossunder(value_vfi,vfi_sellLine))
strategy.close(id="VFI LE", comment="TP Exit",   when=crossunder(value_vfi,vfi_sellLine) and close>strategy.position_avg_price)
//strategy.close(id="VFI LE", comment="Exit",   when=  (shortEMAval1 > shortEMAval2 )  and crossunder(close, shortEMAval2))

//stoploss
stopLossVal =   strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01) 
strategy.close(id="VFI LE", comment="SL Exit",   when=crossunder(value_vfi,vfi_sellLine) and close < stopLossVal)




مزید