बोलिंगर बैंड, मूविंग एवरेज और एमएसीडी संयुक्त ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-04 15:42:23
टैगः

img

रणनीति का अवलोकन

यह रणनीति बोलिंगर बैंड, चलती औसत और एमएसीडी को जोड़ती है, जो एक अपेक्षाकृत पूर्ण ट्रेडिंग प्रणाली बनाती है। बाजार की प्रवृत्ति का न्याय करते हुए, यह कुछ उलट अवसरों को भी पकड़ सकती है।

रणनीति का नाम और तर्क

इस रणनीति का नाम Triangle Anchoring Trend Tracking Strategy है। इस नाम से प्रवृत्ति की दिशा और एंकर प्रवेश बिंदुओं को निर्धारित करने के लिए तीन तकनीकी संकेतकों के उपयोग पर प्रकाश डाला गया है।

व्यापार का मूल तर्क हैः

  1. यह निर्धारित करने के लिए बोलिंगर मिड बैंड, ईएमए और एमएसीडी शून्य रेखा की तुलना करें कि बाजार अपट्रेंड या डाउनट्रेंड चरण में है या नहीं।

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

  3. लाभ लक्ष्य और स्टॉप लॉस सेट करें. एक बार दर्ज होने के बाद, निश्चित लक्ष्य और स्टॉप लॉस स्तर पूर्व निर्धारित होते हैं.

लाभ विश्लेषण

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

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

दूसरा, बीबी में स्वयं मजबूत लिफाफा विशेषताएं हैं। मध्य बैंड के आसपास का क्षेत्र भी कुछ समर्थन/प्रतिरोध स्तरों को इंगित करता है। इसलिए ईएमए क्रॉसओवर का संकेत मूल्य होता है।

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

अंत में, पूर्व निर्धारित लाभ लक्ष्य और स्टॉप लॉस व्यक्तिगत ट्रेडों के जोखिम/लाभ को नियंत्रित करते हैं, जिससे समग्र स्थिरता सुनिश्चित होती है।

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

कई विश्लेषणात्मक साधनों के प्रयोग के बावजूद, मुख्य जोखिम हैंः

  1. गलत बीबी मापदंड प्राथमिक प्रवृत्ति को स्पष्ट रूप से प्रतिबिंबित नहीं करते हैं।

  2. ईएमए प्रणाली लंबे समय तक संकेत देती है लेकिन एमएसीडी स्पष्ट रूप से सकारात्मक नहीं हो जाता है, मंदी बल विस्तार कर सकते हैं।

  3. लाभ लक्ष्य/स्टॉप लॉस रेंज बहुत व्यापक है, एकल व्यापार हानि व्यापक होती है।

मुख्य समाधान हैंः

  1. बीबी मापदंडों को यह सुनिश्चित करने के लिए समायोजित करें कि मध्य बैंड मुख्य प्रवृत्ति को प्रभावी ढंग से प्रतिबिंबित करता है।

  2. बुल/बियर गति का आकलन करने के लिए अधिक तकनीकी संकेतक पेश करें।

  3. ऐतिहासिक ट्रेडों का मूल्यांकन करें और लाभ लक्ष्य/स्टॉप लॉस को अनुकूलित करें।

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

इस रणनीति में निम्नलिखित पहलुओं में और सुधार किया जा सकता हैः

  1. रुझान के आकलन में सहायता और सटीकता में सुधार के लिए केडीजे, एटीआर आदि जैसे अधिक संकेतक पेश करें।

  2. अधिक परिष्कृत स्टॉप जैसे कि ट्रेलिंग स्टॉप, ब्रेकआउट स्टॉप आदि को लागू करें।

  3. विभिन्न उत्पादों के प्रदर्शन का आकलन करें। विभिन्न बाजार स्थितियों के अनुरूप मापदंडों को ठीक से समायोजित करें।

  4. विभिन्न समय सीमाओं और बाजारों में बैकटेस्ट परिणामों के आधार पर परीक्षण और tweak रणनीति।

  5. स्वचालित पैरामीटर अनुकूलन और गतिशील रणनीति अद्यतन के लिए मशीन सीखने को शामिल करें।

निष्कर्ष

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


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Precio de beneficio y Stop Loss
takeProfitTicks = 87636
stopLossTicks = 53350

// Bollinger Bands + EMA
length_bb = input(150, title="BB Length")
src_bb = input(close, title="BB Source")
mult = input(2.0, title="BB StdDev")
basis = ta.sma(src_bb, length_bb)
dev = mult * ta.stdev(src_bb, length_bb)
upper = basis + dev
lower = basis - dev

len_ema = input(34, title="EMA Length")
src_ema = input(close, title="EMA Source")
out_ema = ta.ema(src_ema, len_ema)

typeMA = input("SMA", title="Method")
smoothingLength = input(5, title="Length")

var float smoothingLine = na
if (typeMA == "SMA")
    smoothingLine := ta.sma(out_ema, smoothingLength)
else if (typeMA == "EMA")
    smoothingLine := ta.ema(out_ema, smoothingLength)

// MACD
fast_length = input(title="Fast Length", defval=9)
slow_length = input(title="Slow Length", defval=17)
src_macd = input(title="Source", defval=close)
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"])

fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Condiciones de compra y venta
longCondition = (out_ema > basis) and (macd > signal) and (signal > 0)
shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0)

// Variables de estado
var bool longExecuted = na
var bool shortExecuted = na

// Estrategia
if (longCondition and not longExecuted)
    strategy.entry("Long", strategy.long)
    longExecuted := true
    shortExecuted := na
if (shortCondition and not shortExecuted)
    strategy.entry("Short", strategy.short)
    shortExecuted := true
    longExecuted := na

// Take Profit y Stop Loss para Compras y Ventas Cortas
strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks)
strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks)

// Cierre de posiciones cuando la dirección cambia
if ((out_ema < basis) and (macd < signal))
    strategy.close("Long")
    longExecuted := na
if ((out_ema > basis) and (macd > signal))
    strategy.close("Short")
    shortExecuted := na

// Plots
plot(basis, "BB Basis", color=#FF6D00)
plot(upper, "BB Upper", color=color.new(#2962FF, 0.5))
plot(lower, "BB Lower", color=color.new(#2962FF, 0.5))

plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2)

hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green)))
plot(macd, title="MACD", color=color.blue)
plot(signal, title="Signal", color=color.orange)


अधिक