अंतिम संतुलन ऑसिलेटर ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-12 14:08:33
टैगः

img

अवलोकन

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

इस रणनीति का सबसे बड़ा लाभ यह है कि यह बाजारों का उद्देश्यपूर्ण और व्यवस्थित रूप से मूल्यांकन करने की क्षमता रखता है ताकि इष्टतम प्रवेश और निकास बिंदुओं की पहचान की जा सके। यह एक खरीद संकेत को ट्रिगर करता है जब ऑसिलेटर लाइन 0.75 ओवरबॉय स्तर से ऊपर और एक निकास संकेत को पार करती है जब 0.25 ओवरसोल्ड स्तर से नीचे पार करती है।

रणनीति तर्क

अंतिम संतुलन ऑसिलेटर ट्रेडिंग रणनीति का मूल एक समग्र ऑसिलेटर संकेतक की गणना है। इस संकेतक की गणना के लिए कदम हैंः

  1. व्यक्तिगत तकनीकी संकेतकों के मानों की गणना करें: आरओसी, आरएसआई, सीसीआई, विलियम्स %आर और एडीएक्स

  2. तुलना की अनुमति देने के लिए इन सूचक मूल्यों को 0-1 सीमा में मानकीकृत करें

  3. एक मिश्रित थरथरानवाला मूल्य की गणना करने के लिए एक भारित औसत पद्धति का उपयोग करें। प्रत्येक संकेतक का एक समायोज्य भार है, जिसमें आरओसी के लिए 2, आरएसआई के लिए 0.5, सीसीआई के लिए 2, %आर के लिए 0.5 और एडीएक्स के लिए 0.5 के डिफ़ॉल्ट मान हैं। प्रत्येक मानकीकृत संकेतक को इसके वजन से गुणा करें, उन्हें जोड़ें, और 0-1 मिश्रित मूल्य प्राप्त करने के लिए कुल वजन से विभाजित करें।

  4. ट्रिगर ट्रेड सिग्नल जब यह कम्पोजिट ऑसिलेटर उचित रूप से सेट ओवरबॉट और ओवरसोल्ड स्तरों को पार करता है।

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

लाभ

अंतिम संतुलन ऑसिलेटर ट्रेडिंग रणनीति के कई प्रमुख फायदे हैंः

  1. एकल उपकरणों की सीमाओं को दूर करने और कार्रवाई योग्य, मात्रा-संचालित संकेत उत्पन्न करने के लिए कई संकेतकों का उपयोग करके एक उद्देश्यपूर्ण, व्यवस्थित बाजार विश्लेषण पद्धति प्रदान करता है।

  2. ऑसिलेटर के सटीक मूल्यों और मानकीकरण के माध्यम से प्रवेश और निकास समय/सटीकता को अनुकूलित करता है।

  3. सूचक भार और मापदंडों को समायोजित करने के माध्यम से व्यक्तिगत ट्रेडिंग शैलियों और बाजार की स्थितियों के अनुरूप अत्यधिक अनुकूलन और अनुकूलन योग्य।

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

  5. ऐतिहासिक आंकड़ों पर प्रदर्शन का मूल्यांकन करने और रणनीति में सुधार के लिए मापदंडों को ठीक करने के लिए कठोर बैकटेस्टिंग और अनुकूलन।

जोखिम

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

  1. पैरामीटर अनुकूलन जोखिम से suboptimal संकेतक भार और सेटिंग्स खराब लाइव प्रदर्शन. आवश्यक है व्यापक backtesting आदर्श मापदंडों की खोज करने के लिए.

  2. व्यापक बाजार स्थितियों और भावना के सापेक्ष अनुचित सीमा सेटिंग से ओवरसोल्ड/ओवरबुक लेवल जोखिम।

  3. विभेदक संकेतक मिश्रित थरथरानवाला मानों को विकृत करने का जोखिम उठाते हैं। भ्रमित संकेतक के भार को हटाने या कम करने पर विचार करें।

  4. क्वांटम मॉडल की सीमाएं जहां कुछ बाजार स्थितियां प्रदर्शन को खराब कर सकती हैं। एक व्यवसायी के रूप में जोखिम जागरूकता बनाए रखना महत्वपूर्ण है।

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

बढ़ोतरी के अवसर

रणनीति को और अधिक अनुकूलित करने के कुछ तरीकों में शामिल हैंः

  1. पूर्वानुमान सटीकता में सुधार के लिए अधिक विविध तकनीकी संकेतकों के साथ बहु-कारक मॉडल का विस्तार करना।

  2. छिपे हुए संकेतों का पता लगाने और संकेतकों के मूल्य का अनुमान लगाने के लिए तंत्रिका नेटवर्क जैसी मशीन लर्निंग तकनीकों का उपयोग करना।

  3. क्वांटम कारकों को बढ़ाने के लिए कमाई की रिपोर्ट और आर्थिक संकेतकों जैसे मौलिक डेटा को शामिल करना।

  4. परिवर्तित बाजार परिदृश्य के आधार पर भार और सेटिंग्स को गतिशील रूप से संशोधित करने के लिए अनुकूलनशील पैरामीटर ट्यूनिंग की शुरूआत करना।

  5. व्यक्तिगत ट्रेडों पर डाउनसाइड को सक्रिय रूप से नियंत्रित करने के लिए स्टॉप लॉस तंत्र का निर्माण।

  6. परिमाणित पूंजी प्रबंधन के लिए खाते के आकार के आधार पर स्थिति आकार मॉडल को एकीकृत करना।

निष्कर्ष

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


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

// © Julien_Eche

//@version=5
strategy("Ultimate Balance Oscillator Strategy", overlay=true)

// Indicator Weights
weightROC = input.float(2, "Rate of Change (ROC) Weight", group="Weightings")
weightRSI = input.float(0.5, "Relative Strength Index (RSI) Weight", group="Weightings")
weightCCI = input.float(2, "Commodity Channel Index (CCI) Weight", group="Weightings")
weightWilliamsR = input.float(0.5, "Williams %R Weight", group="Weightings")
weightADX = input.float(0.5, "Average Directional Index (ADX) Weight", group="Weightings")

// ROC Settings
rocLength = input.int(20, "Length", minval=1, group="ROC")

// RSI Settings
rsiLength = input.int(14, "Length", minval=1, group="RSI")

// CCI Settings
cciLength = input.int(20, "Length", minval=1, group="CCI")

// Williams %R Settings
williamsRLength = input.int(14, "Length", minval=1, group="Williams %R")

// ADX Settings
adxLength = input.int(14, "ADX Length", minval=1, group="ADX")
adxDiLength = input.int(14, "DI Length", minval=1, group="ADX")

// Source
source_options = input.string("hlc3", "Source", options=["open", "high", "low", "close", "hl2", "hlc3", "ohlc4"])

price_open = request.security(syminfo.tickerid, "D", open)
price_high = request.security(syminfo.tickerid, "D", high)
price_low = request.security(syminfo.tickerid, "D", low)
price_close = request.security(syminfo.tickerid, "D", close)
price_hl2 = request.security(syminfo.tickerid, "D", hl2)
price_hlc3 = request.security(syminfo.tickerid, "D", hlc3)
price_ohlc4 = request.security(syminfo.tickerid, "D", ohlc4)

get_source(source_option) =>
    price = price_close
    if source_option == "open"
        price := price_open
    else if source_option == "high"
        price := price_high
    else if source_option == "low"
        price := price_low
    else if source_option == "close"
        price := price_close
    else if source_option == "hl2"
        price := price_hl2
    else if source_option == "hlc3"
        price := price_hlc3
    else
        price := price_ohlc4
    price

src = get_source(source_options)

// Overbought/Oversold Levels
obLevel = input.float(0.75, "Overbought Level")
osLevel = input.float(0.25, "Oversold Level")

// Calculating the indicators
rocValue = ta.change(close, rocLength)
rsiValue = ta.rsi(close, rsiLength)
cciValue = (src - ta.sma(src, cciLength)) / (0.015 * ta.dev(src, cciLength))
williamsRValue = -100 * (ta.highest(high, williamsRLength) - close) / (ta.highest(high, williamsRLength) - ta.lowest(low, williamsRLength))

dirmov(len) =>
    up = ta.change(high)
    down = -ta.change(low)
    plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truerange = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
    minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

adxValue = adx(adxDiLength, adxLength)

// Normalizing the values
normalize(value, min, max) =>
    (value - min) / (max - min)

normalizedROC = normalize(rocValue, ta.lowest(rocValue, rocLength), ta.highest(rocValue, rocLength))
normalizedRSI = normalize(rsiValue, 0, 100)
normalizedCCI = normalize(cciValue, ta.lowest(cciValue, cciLength), ta.highest(cciValue, cciLength))
normalizedWilliamsR = normalize(williamsRValue, ta.lowest(williamsRValue, williamsRLength), ta.highest(williamsRValue, williamsRLength))
normalizedADX = normalize(adxValue, 0, 50)

// Calculating the combined oscillator line
oscillatorLine = (normalizedROC * weightROC + normalizedRSI * weightRSI + normalizedCCI * weightCCI + normalizedWilliamsR * weightWilliamsR + normalizedADX * weightADX) / (weightROC + weightRSI + weightCCI + weightWilliamsR + weightADX)

// Strategy conditions
enterLong = ta.crossover(oscillatorLine, obLevel)
exitLong = ta.crossunder(oscillatorLine, osLevel)

// Strategy orders
if (enterLong)
    strategy.entry("Buy", strategy.long)
if (exitLong)
    strategy.close("Buy")

// Alert conditions
if (enterLong)
    alert("Buy signal")
if (exitLong)
    alert("Exit signal")


अधिक