MQL5 विजार्ड स्वचालित रूप से एक्सपर्ट एडवाइजर (EA) बनाने की सुविधा देता है (देखें MQL5 विजार्ड: बिना प्रोग्रामिंग के एक्सपर्ट एडवाइजर बनाना).
CSignalCandles क्लास ट्रेड सिग्नल प्रदान करता है, जो रिवर्सल कैंडलस्टिक पैटर्न पर आधारित होते हैं। रणनीति को "रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल" कहा जाता है (जब MQL5 विजार्ड में EA स्वचालित रूप से बनाया जाता है).
इस सिस्टम का उद्देश्य रिवर्सल पैटर्न की पहचान करना है, जो कंबाइंड कैंडल के गणना के माध्यम से किया जाता है। रिवर्सल पैटर्न जापानी कैंडलस्टिक विश्लेषण में "हैमर" और "हैंगिंग मैन" पैटर्न के समान होते हैं। लेकिन यह एकल कैंडल के बजाय कंबाइंड कैंडल का उपयोग करता है और रिवर्सल की पुष्टि के लिए कंबाइंड कैंडल के छोटे शरीर की आवश्यकता नहीं होती।
इनपुट पैरामीटर:
- रेंज - अधिकतम बार की संख्या, जो कंबाइंड कैंडल की गणना में उपयोग की जाती है.
- न्यूनतम - कंबाइंड कैंडल का न्यूनतम आकार (पारंपरिक बिंदुओं में).
- शैडोबिग और शैडो स्मॉल - छायाएँ (कंबाइंड कैंडल यूनिट में).
- लिमिट, स्टॉप लॉस और टेक प्रॉफिट - ओपन प्राइस, SL और TP स्तर, जो कंबाइंड कैंडल के क्लोज प्राइस के सापेक्ष परिभाषित होते हैं (कंबाइंड कैंडल यूनिट में).
- समाप्ति - ऑर्डर समाप्ति समय (बार में), जो पेंडिंग ऑर्डर के साथ ट्रेडिंग में उपयोग किया जाता है (Limit!=0.0).
रिवर्सल कैंडलस्टिक पैटर्न का निर्धारण इस प्रकार किया जाता है।
यह कंबाइंड कैंडल के पैरामीटर की गणना हाल के पूर्ण बार (इंडेक्स 1) से उस बार की संख्या तक करता है, जिसे रेंज इनपुट पैरामीटर द्वारा परिभाषित किया गया है। यदि कंबाइंड कैंडल का आकार न्यूनतम इनपुट पैरामीटर द्वारा निर्दिष्ट मान से बड़ा है, तो यह कंबाइंड कैंडल के शैडोज के विश्लेषण द्वारा रिवर्सल की शर्तों की जांच करता है।
बियर्स की ताकत कंबाइंड कैंडल के ऊपरी शैडो के आकार द्वारा वर्णित की जाती है, जबकि बुल्स की ताकत निचले शैडो के आकार द्वारा वर्णित की जाती है।
- बियरिश ट्रेंड का रिवर्सल (और बुलिश का प्रारंभ) की पुष्टि करने के लिए, निम्नलिखित आवश्यक है: निचले शैडो का आकार (बुल्स की ताकत) शैडोबिग इनपुट पैरामीटर द्वारा निर्दिष्ट मान से बड़ा होना चाहिए। ऊपरी शैडो का आकार (बियर्स की ताकत) शैडो स्मॉल इनपुट पैरामीटर द्वारा निर्दिष्ट मान से कम होना चाहिए।
- बुलिश ट्रेंड का रिवर्सल (और बियरिश का प्रारंभ) की पुष्टि करने के लिए, निम्नलिखित आवश्यक है: ऊपरी शैडो का आकार (बियर्स की ताकत) शैडोबिग इनपुट पैरामीटर द्वारा निर्दिष्ट मान से बड़ा होना चाहिए। निचले शैडो का आकार (बुल्स की ताकत) शैडो स्मॉल इनपुट पैरामीटर द्वारा निर्दिष्ट मान से कम होना चाहिए।
रिवर्सल रणनीति के अलावा, नकारात्मक मान के लिमिट इनपुट पैरामीटर के द्वारा ब्रेकडाउन रणनीतियों का उपयोग करना भी संभव है (देखें MQL5 विजार्ड - दो EMA के क्रॉसओवर पर आधारित ट्रेड सिग्नल).
लिमिट के आधार पर, बाजार में प्रवेश के तीन विभिन्न तरीके उपयोग किए जाते हैं:
- लिमिट>0. यह कीमत में पीछे की गति पर प्रवेश करेगा, जो बाजार मूल्य से बेहतर है (बाय लिमिट या सेल लिमिट पेंडिंग ऑर्डर ट्रेड सिग्नल के अनुसार लगाए जाएंगे)
- लिमिट<0. यह कीमत की गति की दिशा में प्रवेश करेगा (बाय स्टॉप या सेल स्टॉप पेंडिंग ऑर्डर ट्रेड सिग्नल के अनुसार उपयोग किए जाएंगे).
- लिमिट=0. यह बाजार कीमतों का उपयोग करके ट्रेड करेगा.
यह रणनीति CSignalCandles क्लास में लागू की गई है।

चित्र 1. रिवर्सल कैंडलस्टिक पैटर्न पर आधारित ट्रेड सिग्नल
ट्रेड सिग्नल
ट्रेड सिग्नल CSignalCandles क्लास में लागू किए गए हैं, यहाँ एक Candle() फंक्शन है, जिसका उपयोग विश्लेषण के लिए किया जाता है:
int Candle(int ind); // कंबाइंड कैंडल के प्रकार के आधार पर सकारात्मक/नकारात्मक संख्या लौटाता है // लौटाई गई मान वह बार (कैंडल) की संख्या है जो कंबाइंड कैंडल में है (ind से शुरू होकर)
कंबाइंड कैंडल के निर्माण में कई कैंडल (बार) का उपयोग किया जा सकता है। न्यूनतम बार की संख्या रेंज पैरामीटर द्वारा परिभाषित की जाती है। कुछ मामलों में, कंबाइंड कैंडल को रेंज से कम कैंडल के साथ भी बनाया जा सकता है (जब आकार/छायाएँ की शर्तें संतुष्ट होती हैं)। Candle फंक्शन 0 लौटाता है यदि कंबाइंड कैंडल नहीं बन सकता है।
1. लांग पोजीशन खोलना
लांग पोजीशन खोलने के लिए, बुलिश कंबाइंड कैंडल की आवश्यकता होती है। यह फंक्शन इसकी जांच करता है और लौटाता है यदि कंबाइंड कैंडल अभी तक नहीं बना है या कंबाइंड कैंडल बियरिश है। अन्यथा, यह कंबाइंड कैंडल का आकार (कीमत, SL और TP स्तर की गणना के लिए आवश्यक) की गणना करता है और पेंडिंग ऑर्डर के लिए मूल्य स्तर निर्धारित करता है।
ध्यान दें, कि पेंडिंग ऑर्डर का प्रकार (बाय लिमिट या बाय स्टॉप) लिमिट इनपुट पैरामीटर के संकेत पर निर्भर करता है (यदि लिमिट=0 या |कीमत-आस्क|<स्टॉप स्तर, तो यह बाजार खरीद आदेश लगाएगा, यदि लिमिट>0, तो यह बाय लिमिट पेंडिंग ऑर्डर लगाएगा, यदि लिमिट<0, तो बाय स्टॉप पेंडिंग ऑर्डर लगाया जाएगा)।
//+------------------------------------------------------------------+ //| लांग पोजीशन खोलने की शर्तों की जांच करता है (खरीद) | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { //--- बुलिश कंबाइंड कैंडल के निर्माण की जांच करें if(Candle(1)<=0) return(false); //--- कंबाइंड कैंडल का आकार प्राप्त करें double size=m_high_composite-m_low_composite; //--- पेंडिंग ऑर्डर की कीमत की गणना करें price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size); //--- स्टॉप लॉस कीमत की गणना करें sl =m_symbol.NormalizePrice(price-m_stop_loss*size); //--- टेक प्रॉफिट कीमत की गणना करें tp =m_symbol.NormalizePrice(price+m_take_profit*size); //--- ऑर्डर समाप्ति समय निर्धारित करें expiration+=m_expiration*PeriodSeconds(m_period); //--- शर्तें संतुष्ट हैं, सत्य लौटाएं return(true); }
2. लांग पोजीशन बंद करना
यदि बियरिश कंबाइंड कैंडल बन गई है, तो लांग पोजीशन बंद कर दी जाती है।
//+------------------------------------------------------------------+ //| लांग पोजीशन बंद करने की शर्तों की जांच करता है |//+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseLong(double& price) { //--- बियरिश कंबाइंड कैंडल के निर्माण की जांच करें if(Candle(1)>=0) return(false); //--- price=0.0; //--- शर्तें संतुष्ट हैं, सत्य लौटाएं return(true); }
3. शॉर्ट पोजीशन खोलना
शॉर्ट पोजीशन खोलने के लिए, बियरिश कंबाइंड कैंडल का निर्माण होना आवश्यक है। यदि कंबाइंड कैंडल नहीं बना है, या यह बियरिश नहीं है, तो लौटें। अन्यथा, हम इसके आकार का निर्धारण करते हैं और पेंडिंग ऑर्डर के मूल्य स्तर की गणना करते हैं
(ऑर्डर का प्रकार लिमिट इनपुट पैरामीटर के संकेत पर निर्भर करता है, देखें "लांग पोजीशन खोलना").
//+------------------------------------------------------------------+ //| शॉर्ट पोजीशन खोलने की शर्तों की जांच करता है (सेल) | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { //--- बियरिश कंबाइंड कैंडल के निर्माण की जांच करें if(Candle(1)>=0) return(false); //--- कंबाइंड कैंडल का आकार प्राप्त करें double size=m_high_composite-m_low_composite; //--- पेंडिंग ऑर्डर की कीमत की गणना करें price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size); //--- स्टॉप लॉस कीमत की गणना करें sl =m_symbol.NormalizePrice(price+m_stop_loss*size); //--- टेक प्रॉफिट कीमत की गणना करें tp =m_symbol.NormalizePrice(price-m_take_profit*size); //--- ऑर्डर समाप्ति समय निर्धारित करें expiration+=m_expiration*PeriodSeconds(m_period); //--- शर्तें संतुष्ट हैं, सत्य लौटाएं return(true); }
4. शॉर्ट पोजीशन बंद करना
यदि बुलिश कंबाइंड कैंडल बन गई है, तो शॉर्ट पोजीशन बंद कर दी जाती है।
//+------------------------------------------------------------------+ //| शॉर्ट पोजीशन बंद करने की शर्तों की जांच करता है |//+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseShort(double& price) { //--- बुलिश कंबाइंड कैंडल के निर्माण की जांच करें if(Candle(1)<=0) return(false); //--- price=0.0; //--- शर्तें संतुष्ट हैं, सत्य लौटाएं return(true); }
मिलकर एक्सपर्ट एडवाइजर बनाना MQL5 विजार्ड का उपयोग करके
इस रणनीति पर आधारित ट्रेडिंग रोबोट बनाने के लिए आपको MQL5 विजार्ड के "तैयार किए गए एक्सपर्ट एडवाइजर बनाने" विकल्प में "रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल" के रूप में सिग्नल प्रॉपर्टीज का चयन करना होगा:

चित्र 2. MQL5 विजार्ड में रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल का चयन करें
इसके बाद आपको आवश्यक ट्रेलिंग स्टॉप एल्गोरिदम और पैसे और जोखिम प्रबंधन प्रणाली को निर्दिष्ट करना होगा। एक्सपर्ट एडवाइजर का कोड स्वचालित रूप से बनाया जाएगा, आप इसे संकलित कर सकते हैं और स्ट्रेटेजी टेस्टर्स में परीक्षण कर सकते हैं।
परीक्षा परिणाम
आइए एक्सपर्ट एडवाइजर का बैकटेस्टिंग करते हैं, जो ऐतिहासिक डेटा (EURUSD M15, परीक्षण अवधि: 1.1.2010-05.01.2011, रेंज=3, न्यूनतम=50, शैडोबिग=0.5, शैडो स्मॉल=0.2, लिमिट=0, स्टॉप लॉस=2.0, टेक प्रॉफिट=1.0, समाप्ति=4) पर आधारित है।
एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट ट्रेडिंग, 0.1) का उपयोग किया, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया).

चित्र 3. रिवर्सल कैंडलस्टिक पैटर्न पर आधारित ट्रेड सिग्नल के साथ एक्सपर्ट एडवाइजर के परीक्षण परिणाम
संलग्नक: SignalCandles.mqh CSignalCandles क्लास के साथ टर्मिनल डेटा फ़ोल्डर\MQL5\Include\Expert\Signal फ़ोल्डर में रखा जाना चाहिए।
expert_candles.mq5 MQL5 विजार्ड का उपयोग करके बनाए गए एक्सपर्ट एडवाइजर का कोड रखता है।
संबंधित पोस्ट
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल
- MQL5 विज़ार्ड - हैमर/हैंगिंग मैन और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: सुबह/शाम के तारे के आधार पर ट्रेड सिग्नल + CCI के साथ एक्सपर्ट एडवाइजर
- MQL5 विजार्ड - सुबह/शाम के तारे और MFI पर आधारित ट्रेड सिग्नल