ऑक्टा-ईएमए और इचिमोकू क्लाउड चार्ट मात्रात्मक ट्रेडिंग रणनीति


निर्माण तिथि: 2023-12-11 14:52:05 अंत में संशोधित करें: 2023-12-11 14:52:05
कॉपी: 1 क्लिक्स: 737
1
ध्यान केंद्रित करना
1621
समर्थक

ऑक्टा-ईएमए और इचिमोकू क्लाउड चार्ट मात्रात्मक ट्रेडिंग रणनीति

अवलोकन

यह रणनीति 8 अलग-अलग चक्रों की सूचकांक चलती औसत का उपयोग करती है और प्रमुख ट्रेडिंग सिग्नल के रूप में Ichimoku क्लाउड ग्राफ का उपयोग करती है, जो 1 घंटे, 4 घंटे या डेली टाइम फ्रेम के तहत प्रभावी रूप से चल सकती है।

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

इस रणनीति के मुख्य सिद्धांत दो भागों पर आधारित हैंः

  1. 8 सूचकांक चलती औसत ((Octa-EMA)

इस रणनीति में 8 अलग-अलग चक्रों के ईएमए का उपयोग किया जाता है, जो 5 वीं, 11 वीं, 15 वीं, 18 वीं, 21 वीं, 24 वीं, 28 वीं और 34 वीं लाइन हैं। इन 8 ईएमए को ऑक्टा-ईएमए कहा जाता है। जब एक छोटी अवधि का ईएमए एक लंबी अवधि के ईएमए के ऊपर होता है, तो यह एक ओवरहेड प्रवृत्ति को दर्शाता है।

  1. इचिमोकु क्लाउड मैप सूचक

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

इस रणनीति के लिए ट्रेडिंग सिग्नल उपरोक्त दो प्रमुख घटकों से आते हैं। जब 8 ईएमए सभी बहु-सिरिया में होते हैं (लघु ईएमए लंबे ईएमए के ऊपर) और कीमत इचिमोकु के क्लाउड ग्राफ से अधिक होती है, तो एक खरीद संकेत उत्पन्न होता है। जब ईएमए सरणी खाली सिर पर जाती है (लघु ईएमए लंबे ईएमए के नीचे) तो एक बेचने का संकेत उत्पन्न होता है।

रणनीति का विश्लेषण

इस रणनीति के मुख्य फायदे हैंः

  1. दोहरे सूचक फ़िल्टरिंग का उपयोग कर, झूठे संकेतों को कम करें
  2. इचिमोकू क्लाउड चार्ट ट्रेडों को ट्रेंड करने से रोकता है
  3. अनुच्छेद 8 ईएमए क्रॉस पोर्टफोलियो में प्रवृत्ति का आकलन, सटीकता में सुधार
  4. कई समय चक्रों में चल सकता है
  5. पैरामीटर अनुकूलित करने के लिए विशाल, विभिन्न किस्मों के लिए अनुकूलित किया जा सकता है

रणनीतिक जोखिम विश्लेषण

इस रणनीति में कुछ जोखिम भी हैं:

  1. भूकंपीय घटनाओं में अधिक शून्य सिग्नल उत्पन्न हो सकते हैं
  2. सख्त खरीद शर्तें, कुछ खरीदारी छूट सकती हैं
  3. अल्पकालिक और मध्यमकालिक रुझानों के बीच विसंगति होने पर निष्क्रिय हो सकता है
  4. ईएमए पैरामीटर की गलत सेटिंग से सिग्नल में देरी हो सकती है

उपरोक्त जोखिमों के लिए, ईएमए मापदंडों को समायोजित करके या प्रवेश की शर्तों को अनुकूलित करके जोखिम को कम किया जा सकता है, या अन्य संकेतकों को सहायक के रूप में जोड़ा जा सकता है।

रणनीति अनुकूलन दिशा

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

  1. ईएमए पैरामीटर को समायोजित करें, अनुरूप चक्र का अनुकूलन करें
  2. प्रवृत्ति की सटीकता सुनिश्चित करने के लिए औसत रेखा अधिक रिक्तता का आकलन करें
  3. MACD, KDJ और अन्य संकेतकों के साथ संयोजन, प्रवेश समय का अनुकूलन
  4. स्टॉप लॉस स्टॉप रणनीति में वृद्धि, एकमुश्त घाटे को नियंत्रित करना
  5. विभिन्न किस्मों के पैरामीटर के प्रभाव का परीक्षण करना और सर्वोत्तम संयोजन खोजने के लिए
  6. मशीन लर्निंग एल्गोरिदम का उपयोग करके स्वचालित रूप से अनुकूलित पैरामीटर ढूंढना

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Fukuiz

strategy(title='Fukuiz Octa-EMA + Ichimoku', shorttitle='Fuku octa strategy', overlay=true, process_orders_on_close=true, 
     default_qty_type= strategy.cash , default_qty_value=1000, currency=currency.USD, initial_capital=10000 ,commission_type = strategy.commission.percent,commission_value=0.25)


//OCTA EMA ##################################################


// Functions
f_emaRibbon(_src, _e1, _e2, _e3, _e4, _e5, _e6, _e7, _e8) =>
    _ema1 = ta.ema(_src, _e1)
    _ema2 = ta.ema(_src, _e2)
    _ema3 = ta.ema(_src, _e3)
    _ema4 = ta.ema(_src, _e4)
    _ema5 = ta.ema(_src, _e5)
    _ema6 = ta.ema(_src, _e6)
    _ema7 = ta.ema(_src, _e7)
    _ema8 = ta.ema(_src, _e8)
    [_ema1, _ema2, _ema3, _ema4, _ema5, _ema6, _ema7, _ema8]

showRibbon = input(true, 'Show Ribbon (EMA)')
ema1Len = input(5, title='EMA 1 Length')
ema2Len = input(11, title='EMA 2 Length')
ema3Len = input(15, title='EMA 3 Length')
ema4Len = input(18, title='EMA 4 Length')
ema5Len = input(21, title='EMA 5 Length')
ema6Len = input(24, title='EMA 6 Length')
ema7Len = input(28, title='EMA 7 Length')
ema8Len = input(34, title='EMA 8 Length')

[ema1, ema2, ema3, ema4, ema5, ema6, ema7, ema8] = f_emaRibbon(close, ema1Len, ema2Len, ema3Len, ema4Len, ema5Len, ema6Len, ema7Len, ema8Len)

//Plot

ribbonDir = ema8 < ema2
p1 = plot(ema1, color=showRibbon ? ribbonDir ? #1573d4 : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 1')
p2 = plot(ema2, color=showRibbon ? ribbonDir ? #3096ff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 2')
plot(ema3, color=showRibbon ? ribbonDir ? #57abff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 3')
plot(ema4, color=showRibbon ? ribbonDir ? #85c2ff : color.new(#5d606b, 15) : na, linewidth=2, title='EMA 4')
plot(ema5, color=showRibbon ? ribbonDir ? #9bcdff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 5')
plot(ema6, color=showRibbon ? ribbonDir ? #b3d9ff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 6')
plot(ema7, color=showRibbon ? ribbonDir ? #c9e5ff : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 7')
p8 = plot(ema8, color=showRibbon ? ribbonDir ? #dfecfb : color.new(#5d606b, 30) : na, linewidth=2, title='EMA 8')
fill(p1, p2, color.new(#1573d4, 85))
fill(p2, p8, color.new(#1573d4, 85))

//ichimoku##################################################

//color
colorblue = #3300CC
colorred = #993300
colorwhite = #FFFFFF
colorgreen = #CCCC33
colorpink = #CC6699
colorpurple = #6633FF

//switch
switch1 = input(false, title='Chikou')
switch2 = input(false, title='Tenkan')
switch3 = input(false, title='Kijun')

middleDonchian(Length) =>
    lower = ta.lowest(Length)
    upper = ta.highest(Length)
    math.avg(upper, lower)

//Functions
conversionPeriods = input.int(9, minval=1)
basePeriods = input.int(26, minval=1)
laggingSpan2Periods = input.int(52, minval=1)
displacement = input.int(26, minval=1)
Tenkan = middleDonchian(conversionPeriods)
Kijun = middleDonchian(basePeriods)
xChikou = close
SenkouA = middleDonchian(laggingSpan2Periods)
SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2

//Plot
A = plot(SenkouA[displacement], color=color.new(colorpurple, 0), title='SenkouA')
B = plot(SenkouB, color=color.new(colorgreen, 0), title='SenkouB')
plot(switch1 ? xChikou : na, color=color.new(colorpink, 0), title='Chikou', offset=-displacement)
plot(switch2 ? Tenkan : na, color=color.new(colorred, 0), title='Tenkan')
plot(switch3 ? Kijun : na, color=color.new(colorblue, 0), title='Kijun')
fill(A, B, color=color.new(colorgreen, 90), title='Ichimoku Cloud')

//Buy and Sell signals
fukuiz = math.avg(ema2, ema8)
white = ema2 > ema8
gray = ema2 < ema8
buycond = white and white[1] == 0
sellcond = gray and gray[1] == 0
bullish = ta.barssince(buycond) < ta.barssince(sellcond)
bearish = ta.barssince(sellcond) < ta.barssince(buycond)
buy = bearish[1] and buycond and fukuiz > SenkouA[displacement] and fukuiz > SenkouB
sell = bullish[1] and sellcond and fukuiz > SenkouA[displacement] and fukuiz > SenkouB
sell2=ema2 < ema8
buy2 = white and fukuiz > SenkouA[displacement] and fukuiz > SenkouB

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//Back test

startYear = input.int(defval=2017, title='Start Year', minval=2000, maxval=3000)
startMonth = input.int(defval=1, title='Start Month', minval=1, maxval=12)
startDay = input.int(defval=1, title='Start Day', minval=1, maxval=31)
endYear = input.int(defval=2023, title='End Year', minval=2000 ,maxval=3000)
endMonth = input.int(defval=12, title='End Month', minval=1, maxval=12)
endDay = input.int(defval=31, title='End Day', minval=1, maxval=31)

start = timestamp(startYear, startMonth, startDay, 00, 00)
end = timestamp(endYear, endMonth, endDay, 23, 59)
period() => time >= start and time <= end ? true : false

if buy2 
    strategy.entry(id='long', direction=strategy.long, when=period(), comment='BUY')

if sell2
    strategy.close(id='long', when=period(), comment='SELL')