ভি-রিভার্সাল এসএমএ কৌশলটি সর্বোচ্চ মূল্য এবং আগের দিনের সর্বনিম্ন মূল্যের মধ্যে 14 দিনের পরম পার্থক্য এবং সর্বনিম্ন মূল্য এবং আগের দিনের সর্বোচ্চ মূল্যের মধ্যে 14 দিনের পরম পার্থক্য গণনা করে। তারপরে এটি VI + এবং VI- বক্ররেখা গঠনের জন্য তাদের 14 দিনের সহজ চলমান গড় গণনা করে। যখন VI + VI এর উপরে অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন VI- VI + এর নীচে অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
এই কৌশলটির মূল সূচকগুলি হল VI+ এবং VI-. VI+ হ্রাসের গতিকে প্রতিফলিত করে এবং VI- হ্রাসের গতিকে প্রতিফলিত করে। নির্দিষ্ট গণনার সূত্রগুলি নিম্নরূপঃ
VMP = SUM(ABS(HIGH - LOW[1]),14)
VMM = SUM(ABS(LOW - HIGH[1]),14)
STR = SUM(ATR(1),14)
VI+ = VMP/STR
VI- = VMM/STR
কার্ভগুলিতে দোলনা দূর করতে, 14 দিনের সহজ চলমান গড়গুলি VI+ এবং VI- এ গণনা করা হয় SMA ((VI+) এবং SMA ((VI-) পেতে। যখন SMA ((VI+) SMA ((VI-) এর উপরে অতিক্রম করে তখন একটি উত্থান সংকেত উত্পন্ন হয়। যখন SMA ((VI-) SMA ((VI-) এর নীচে অতিক্রম করে তখন একটি হ্রাস সংকেত উত্পন্ন হয়।
উপরন্তু, কৌশলটি প্রবণতা বিচার এবং সংকেত ফিল্টার করার জন্য VI + এবং VI- এর আপ এবং ডাউন স্থিতিও একত্রিত করে, প্রবণতা নেমে গেলে কেবল লম্বা এবং প্রবণতা বাড়লে কেবল শর্ট।
ট্রেন্ড স্ট্যাটাস এবং VI সূচকের গোল্ডেন / ডেড ক্রসকে একত্রিত করে, এই কৌশলটি কার্যকরভাবে মিথ্যা সংকেতগুলি ফিল্টার করতে এবং লাভজনকতা উন্নত করতে পারে। সহজ চলমান গড় কৌশলগুলির তুলনায়, এর ব্রেকআউট সংকেতগুলি আরও নির্ভরযোগ্য।
এই কৌশলটির প্রধান ঝুঁকিগুলি হলঃ
VI সূচকটি নির্দিষ্ট সময়ে বিভ্রান্তিকর সংকেত তৈরি করতে পারে। ঝুঁকি নিয়ন্ত্রণের জন্য ট্রেন্ড ফিল্টারিং এবং স্টপ লস ব্যবহার করা উচিত।
উচ্চ ট্রেডিং খরচ এবং স্লিপিং সহ বাজারগুলি এই কৌশলটির জন্য উপযুক্ত নয় কারণ এটি মুনাফা মার্জিনকে ব্যাপকভাবে হ্রাস করবে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে VI সূচকের পরামিতিগুলি অপ্টিমাইজ করুন।
ভুল সংকেত স্বয়ংক্রিয়ভাবে চিহ্নিত করতে এবং সংকেতের গুণমান উন্নত করতে মেশিন লার্নিং পদ্ধতি ব্যবহার করুন।
একক ট্রেড হ্রাস নিয়ন্ত্রণের জন্য স্টপ লস এবং অর্থ পরিচালনার সাথে প্রস্থান প্রক্রিয়া অপ্টিমাইজ করুন।
কম ট্রেডিং খরচ সহ বাজারে ফোকাস করে ট্রেডিং প্রোডাক্ট নির্বাচনকে অনুকূল করা।
ভি-রিভার্সাল এসএমএ কৌশলটি VI + এবং VI- সূচকগুলি গণনা করে এবং প্রবণতা স্থিতি একত্রিত করে ট্রেডিং সংকেতগুলি নির্ধারণ করে। এটি একটি অপেক্ষাকৃত নির্ভরযোগ্য প্রবণতা অনুসরণকারী কৌশল। এর শক্তি উচ্চ সংকেতের গুণমান এবং গোলমাল ফিল্টার করার ক্ষমতাতে রয়েছে। তবে এটি ফাঁদে পড়ার ঝুঁকিও সম্মুখীন হয়, বাজারের পরিবর্তনের সাথে খাপ খাইয়ে নেওয়ার জন্য ক্রমাগত অপ্টিমাইজেশনের প্রয়োজন হয়।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author=SIDD //Sidd-Vortex strategy is using Vortex formula to generate 4 signals Bullish1 Bullish2 and Bearish1 Bearish2. //Bullish1 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIM is falling from previous bar smooth VIM //Bullish2 signal is getting generated when smooth ma of VIP is crossing over smooth ma of VIM and smooth VIP is rising from previous bar smooth VIP //Bearish1 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIP is falling from previous bar smooth VIP //Bearish2 signal is getting generated when smooth ma of VIM is crossing over smooth ma of VIP and smooth VIM is rising from previous bar smooth VIM //This strategy can be converted into study un-commenting the plotshape and 15th line strategy replace with study and overlay=false strategy(title = "SIDD-Vortex", shorttitle="SIDD-VORTEX", format=format.price, precision=4,overlay=true) period_ = input(14, title="Period", minval=2) len = input(14, minval=1, title="WMA Length") VMP = sum( abs( high - low[1]), period_ ) // sum of absolute current high and previous low with 14 period default VMM = sum( abs( low - high[1]), period_ ) // sum of absolute current low and previous high with 14 period default STR = sum( atr(1), period_ ) //sum of daily atr for 14 days VIP = VMP / STR VIM = VMM / STR simpleMAVIP=wma(VIP, len) smmaVIP = 0.0 smmaVIP := na(smmaVIP[1]) ? simpleMAVIP : (smmaVIP[1] * (len - 1) + VIP) / len // finding the Smoothing average simpleMAVIM=wma(VIM, len) smmaVIM = 0.0 smmaVIM := na(smmaVIM[1]) ? simpleMAVIM : (smmaVIM[1] * (len - 1) + VIM) / len // finding the Smoothing average risingVIP = rising(smmaVIP, 1) fallingVIP = falling(smmaVIP, 1) lineColorVIP = smmaVIP > 0.95 and risingVIP ? color.lime : smmaVIP > 0.95 ? #d65240 : smmaVIP < 0.95 and fallingVIP ? color.red : color.olive risingVIM = rising(VIM, 1) fallingVIM = falling(VIM, 1) lineColorVIM = smmaVIM > 0.95 and risingVIM ? color.red : smmaVIM > 0.95 ? color.olive : smmaVIM < 0.95 and fallingVIM ? color.lime : #d65240 plot(VIP, title="VI +", color=lineColorVIP) plot(VIM, title="VI -", color=lineColorVIM) longCondition = crossover(smmaVIP,smmaVIM) shortCondition = crossover(smmaVIM,smmaVIP) if (longCondition and fallingVIM) strategy.entry("Bullish1", strategy.long) if (shortCondition and fallingVIP) strategy.entry("Bearish1", strategy.short) if (longCondition and risingVIP) strategy.entry("Bullish2", strategy.long) if (shortCondition and risingVIM) strategy.entry("Bearish2", strategy.short) //plotshape(longCondition and fallingVIM, color=color.lime, location=location.belowbar, style=shape.triangleup,size= size.large,text="Bullish",offset=0,textcolor=color.white) //plotshape(longCondition and risingVIP, color=color.lime, location=location.belowbar, style=shape.labelup,size= size.large,text="Bullish",offset=0,textcolor=color.white) //plotshape(Diff > 0 and direction>0, color=color.lime, location=location.belowbar, style=shape.arrowup,size= size.normal,offset=0) //plotshape(shortCondition and fallingVIP , color=color.red, location=location.abovebar, style=shape.triangledown, size= size.large,text="Bearish",offset=0,textcolor=color.white) //plotshape( shortCondition and risingVIM , color=color.red, location=location.abovebar, style=shape.labeldown, size= size.large,text="Bearish",offset=0,textcolor=color.white) //band1 = hline(1.0 , title="Upper Line", linestyle=hline.style_dashed, linewidth=3, color=color.red) //band0 = hline(0.5, title="Lower Line", linestyle=hline.style_dashed, linewidth=3, color=color.lime) //fill(band1, band0, color=color.purple, transp=70)