ओबीवी संकेतक पर आधारित ट्रेंड फॉलोइंग रणनीति


निर्माण तिथि: 2024-02-20 15:35:08 अंत में संशोधित करें: 2024-02-20 15:35:08
कॉपी: 0 क्लिक्स: 904
1
ध्यान केंद्रित करना
1617
समर्थक

ओबीवी संकेतक पर आधारित ट्रेंड फॉलोइंग रणनीति

अवलोकन

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

रणनीति सिद्धांत

यह रणनीति मुख्य रूप से यह निर्धारित करने के लिए उपयोग की जाती है कि क्या ओबीवी सूचकांक बढ़ते प्रवृत्ति में है या नहीं। विशेष रूप से, ओबीवी के 6 दिन ईएमए और 24 दिन ईएमए की गणना की जाती है, जो 6 दिन ईएमए पर 24 दिन ईएमए पार करने पर एक बहु-हेड संकेत उत्पन्न करता है। इसी तरह, 6 दिन ईएमए के नीचे 24 दिन ईएमए पार करने पर, एक खाली सिर संकेत उत्पन्न होता है। इसके अलावा, रणनीति में 3% का स्टॉप लॉस भी है।

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

श्रेष्ठता विश्लेषण

इस रणनीति के कुछ फायदे हैंः

  1. ओबीवी सूचकांक के आधार पर बाजार के प्रतिभागियों की इच्छाओं का स्पष्ट रूप से आकलन किया जा सकता है, और संकेत अधिक विश्वसनीय हैं।

  2. दोहरी ईएमए एकसमान प्रसंस्करण कुछ शोर को हटा देता है, जिससे संकेत स्पष्ट हो जाता है।

  3. धीमी गति से ईएमए लाइन संयोजन का उपयोग करने से कीमतों में उतार-चढ़ाव और प्रवृत्ति में परिवर्तन को पकड़ने में मदद मिलती है।

  4. रणनीति सरल है और इसे लागू करना आसान है।

जोखिम विश्लेषण

इस रणनीति के कुछ जोखिम भी हैं:

  1. ओबीवी संकेतक कुछ समय में गलत संकेत देता है, और इस समय रणनीति को नुकसान हो सकता है।

  2. ईएमए लाइनों में देरी के कारण, आप सबसे अच्छे प्रवेश बिंदुओं को याद कर सकते हैं।

  3. निश्चित स्टॉप लॉस सेटिंग्स बाजार में बदलाव के लिए बहुत कठोर हो सकती हैं।

क्या करें?

  1. गलत संकेतों से बचने के लिए अन्य संकेतकों के साथ पुष्टि करें।

  2. ईएमए लाइन को अधिक संवेदनशील बनाने के लिए पैरामीटर सेटिंग्स का अनुकूलन करें।

  3. गतिशील रोकथाम सेट करें

अनुकूलन दिशा

इस रणनीति को निम्नलिखित दिशाओं में अनुकूलित किया जा सकता हैः

  1. ईएमए पैरामीटर के संयोजन को अनुकूलित करें और अधिक मिलान करने वाले औसत रेखा पैरामीटर ढूंढें।

  2. सिग्नल की सटीकता बढ़ाने के लिए अन्य संकेतकों जैसे कि MACD, RSI आदि को जोड़ना।

  3. गतिशील स्टॉप-लॉस सेट करें, जो बाजार में उतार-चढ़ाव के आधार पर वास्तविक समय में स्टॉप-लॉस को समायोजित कर सकता है।

  4. पैरामीटर संयोजन का अनुकूलन करें और सर्वोत्तम पैरामीटर संयोजन ढूंढें।

संक्षेप

इस रणनीति के लिए समग्र एक अपेक्षाकृत सरल और विश्वसनीय प्रवृत्ति ट्रैकिंग रणनीति है. यह OBV सूचक और दोहरी ईएमए समरेखा के संयोजन में प्रवृत्ति के लिए निर्णय को लागू करता है. इसका लाभ यह है कि ऑपरेशन सरल है, संकेत स्पष्ट है, और प्रभावी रूप से प्रवृत्ति को ट्रैक करने में सक्षम है; नुकसान यह है कि गलत संकेत हो सकते हैं, और ईएमए लाइन प्रसंस्करण में देरी है। अन्य संकेतकों के संयोजन के माध्यम से अनुकूलन, बेहतर प्रभाव प्राप्त किया जा सकता है।

रणनीति स्रोत कोड
/*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
strategy("OBV EMA X BF 🚀", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

/////////////// OBV /////////////// 
src = close
atr = atr(input(title="ATR Period", defval=3, minval=1))
atrmult = input(title="ATR Mult", defval=1, minval=0)
obv = cum(change(src) > 0 ? volume * (volume / atr) : change(src) < 0 ? -volume * (volume / atr) : 0 * volume / atr)
e1 = ema(obv, input(24))
e2 = ema(obv, input(6))

///////////////  Strategy  /////////////// 
long = crossover(e2, e1)
short = crossunder(e2, e1)

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

//////////////// Stop loss /////////////// 
sl_inp = input(3.0, title='Stop Loss %') / 100
tp_inp = input(5000.0, title='Take Profit %') / 100
 
take_level_l = strategy.position_avg_price * (1 + tp_inp)
take_level_s = strategy.position_avg_price * (1 - tp_inp)

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("L", strategy.long, when=long)
    strategy.entry("S", strategy.short, when=short)
    strategy.exit("L SL", "L", stop=long_sl, when=since_longEntry > 0)
    strategy.exit("S SL", "S", stop=short_sl, when=since_shortEntry > 0)

/////////////// Plotting /////////////// 
plot(e1, color = e1 > e1[1] ? color.lime : e1 < e1[1] ? color.red : color.white, linewidth = 2, offset = 0)
plot(e2, color = e2 > e2[1] ? color.lime : e2 < e2[1] ? color.red : color.white, linewidth = 1)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=90)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=60)