मूल्य अस्थिरता औसत प्रतिवर्तन रणनीति

लेखक:चाओझांग, दिनांक: 2023-10-11 16:03:36
टैगः

अवलोकन

यह रणनीति मूल्य अस्थिरता के मानक विचलन की गणना करके मूल्य उलटविक्रय के अवसरों का पता लगाती है। जब असामान्य रूप से बड़ा मूल्य उतार-चढ़ाव होता है, तो इसे मूल्य उलटविक्रय के अवसर के रूप में माना जाता है, और रिवर्स ट्रेडिंग स्थिति ली जाती है।

सिद्धांत

इस रणनीति में दो मुख्य संकेतकों का उपयोग किया गया हैः

  1. विक्सफिक्स सूचकः यह निर्धारित करने के लिए कि क्या असामान्य मूल्य अस्थिरता है, एक निश्चित अवधि में मूल्य के मानक विचलन की गणना करता है। विशिष्ट गणना हैः
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 निचली और ऊपरी सीमा रेखाएं हैं। जब मूल्य ऊपरी सीमा रेखा से अधिक होता है, तो इसे असामान्य अस्थिरता माना जाता है।

  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))

जब आरएसआई एक सीमा से नीचे होता है, तो यह ओवरसोल्ड स्थिति और संभावित उछाल को दर्शाता है। जब आरएसआई एक सीमा से अधिक होता है, तो यह ओवरबोल्ड स्थिति और संभावित पुलबैक को दर्शाता है।

प्रवेश और निकास

प्रवेश और निकास तर्क हैः

लॉन्ग एंट्रीः जब कीमत ऊपरी सीमा से अधिक हो या अस्थिरता सीमा से अधिक हो, और आरएसआई एक मूल्य से नीचे हो, तो लॉन्ग जाएं।

शॉर्ट एंट्रीः जब कीमत ऊपरी सीमा से अधिक हो या अस्थिरता सीमा से अधिक हो, और आरएसआई एक मूल्य से अधिक हो, तो शॉर्ट जाएं।

बाहर निकलना: जब कैंडलस्टिक शरीर की दिशा स्थिति दिशा के विपरीत होती है, तो स्थिति बंद हो जाती है।

लाभ

  • व्यापक कवरेज के साथ मूल्य उलट को निर्धारित करने के लिए असामान्य मूल्य अस्थिरता के सांख्यिकीय गुणों का उपयोग करता है।
  • ओवरबॉट/ओवरसोल्ड का आकलन करने के लिए आरएसआई के साथ संयोजन से प्रवेश की सटीकता में सुधार होता है।
  • प्रवेश संकेत के रूप में निचले विचलन बैंड को तोड़ने से खोए हुए अवसर कम हो जाते हैं।
  • स्टॉप लॉस के रूप में कैंडलस्टिक बॉडी रिवर्स त्वरित स्टॉप लॉस का एहसास करता है और नुकसान को कम करता है।

जोखिम

  • पैरामीटर अनुकूलन के लिए निचले विचलन बैंड को समायोजित करने की आवश्यकता हो सकती है।
  • निचले बैंड को तोड़ने से उलटा होने की गारंटी नहीं होती, फंसने का खतरा होता है।
  • आरएसआई मापदंडों को अनुकूलित करने की आवश्यकता है, अनुचित मान गलत संकेतों की ओर ले जाते हैं।
  • कैंडलस्टिक बॉडी स्टॉप लॉस बहुत आक्रामक हो सकता है, समायोजन की आवश्यकता है।

अनुकूलन दिशाएँ

  • असामान्य अस्थिरता को बेहतर ढंग से पकड़ने के लिए मानक विचलन की गणना अवधि का अनुकूलन करना।
  • बेहतर ओवरबॉट/ओवरसोल्ड मापदंड खोजने के लिए आरएसआई मापदंडों को अनुकूलित करें।
  • रिवर्स टाइमिंग निर्धारित करने के लिए KDJ, MACD जैसे अन्य संकेतकों को मिलाकर देखें।
  • स्टॉप लॉस तंत्र को अनुकूलित करें, स्टॉप लॉस बेंचमार्क के रूप में मूल्य प्रतिगमन सेट करें।

निष्कर्ष

रणनीति मूल्य अस्थिरता के मानक विचलन की गणना के माध्यम से असामान्य मूल्य अस्थिरता का पता लगाता है, उलट अवसरों को पकड़ने के लिए। आरएसआई को प्रवेश सटीकता में सुधार के लिए ओवरबॉट / ओवरसोल्ड स्थिति का न्याय करने के लिए जोड़ा जाता है। सरल कैंडलस्टिक बॉडी दिशा स्टॉप लॉस का उपयोग किया जाता है। कुल मिलाकर, रणनीति असामान्य अस्थिरता का पता लगाने के लिए सांख्यिकीय डेटा का उपयोग करने में प्रभावी है, लेकिन स्थिरता में सुधार के लिए आगे पैरामीटर अनुकूलन की आवश्यकता होती है। यदि नुकसान को कम करने के लिए स्टॉप लॉस तंत्र को उचित रूप से अनुकूलित किया जा सकता है, तो रणनीति और भी बेहतर प्रदर्शन करेगी।


/*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()

अधिक