দামের অস্থিরতার গড় বিপরীতমুখী কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১১-১১ ১৬ঃ৩৩ঃ৩৬
ট্যাগঃ

সারসংক্ষেপ

এই কৌশলটি মূল্যের উদ্বায়ীতার মান বিচ্যুতি গণনা করে মূল্য বিপরীতমুখী সুযোগগুলি সনাক্ত করে। যখন একটি অস্বাভাবিকভাবে বড় দামের ওঠানামা হয়, তখন এটি মূল্য বিপরীতমুখী হওয়ার সুযোগ হিসাবে বিবেচিত হয় এবং বিপরীত ট্রেডিং অবস্থান নেওয়া হয়।

নীতি

কৌশলটি দুটি প্রধান সূচক ব্যবহার করেঃ

  1. VixFix সূচকঃ নির্দিষ্ট সময়ের মধ্যে দামের স্ট্যান্ডার্ড বিচ্যুতি গণনা করে তা নির্ধারণ করতে হয় যে দামের অস্বাভাবিক অস্থিরতা আছে কিনা। নির্দিষ্ট গণনাটি হলঃ
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl) 
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev 
upperBand = midLine + sDev

যেখানে wvf হল দামের অস্থিরতা, sDev হল স্ট্যান্ডার্ড ডিভিয়েশন, মিডলাইন হল গড় রেখা, লোয়ারব্যান্ড এবং আপারব্যান্ড হল নিম্ন ও উপরের সীমা রেখা। যখন দাম উপরের সীমা রেখা অতিক্রম করে, তখন এটিকে অস্বাভাবিক অস্থিরতা বলে মনে করা হয়।

  1. আরএসআই সূচকঃ মূল্য বিপরীতমুখী হওয়ার সময় নির্ধারণের জন্য মূল্যের আপেক্ষিক শক্তি সূচক গণনা করে। গণনাটি হলঃ
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7) 
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

যখন আরএসআই একটি থ্রেশহোল্ডের নিচে থাকে, তখন এটি ওভারসোল্ড স্ট্যাটাস এবং সম্ভাব্য রিবাউন্ডের ইঙ্গিত দেয়। যখন আরএসআই একটি থ্রেশহোল্ড অতিক্রম করে, তখন এটি ওভারক্রয়েড স্ট্যাটাস এবং সম্ভাব্য পলব্যাকের ইঙ্গিত দেয়।

প্রবেশ ও প্রস্থান

এন্ট্রি এবং আউটপুট লজিক হলঃ

লং এন্ট্রিঃ যখন দাম উপরের সীমা অতিক্রম করে বা অস্থিরতা প্রান্তিক সীমা অতিক্রম করে এবং আরএসআই একটি মানের নীচে থাকে, তখন লং যান।

শর্ট এন্ট্রিঃ যখন দাম উপরের সীমা অতিক্রম করে বা অস্থিরতা প্রান্তিক সীমা অতিক্রম করে এবং আরএসআই একটি মান অতিক্রম করে, তখন শর্ট যান।

প্রস্থানঃ যখন ক্যান্ডেলস্টাইলের শরীরের দিকটি অবস্থানের দিকের বিপরীত হয়, তখন অবস্থান বন্ধ করুন।

সুবিধা

  • বিস্তৃত কভারেজ সহ মূল্য বিপরীতমুখীতা নির্ধারণের জন্য অস্বাভাবিক মূল্য উদ্বায়ীতার পরিসংখ্যানগত বৈশিষ্ট্য ব্যবহার করে।
  • অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় বিচার করার জন্য আরএসআই এর সাথে একত্রিত করা প্রবেশের নির্ভুলতা উন্নত করে।
  • প্রবেশ সংকেত হিসেবে নিম্ন বিচ্যুতি ব্যান্ড ভাঙ্গার ফলে সুযোগ হ্রাস পায়।
  • স্টপ লস হিসাবে ক্যান্ডেলস্টিকের শরীরের বিপরীত দ্রুত স্টপ লস উপলব্ধি করে এবং ক্ষতি হ্রাস করে।

ঝুঁকি

  • প্যারামিটার অপ্টিমাইজেশনের জন্য নিম্ন বিচ্যুতি ব্যান্ড সামঞ্জস্য করতে হবে।
  • নীচের ব্যান্ড ভেঙে ফেললে বিপরীতমুখী হওয়ার কোনো নিশ্চয়তা নেই, ফাঁদে পড়তে পারে।
  • আরএসআই প্যারামিটার অপ্টিমাইজেশান প্রয়োজন, ভুল মান ভুল সংকেত হতে।
  • ক্যান্ডেলস্টিকের শরীরের স্টপ হ্রাস খুব আক্রমণাত্মক হতে পারে, সমন্বয় প্রয়োজন।

অপ্টিমাইজেশান নির্দেশাবলী

  • স্ট্যান্ডার্ড ডিভিয়েশন গণনার সময়কালকে অপ্টিমাইজ করুন যাতে অস্বাভাবিক অস্থিরতা আরও ভালভাবে ধরা যায়।
  • অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয়ের মানদণ্ড খুঁজে পেতে RSI পরামিতিগুলি অপ্টিমাইজ করুন।
  • বিপরীতমুখী সময় নির্ধারণের জন্য কেডিজে, এমএসিডি এর মতো অন্যান্য সূচক একত্রিত করার চেষ্টা করুন।
  • স্টপ লস মেকানিজম অপ্টিমাইজ করুন, স্টপ লস রেঞ্চমার্ক হিসেবে দামের রিট্র্যাকশন সেট করুন।

সিদ্ধান্ত

কৌশলটি মূল্যের উদ্বায়ীতার মান বিচ্যুতি গণনা করে, বিপরীতমুখী সুযোগগুলি ক্যাপচার করার জন্য অস্বাভাবিক মূল্য উদ্বায়ীতা সনাক্ত করে। প্রবেশের নির্ভুলতা উন্নত করার জন্য ওভারবয়ড / ওভারসোল্ড স্থিতি বিচার করতে আরএসআই একত্রিত করা হয়। সহজ মোমবাতি দেহের দিক স্টপ লস ব্যবহার করা হয়। সামগ্রিকভাবে, কৌশলটি অস্বাভাবিক উদ্বায়ীতা সনাক্ত করতে পরিসংখ্যানগত তথ্য ব্যবহারে কার্যকর, তবে স্থিতিশীলতা উন্নত করতে আরও পরামিতি অপ্টিমাইজেশনের প্রয়োজন। যদি স্টপ লস প্রক্রিয়াটি ক্ষতি হ্রাস করার জন্য যুক্তিসঙ্গতভাবে অনুকূলিত করা যায় তবে কৌশলটি আরও ভাল সম্পাদন করবে।


/*backtest
start: 2022-10-04 00:00:00
end: 2023-10-10 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's VixFix + RSI Strategy v1.0", shorttitle = "VixFix + RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
limit = input(40, defval = 40, minval = 2, maxval = 50, title = "RSI Limit")

pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0, minval = 1, maxval = 5, title = "Bollinger Band Standard Devaition Up")
lb = input(50, title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range - Based on Percentile and LookBack Period?")
sd = input(false, title="Show Standard Deviation Line?")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Vix Fix
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl

col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray

//RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
up = (wvf >= upperBand or wvf >= rangeHigh) and fastrsi < limit and close < open
dn = (wvf >= upperBand or wvf >= rangeHigh) and fastrsi > (100 - limit) and close > open
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1]

if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

আরো