এই কৌশলটি মূল্যের স্ট্যান্ডার্ড ডিফারেনশিয়াল গণনা করে এবং দামের অস্বাভাবিকভাবে বড় আকারের ওঠানামা রয়েছে কিনা তা বিচার করে। যখন দামের অস্বাভাবিকভাবে বড় আকারের ওঠানামা হয়, তখন এটি মূল্যের বিপরীত হওয়ার সুযোগ হিসাবে বিচার করা হয় এবং বিপরীত ক্রিয়াকলাপ করা হয়।
এই কৌশলটি মূলত দুটি সূচক ব্যবহার করেঃ
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 হল স্ট্যান্ডার্ড ডিফারেনশিয়াল, midLine হল গড়, lowerBand এবং upperBand হল যথাক্রমে নিম্ন সীমা এবং উপরের সীমা। যখন দাম উপরের সীমা অতিক্রম করে, তখন অস্বাভাবিক অস্থিরতা বলে মনে করা হয়।
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 একটি নির্দিষ্ট মানের নীচে থাকে, তখন দামটি একটি ওভারসোল অবস্থায় থাকে এবং একটি রিবাউন্ড হতে পারে। যখন RSI একটি নির্দিষ্ট মান অতিক্রম করে, তখন দামটি একটি ওভারসোল অবস্থায় থাকে এবং একটি রিবাউন্ড হতে পারে।
এই কৌশলটির প্রবেশ ও প্রস্থান লজিক নিম্নরূপঃ
মাল্টি পজিশনে প্রবেশঃ যখন দাম উপরের সীমা অতিক্রম করে বা ওঠানামা থ্রেশহোল্ড অতিক্রম করে এবং আরএসআই একটি নির্দিষ্ট মানের নীচে থাকে, তখন বেশি করুন।
খালি পজিশনে প্রবেশঃ যখন দাম উপরের সীমা অতিক্রম করে বা ওঠানামা ঘাটতি অতিক্রম করে এবং আরএসআই একটি নির্দিষ্ট মান অতিক্রম করে, তখন খালি করা হয়।
প্রস্থানের শর্ত: K-লাইন সত্তার দিকের বিপরীতে পজিশন খোলার দিকটি পজিশনটি প্লেইন করে।
এই কৌশলটি মূল্যের অস্থিরতার মানদণ্ডের পার্থক্য গণনা করে মূল্যের অস্বাভাবিক ওঠানামা রয়েছে কিনা তা বিচার করে, যাতে বিপরীতমুখী সুযোগ ধরা যায়। প্রবেশের সময় বেছে নেওয়ার ক্ষেত্রে, আরএসআই সূচকের সাথে দামের ওভারবয় ওভারসেলের অবস্থা নির্ধারণের ক্ষেত্রে, নির্ভুলতা বাড়ায়। স্টপ-অফ পদ্ধতিতে, একটি সহজ সত্তা দিকনির্দেশনা ব্যবহার করে। সামগ্রিকভাবে, এই কৌশলটি অস্বাভাবিক ওঠানামা নির্ধারণের জন্য পরিসংখ্যানগত ডেটা ব্যবহার করে, কার্যকর, তবে স্থিতিশীলতা বাড়ানোর জন্য আরও অনুকূলিতকরণের প্রয়োজন। যদি স্টপ-অফ ব্যবস্থাটি যুক্তিসঙ্গতভাবে অপ্টিমাইজ করা যায়, তবে এই কৌশলটি আরও ভাল হবে।
/*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()