डबल ईएमए गोल्डन क्रॉस ऑसिलेशन ट्रैकिंग रणनीति


निर्माण तिथि: 2024-01-03 11:38:51 अंत में संशोधित करें: 2024-01-03 11:38:51
कॉपी: 0 क्लिक्स: 591
1
ध्यान केंद्रित करना
1621
समर्थक

डबल ईएमए गोल्डन क्रॉस ऑसिलेशन ट्रैकिंग रणनीति

अवलोकन

डबल ईएमए गोल्ड क्रॉस शेक ट्रैकिंग रणनीति एक रणनीति है जो ईएमए संकेतक की पहचान प्रवृत्ति का उपयोग करती है और शेक ट्रेडिंग के दौरान ट्रैक करती है। यह रणनीति प्रवृत्ति ट्रैकिंग और शेक कैप्चर के विचारों को जोड़ती है, मजबूत ट्रेडिंग के दौरान लंबी लाइन का पालन करती है, और शेक ट्रेडिंग के दौरान छोटी लाइन का व्यापार करती है, ताकि बेहतर रिटर्न प्राप्त किया जा सके।

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

यह रणनीति 20 चक्र ईएमए का उपयोग करती है जो एक प्रवृत्ति का निर्धारण करने के लिए एक संकेतक है। जब कीमत ईएमए को पार करती है, तो यह माना जाता है कि बाजार बढ़ना शुरू हो गया है; जब कीमत ईएमए को पार करती है, तो यह माना जाता है कि बाजार गिरना शुरू हो गया है।

कीमत पर ईएमए पहनते समय, 20 चक्र उच्चतम के उच्चतम मूल्य को रोकें, और ईएमए पहनने के बाद सबसे कम कीमत को रोकें, और अधिक प्रवेश करें; कीमत के नीचे ईएमए पहनते समय, 20 चक्र निम्नतम के साथ स्टॉप के रूप में, और ईएमए पहनने के बाद उच्चतम मूल्य के साथ स्टॉप के रूप में, और शून्य में प्रवेश करें।

साथ ही, रणनीति यह भी निर्धारित करती है कि क्या ADX 30 से अधिक है। ट्रेड केवल तब किया जाता है जब ट्रेंड पर्याप्त रूप से स्पष्ट होता है, यानी ADX 30 से अधिक होता है। इससे स्टॉप लॉस से बचा जा सकता है।

ट्रेल स्टॉप को बाजार की वास्तविक समय की स्थिति के अनुसार समायोजित किया जाता है ताकि अधिक लाभ को लॉक किया जा सके।

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

यह रणनीति ट्रेंड फॉलोइंग और आघात ट्रेडिंग के फायदे को जोड़ती है, जिससे ट्रेंड ट्रेडों में अधिक मुनाफा मिलता है और आघात ट्रेडों में अधिक स्थिर रिटर्न मिलता है, जिसमें मजबूत अनुकूलन क्षमता होती है।

ईएमए का उपयोग करने से रणनीति के कम पैरामीटर भी होते हैं, जो अति-अनुकूलन के जोखिम को कम करते हैं, जिससे रणनीति की स्थिरता सुनिश्चित होती है।

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

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

इसके अलावा, एक उचित स्टॉप-लॉस सेट करना भी महत्वपूर्ण है। स्टॉप-लॉस सेट करना बहुत बड़ा है, जो एकमुश्त नुकसान को बढ़ा सकता है; स्टॉप-लॉस सेट करना बहुत छोटा है, जो बहुत संवेदनशील हो सकता है, जो स्टॉप-लॉस की संभावना को बढ़ा सकता है। यहां लाभप्रदता लक्ष्य और स्टॉप-लॉस जोखिम के बीच संतुलन खोजने की आवश्यकता है।

अनुकूलन दिशा

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

  1. ईएमए चक्र का चयन अधिक ईएमए चक्र मापदंडों का परीक्षण करने के लिए सबसे अच्छा मापदंडों का संयोजन खोजने के लिए

  2. ADX के पैरामीटर को अनुकूलित किया जा सकता है। ADX चक्र और ADX के थ्रेशोल्ड अलग-अलग सेटिंग्स का प्रयास कर सकते हैं।

  3. स्टॉप लॉस एल्गोरिदम में सुधार किया जा सकता है, जैसे कि डायनामिक स्टॉप लॉस।

  4. अन्य संकेतकों के साथ संयोजन पर विचार किया जा सकता है, जैसे कि केडीजे, एमएसीडी, आदि, एक बहु-सूचक सत्यापन रणनीति बनाने के लिए।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Linda Raschke's Holy Grail", shorttitle="RHG", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true)
adxlen = input(14, title="ADX period")
adxMin = input(30)
dilen = adxlen
f_highest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] >= _value ? _src[_i] : _value
    _return = _value

f_lowest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] <= _value ? _src[_i] : _value
    _return = _value

dirmov(len) =>
	up = change(high)
	down = -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 = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

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

emaLength = input(20)
curEma = ema(close, emaLength)
highPeriod = input(20)
d = na

takeProfitLong = highest(high, highPeriod) 
stopLossLong = f_lowest(low, barssince(low >= curEma))

if strategy.position_size == 0
    if adx(dilen, adxlen) <= adxMin or high < curEma 
        strategy.cancel("Long")
    if adx(dilen, adxlen) > adxMin and low < curEma and high > curEma and curEma > curEma[highPeriod / 2] and curEma > curEma[highPeriod] and takeProfitLong > high
        strategy.order("Long", strategy.long, stop = high)
        strategy.exit("Exit", "Long", limit = takeProfitLong, stop = stopLossLong)
        d := high

takeProfitShort = lowest(low, highPeriod) 
stopLossShort = f_highest(high, barssince(high <= curEma))

if strategy.position_size == 0
    if adx(dilen, adxlen) <= adxMin or low > curEma 
        strategy.cancel("Short")
    if adx(dilen, adxlen) > adxMin and high > curEma and low < curEma and curEma < curEma[highPeriod / 2] and curEma < curEma[highPeriod] and takeProfitShort < low
        strategy.order("Short", strategy.short, stop = low)
        strategy.exit("Exit", "Short", limit = takeProfitShort, stop = stopLossShort)
        d := low


strategy.close("Exit")

plot(d == high ? stopLossLong : d == low ? stopLossShort : na, style = circles, linewidth = 4, color = red)
plot(d == high ? takeProfitLong : d == low ? takeProfitShort : na, style = circles, linewidth = 4, color = green)
plot(d, style = circles, linewidth = 4, color = yellow)
plot(curEma, color = black, linewidth = 2)  

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()