یہ حکمت عملی حجم بہاؤ اشارے (وی ایف آئی) کی بنیاد پر ٹریڈنگ کے بعد رجحان کو نافذ کرتی ہے۔ یہ قیمتوں میں اتار چڑھاؤ اور حجم میں تبدیلیوں کا حساب کتاب کرکے مارکیٹ کے رجحان کی سمت کا فیصلہ کرتی ہے ، اور کم خرید اور زیادہ فروخت کا احساس کرتی ہے۔
VFI اشارے کا حساب لگائیں: لاگارتھمک قیمت کی تبدیلی اور حجم کی بنیاد پر VFI قدر کا حساب لگائیں ، اور ہموار کرنے کی تکنیکوں کے ذریعے نوسازیوں کو ہموار کریں۔
رجحان کی سمت کا تعین کریں: وی ایف آئی کی سطح 0 سے اوپر جانا ایک تیزی کا اشارہ ہے جبکہ 0 سے نیچے جانا ایک منفی اشارہ ہے۔
ٹریڈنگ سگنل: جب تیز EMA سست EMA سے اوپر اور VFI خرید لائن سے اوپر کراس کرتا ہے تو طویل عرصے تک جانا؛ جب VFI فروخت لائن سے نیچے کراس کرتا ہے تو بند پوزیشن۔
سٹاپ نقصان: سٹاپ نقصان کا مقررہ فیصد مقرر کریں۔
یہ حکمت عملی بنیادی طور پر رجحان کی سمت کا تعین کرنے کے لئے وی ایف آئی پر انحصار کرتی ہے ، جس میں تجارتی سگنل پیدا کرنے کے لئے اوسط حرکت پذیر ہوتا ہے۔ وی ایف آئی قیمتوں کی اتار چڑھاؤ اور حجم کی تبدیلیوں کے ذریعے مارکیٹ کے جذبات کی عکاسی کرتا ہے ، جس سے یہ رجحان کے بعد اشارے بن جاتا ہے۔ واحد قیمت کے اشارے کے مقابلے میں ، وی ایف آئی زیادہ جامع فیصلے فراہم کرتا ہے اور رجحان کی تبدیلی کے نکات کی بہتر شناخت کرتا ہے ، استحکام کو فلٹر کرتا ہے۔
وی ایف آئی واحد قیمت کے اشارے سے بہتر رجحانات کا تعین کرتا ہے، مؤثر طریقے سے استحکام اور جھوٹے بریک آؤٹ کو فلٹر کرتا ہے۔
چلتے ہوئے اوسط اضافی فیصلے فراہم کرتے ہیں، مختلف مارکیٹوں میں VFI کے غلط سگنل سے بچنے کے لئے.
فکسڈ سٹاپ نقصان خطرے کو کنٹرول کرتا ہے اور خطرے کے انتظام کو آسان بناتا ہے۔
رجحان کے بعد موڈ واپسی کی پیش گوئی کے بغیر زیادہ واپسی پیدا کرتا ہے.
لچکدار پیرامیٹر ایڈجسٹمنٹ مختلف ادوار اور مصنوعات کے مطابق ہے.
VFI اہم اتار چڑھاؤ کے دوران غلط سگنل پیدا کر سکتا ہے.
مقررہ سٹاپ نقصان بہت وسیع یا بہت تنگ ہو سکتا ہے.
غلط ترتیب دی گئی اندراج اور باہر نکلنے کی ترتیبات سے زیادہ تجارت یا لاپتہ تجارت ہوتی ہے۔
رجحان کی پیروی کرنے میں ناکام رہتا ہے اور بروقت سٹاپ نقصان کی ضرورت ہوتی ہے.
غلط پیرامیٹرز ابتدائی یا تاخیر سے داخل ہونے کا سبب بنتے ہیں.
پیرامیٹرز کو ایڈجسٹ کرکے VFI حساب کو بہتر بنائیں۔
بہتر سگنل ٹائمنگ کے لئے ٹھیک ٹونگ چلتی اوسط ادوار.
ایک مقررہ کے بجائے متحرک سٹاپ نقصان کا استعمال کریں.
سگنل فلٹر کرنے کے لئے دیگر اشارے شامل کریں.
وقت کے فریم پر مبنی الگ الگ پیرامیٹرز کو بہتر بنائیں.
مختلف مصنوعات میں استحکام کی جانچ کریں.
یہ حکمت عملی 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)