ট্রেডিং ভলিউম সূচক (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)