
डबल ईएमए गोल्ड क्रॉस शेक ट्रैकिंग रणनीति एक रणनीति है जो ईएमए संकेतक की पहचान प्रवृत्ति का उपयोग करती है और शेक ट्रेडिंग के दौरान ट्रैक करती है। यह रणनीति प्रवृत्ति ट्रैकिंग और शेक कैप्चर के विचारों को जोड़ती है, मजबूत ट्रेडिंग के दौरान लंबी लाइन का पालन करती है, और शेक ट्रेडिंग के दौरान छोटी लाइन का व्यापार करती है, ताकि बेहतर रिटर्न प्राप्त किया जा सके।
यह रणनीति 20 चक्र ईएमए का उपयोग करती है जो एक प्रवृत्ति का निर्धारण करने के लिए एक संकेतक है। जब कीमत ईएमए को पार करती है, तो यह माना जाता है कि बाजार बढ़ना शुरू हो गया है; जब कीमत ईएमए को पार करती है, तो यह माना जाता है कि बाजार गिरना शुरू हो गया है।
कीमत पर ईएमए पहनते समय, 20 चक्र उच्चतम के उच्चतम मूल्य को रोकें, और ईएमए पहनने के बाद सबसे कम कीमत को रोकें, और अधिक प्रवेश करें; कीमत के नीचे ईएमए पहनते समय, 20 चक्र निम्नतम के साथ स्टॉप के रूप में, और ईएमए पहनने के बाद उच्चतम मूल्य के साथ स्टॉप के रूप में, और शून्य में प्रवेश करें।
साथ ही, रणनीति यह भी निर्धारित करती है कि क्या ADX 30 से अधिक है। ट्रेड केवल तब किया जाता है जब ट्रेंड पर्याप्त रूप से स्पष्ट होता है, यानी ADX 30 से अधिक होता है। इससे स्टॉप लॉस से बचा जा सकता है।
ट्रेल स्टॉप को बाजार की वास्तविक समय की स्थिति के अनुसार समायोजित किया जाता है ताकि अधिक लाभ को लॉक किया जा सके।
यह रणनीति ट्रेंड फॉलोइंग और आघात ट्रेडिंग के फायदे को जोड़ती है, जिससे ट्रेंड ट्रेडों में अधिक मुनाफा मिलता है और आघात ट्रेडों में अधिक स्थिर रिटर्न मिलता है, जिसमें मजबूत अनुकूलन क्षमता होती है।
ईएमए का उपयोग करने से रणनीति के कम पैरामीटर भी होते हैं, जो अति-अनुकूलन के जोखिम को कम करते हैं, जिससे रणनीति की स्थिरता सुनिश्चित होती है।
इस रणनीति का मुख्य जोखिम यह है कि अस्थिरता बढ़ने पर अधिक नुकसान हो सकता है। इस समय एडीएक्स की भूमिका उजागर होती है। जब एडीएक्स कम होता है, तो व्यापार बंद हो जाता है, ताकि स्पष्ट प्रवृत्ति के बिना नुकसान से बचा जा सके।
इसके अलावा, एक उचित स्टॉप-लॉस सेट करना भी महत्वपूर्ण है। स्टॉप-लॉस सेट करना बहुत बड़ा है, जो एकमुश्त नुकसान को बढ़ा सकता है; स्टॉप-लॉस सेट करना बहुत छोटा है, जो बहुत संवेदनशील हो सकता है, जो स्टॉप-लॉस की संभावना को बढ़ा सकता है। यहां लाभप्रदता लक्ष्य और स्टॉप-लॉस जोखिम के बीच संतुलन खोजने की आवश्यकता है।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
ईएमए चक्र का चयन अधिक ईएमए चक्र मापदंडों का परीक्षण करने के लिए सबसे अच्छा मापदंडों का संयोजन खोजने के लिए
ADX के पैरामीटर को अनुकूलित किया जा सकता है। ADX चक्र और ADX के थ्रेशोल्ड अलग-अलग सेटिंग्स का प्रयास कर सकते हैं।
स्टॉप लॉस एल्गोरिदम में सुधार किया जा सकता है, जैसे कि डायनामिक स्टॉप लॉस।
अन्य संकेतकों के साथ संयोजन पर विचार किया जा सकता है, जैसे कि केडीजे, एमएसीडी, आदि, एक बहु-सूचक सत्यापन रणनीति बनाने के लिए।
डबल ईएमए गोल्ड क्रॉस शेक ट्रैकिंग रणनीति कुल मिलाकर एक बहुत ही व्यावहारिक रणनीति है। यह प्रवृत्ति रणनीति और शेक रणनीति की विशेषताओं को जोड़ती है, और इसे लंबी लाइन ट्रैकिंग के लिए भी इस्तेमाल किया जा सकता है, और इसे छोटी लाइन ट्रेडिंग के लिए भी इस्तेमाल किया जा सकता है। पैरामीटर अनुकूलन और संयोजन सूचकांक सत्यापन के माध्यम से, रणनीति की प्रभावशीलता को और बढ़ाया जा सकता है। यह उन निवेशकों के लिए उपयुक्त है जिनके पास बाजार के बारे में कुछ शोध करने की क्षमता है।
/*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()