संशोधित ओबीवी और एमएसीडी मात्रात्मक व्यापार रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-15 17:58:42
टैगः

img

अवलोकन

यह रणनीति ट्रेडिंग सिग्नल उत्पन्न करने के लिए परिवर्तित ऑन बैलेंस वॉल्यूम (OBV) और MACD का उपयोग करती है। यह मूल्य सूचकांक MACD और परिवर्तित OBV को वॉल्यूम और मूल्य के लिए एक व्यापक संकेतक के रूप में जोड़ती है, जिसका उद्देश्य मूल्य और वॉल्यूम की ताकत के ब्रेकआउट पर ट्रेडिंग अवसरों को पकड़ना है।

रणनीति तर्क

  1. बाजार के रुझान को निर्धारित करने के लिए सरल चलती औसत (एसएमए) की गणना करें।

  2. संशोधित OBV की गणना करें. यह OBV को अधिक संवेदनशील बनाने के लिए बंद मूल्य और पिछले बंद मूल्य संबंध के आधार पर OBV की गणना को संशोधित करता है.

  3. परिवर्तित ओबीवी पर एमएसीडी की गणना करें। एमएसीडी में वॉल्यूम गति परिवर्तन की पहचान करने के लिए तेज रेखा, धीमी रेखा और हिस्टोग्राम शामिल हैं।

  4. जब एमएसीडी गोल्डन क्रॉस करता है और ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है।

  5. जब एमएसीडी मृत क्रॉस और नीचे जाता है, तो एक बेचने का संकेत ट्रिगर होता है।

  6. ट्रेंडलेस मार्केट के दौरान अनावश्यक ट्रेडों से बचने के लिए एसएमए की जाँच करें।

लाभ विश्लेषण

  1. परिवर्तित ओबीवी प्रारंभिक मात्रा परिवर्तनों को पकड़ने के लिए अधिक संवेदनशील है।

  2. एमएसीडी स्पष्ट रूप से वॉल्यूम गति परिवर्तन और प्रमुख स्तरों को दर्शाता है।

  3. वॉल्यूम और मूल्य के संयोजन से संकेत की सटीकता में सुधार होता है।

  4. एसएमए बाजार की प्रवृत्ति निर्धारित करके झूठे संकेत को फ़िल्टर करता है।

  5. स्पष्ट रणनीति तर्क और बड़े अनुकूलन स्थान।

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

  1. संशोधित OBV से झूठे संकेत उत्पन्न हो सकते हैं, अन्य संकेतकों द्वारा फ़िल्टर की आवश्यकता होती है।

  2. गलत एमएसीडी मापदंडों की सेटिंग ट्रेडों को मिस कर सकती है या गलत संकेतों का कारण बन सकती है।

  3. घाटे से बचने के लिए स्टॉक के विवरण पर ध्यान दें।

  4. बाजार की स्थिति की निगरानी करें क्योंकि रणनीति विशेष परिदृश्यों के लिए काम नहीं कर सकती है।

  5. बैकटेस्ट ओवरफिट जोखिम से लाइव ट्रेडिंग में खराब प्रदर्शन हो सकता है।

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

  1. बाजार के रुझान निर्धारण को अनुकूलित करने के लिए विभिन्न SMA अवधि संयोजनों का परीक्षण करें।

  2. वॉल्यूम गति परिवर्तन को बेहतर ढंग से पहचानने के लिए एमएसीडी मापदंडों का परीक्षण करें।

  3. फिल्टर के रूप में अन्य संकेतक जैसे कि KDJ, RSI आदि जोड़ें।

  4. प्रति व्यापार सीमा हानि के लिए स्टॉप लॉस जोड़ें.

  5. समग्र लाभप्रदता में सुधार के लिए धन प्रबंधन को अनुकूलित करें।

  6. स्टॉक के बीच परीक्षण मापदंडों में अंतर।

निष्कर्ष

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot

//@version=5
strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100)

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
//SMA Tredline
out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)
//sma plot
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200", offset=offset)
plot(outf, color=color.maroon, title="MA50", offset=offset)
plot(outn, color=color.orange, title="MA90", offset=offset)
plot(outt, color=color.olive, title="MA21", offset=offset)
plot(outthree, color=color.fuchsia, title="MA9", offset=offset)

fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
chng = 0
obv = ta.cum(math.sign(ta.change(close)) * volume)
if close < close[1] and (open < close)
    chng := 1
else if close > close[1]
    chng := 1
else
    chng := -1
obvalt = ta.cum(math.sign(chng) * volume)
//src = input(title="Source", defval=close)
src = obvalt
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
//hline(0, "Zero Line", color=color.new(#787B86, 50))
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
//BUY Signal
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macd,2)
macdlong = ta.crossover(macd, signal)
longCondition=false
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macd,1)
macdsell = macd < signal
shortCondition = false
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true


if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)


अधिक