सिस्टम ट्रेडिंग

MQL5 विजार्ड: बुलिश हरामी/बियरिश हरामी और RSI पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: बुलिश हरामी/बियरिश हरामी और RSI पर आधारित ट्रेड सिग्नल

MQL5 विजार्ड का उपयोग करके आप तैयार किए गए एक्सपर्ट एडवाइजर्स (EAs) बना सकते हैं। यह आपको MQL5 विजार्ड में दिए गए स्टैंडर्ड लाइब्रेरी क्लासेज का उपयोग करके अपने ट्रेड विचारों की जांच करने की अनुमति देता है। आपको बस अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी है। इसकी संरचना और उदहारण के लिए आप MQL5 विजार्ड: ट्रेडिंग सिग्नल मॉड्यूल कैसे बनाएं लेख देख सकते हैं। इसका सामान्य विचार यह है कि ट्रेडिंग सिग्नल की क्लास CExpertSignal से निकाली जाती है, जिसके बाद आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने खुद के मेथड्स से ओवरराइड करना होगा। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है। हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिनकी पुष्टि स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर से की जाती है। हम यहाँ "बुलिश हरामी" और "बियरिश हरामी" रिवर्सल कैंडलस्टिक पैटर्न पर चर्चा करेंगे, जिन्हें RSI संकेतक द्वारा पुष्टि की गई है। ट्रेड सिग्नल का मॉड्यूल CCandlePattern क्लास पर आधारित है, जो कैंडलस्टिक पैटर्न के साथ ट्रेड सिग्नल बनाने का एक सरल उदाहरण है। 1. "बुलिश हरामी" और "बियरिश हरामी" रिवर्सल कैंडलस्टिक पैटर्न 1.1. बुलिश हरामी बुलिश हरामी पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक होती है, जिसका शरीर बड़ी कैंडलस्टिक के शरीर की ऊंचाई में होता है। यह पैटर्न संकेत देता है कि गिरती प्रवृत्ति (डाउनट्रेंड) उलटने वाली हो सकती है, यह संकेत देता है कि लंबी स्थिति में प्रवेश करने का अच्छा समय है। दूसरी कैंडलस्टिक एक गैप के साथ खुलती है। दूसरी (सफेद) कैंडलस्टिक जितनी छोटी होगी, उलटने की संभावना उतनी ही अधिक होगी। Fig. 2. "बियरिश हरामी" कैंडलस्टिक पैटर्न "बियरिश हरामी" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "बियरिश हरामी" कैंडलस्टिक पैटर्न की पहचान करता है         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- बियरिश हरामी    if((Close(1)<Open(1))              && // अंतिम पूर्ण कैंडल बियरिश है (काली दिन)      ((Close(2)-Open(2))>AvgBody(1))  && // पिछली कैंडल बुलिश है, इसका शरीर औसत से बड़ा है (लंबी सफेद)      ((Close(1)>Open(2))              && // क्लोज प्राइस बियरिश कैंडल के ओपन प्राइस से अधिक है       (Open(1)<Close(2)))             && // ओपन प्राइस बियरिश कैंडल के क्लोज प्राइस से कम है       (MidPoint(2)>CloseAvg(2)))         // अपट्रेंड       return(true); //---    return(false);   }CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) मेथड का उपयोग "बियरिश हरामी" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 2. RSI संकेतक द्वारा पुष्टि किए गए ट्रेड सिग्नल लंबी या शॉर्ट स्थिति खोलने के लिए ट्रेडिंग सिग्नल को RSI संकेतक द्वारा पुष्टि की जानी चाहिए। RSI का मान निर्णायक स्तरों (लंबी स्थिति के लिए 40 और शॉर्ट स्थिति के लिए 60) से कम/ज्यादा होना चाहिए। खुले हुए स्थिति को बंद करना RSI के मानों पर निर्भर करता है। यह दो मामलों में किया जा सकता है: यदि RSI विपरीत निर्णायक स्तर (लंबी स्थिति के लिए 70 और शॉर्ट स्थिति के लिए 30) तक पहुँच गया है। यदि उलटने का सिग्नल पुष्टि नहीं किया गया है (जब RSI निम्नलिखित स्तरों तक पहुँचता है: लंबी स्थिति के लिए 30 और शॉर्ट स्थिति के लिए 70)।

2011.03.17
Bullish और Bearish Harami के आधार पर ट्रेड सिग्नल - MQL5 Wizard के साथ व्यापार शुरू करें
MetaTrader5
Bullish और Bearish Harami के आधार पर ट्रेड सिग्नल - MQL5 Wizard के साथ व्यापार शुरू करें

MQL5 Wizard एक अद्भुत टूल है, जो आपको Expert Advisors बनाने की अनुमति देता है। इस टूल की मदद से आप अपने ट्रेड आइडियाज को जल्दी से चेक कर सकते हैं। आपको बस अपने ट्रेडिंग सिग्नल्स क्लास को बनाना है। इस क्लास की संरचना और उदाहरण के लिए आप पढ़ सकते हैं MQL5 Wizard: ट्रेडिंग सिग्नल्स का मॉड्यूल कैसे बनाएं। इसका मूल विचार यह है कि ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से ली जाती है। इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने खुद के मेथड्स से ओवरराइड करना होगा। एक किताब है "सर्वश्रेष्ठ व्यापारियों की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है। हम यहाँ उलटने वाले कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिन्हें Stochastic, CCI, MFI, और RSI ओस्सीलेटर द्वारा पुष्टि की गई है। सर्वश्रेष्ठ तरीका यह है कि आप कैंडलस्टिक पैटर्न के निर्माण की जांच के लिए CExpertSignal से ली गई अलग क्लास बनाएं। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, आपको CCandlePattern से ली गई क्लास लिखनी होगी और उसमें आवश्यक फीचर्स जोड़ने होंगे (उदाहरण के लिए, ओस्सीलेटर द्वारा पुष्टि)। यहाँ हम "Bullish Harami" और "Bearish Harami" उलटने वाले कैंडलस्टिक पैटर्न पर विचार करेंगे, जिसे Market Facilitation Index (MFI) संकेतक द्वारा पुष्टि की गई है। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है, यह कैंडलस्टिक पैटर्न के साथ ट्रेड सिग्नल्स बनाने का सरल उदाहरण है। 1. "Bullish Harami" और "Bearish Harami" उलटने वाले कैंडलस्टिक पैटर्न 1.1. Bullish Harami Bullish Harami रिवर्सल पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक होती है, जिसका शरीर बड़ी कैंडलस्टिक के शरीर की ऊर्ध्वाधर सीमा के भीतर होता है। यह पैटर्न संकेत करता है कि गिरती प्रवृत्ति (डाउनट्रेंड) उलट सकती है, यह एक लंबी स्थिति में प्रवेश करने का अच्छा समय है। दूसरी कैंडलस्टिक एक गैप अप के साथ खुलती है। जितनी छोटी दूसरी (सफेद) कैंडलस्टिक होगी, उलटने की संभावना उतनी ही अधिक होगी। Fig. 1. Bullish Harami candlestick pattern "Bullish Harami" पैटर्न की पहचान CheckPatternBullishHarami() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "Bullish Harami" कैंडलस्टिक पैटर्न की पहचान करता है         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // अंतिम पूर्ण बार बुलिश है (सफेद दिन)      ((Open(2)-Close(2))>AvgBody(1))  && // पिछली कैंडलस्टिक बेरिश है, इसका शरीर औसत से बड़ा है (लंबी काली)      ((Close(1)<Open(2))              && // बुलिश कैंडल का क्लोज़ प्राइस बेरिश कैंडल के ओपन प्राइस से कम है       (Open(1)>Close(2)))             && // बुलिश कैंडल का ओपन प्राइस बेरिश कैंडल के क्लोज़ प्राइस से ज्यादा है       (MidPoint(2)<CloseAvg(2)))         // डाउनट्रेंड       return(true); //---    return(false);   } "CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)" मेथड का उपयोग "Bullish Harami" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है। 1.2. Bearish Harami Bearish Harami रिवर्सल पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक होती है, जिसका शरीर बड़ी कैंडलस्टिक के शरीर की ऊर्ध्वाधर सीमा के भीतर होता है। यह पैटर्न संकेत करता है कि बढ़ती प्रवृत्ति (अपट्रेंड) उलट सकती है, यह एक छोटी स्थिति में प्रवेश करने का अच्छा समय है। दूसरी कैंडलस्टिक एक गैप डाउन के साथ खुलती है। जितनी छोटी दूसरी (काली) कैंडलस्टिक होगी, उलटने की संभावना उतनी ही अधिक होगी। Fig. 2. Bearish Harami candlestick pattern "Bearish Harami" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "Bearish Harami" कैंडलस्टिक पैटर्न की पहचान करता है         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // अंतिम पूर्ण बार बेरिश है (काली दिन)      ((Close(2)-Open(2))>AvgBody(1))  && // पिछली कैंडलस्टिक बुलिश है, इसका शरीर औसत से बड़ा है (लंबी सफेद)      ((Close(1)>Open(2))              && // क्लोज़ प्राइस की बेरिश कैंडल बुलिश कैंडल के ओपन प्राइस से ज्यादा है       (Open(1)<Close(2)))             && // ओपन प्राइस की बेरिश कैंडल बुलिश कैंडल के क्लोज़ प्राइस से कम है       (MidPoint(2)>CloseAvg(2)))         // अपट्रेंड       return(true); //---    return(false);   } "CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)" मेथड का उपयोग "Bearish Harami" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है। 2. MFI संकेतक द्वारा पुष्टि किए गए ट्रेड सिग्नल्स लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल्स को MFI संकेतक द्वारा पुष्टि की जानी चाहिए। MFI संकेतक का मान 40 से कम (लंबी स्थितियों के लिए) या 60 से अधिक (छोटी स्थितियों के लिए) होना चाहिए। खुली स्थिति का समापन MFI संकेतक के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है: यदि MFI ने विपरीत महत्वपूर्ण स्तर (70 लंबी स्थिति के लिए और 30 छोटी स्थिति के लिए) को पार कर लिया है यदि उल्टा सिग्नल पुष्टि नहीं हो रहा है (जब MFI संकेतक निम्नलिखित स्तरों पर पहुंचता है: 30 लंबी स्थिति के लिए और 70 छोटी स्थिति के लिए) Fig. 3. Bullish Harami pattern, confirmed by MFI indicator int CBH_BH_MFI::LongCondition() - लंबी स्थिति खोलने की शर्तों की जांच करता है (80 लौटाता है) और छोटी स्थिति बंद करता है (40 लौटाता है); int CBH_BH_MFI::ShortCondition() - छोटी स्थिति खोलने की शर्तों की जांच करता है (80 लौटाता है) और लंबी स्थिति बंद करता है (40 लौटाता है). 2.1. लंबी स्थिति खोलना/छोटी स्थिति बंद करना "Bullish Harami" पैटर्न की पहचान MFI संकेतक द्वारा की जानी चाहिए: MFi(1)<40 (अंतिम पूर्ण बार का MFI संकेतक का मान 40 से कम होना चाहिए). छोटी स्थिति बंद की जानी चाहिए यदि MFI संकेतक ने महत्वपूर्ण स्तरों (70 या 30) को ऊपर की ओर पार किया है। //+------------------------------------------------------------------+ //| एंट्री और एक्सिट की शर्तों की जांच करता है                 | //| 1) मार्केट एंट्री (लंबी स्थिति खोलें, परिणाम=80)                  | //| 2) मार्केट एक्सिट (छोटी स्थिति बंद करें, परिणाम=40)                 | //+------------------------------------------------------------------+ int CBH_BH_MFI::LongCondition()   {    int result=0; //--- idx का उपयोग विशेषज्ञ सलाहकार कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड शर्तों की जांच करता है   int idx   =StartIndex(); //--- लंबी स्थिति खोलने की शर्तों की जांच //--- Bullish Harami पैटर्न और MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (MFI(1)<40))      result=80; //--- छोटी स्थिति बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवर्सोल्ड स्तरों के सिग्नल लाइन क्रॉसओवर (ऊपर 30, ऊपर 70)   if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))      result=40; //--- परिणाम लौटाएं    return(result);   } 2.2. छोटी स्थिति खोलना/लंबी स्थिति बंद करना "Bearish Harami" पैटर्न की पहचान MFI संकेतक द्वारा की जानी चाहिए: MFI(1)>60 (अंतिम पूर्ण बार का MFI संकेतक का मान 60 से अधिक होना चाहिए). लंबी स्थिति बंद की जानी चाहिए यदि MFI संकेतक ने महत्वपूर्ण स्तरों (70 या 30) को ऊपर की ओर पार किया है। //+------------------------------------------------------------------+ //| एंट्री और एक्सिट की शर्तों की जांच करता है                 | //| 1) मार्केट एंट्री (छोटी स्थिति खोलें, परिणाम=80)                   | //| 2) मार्केट एक्सिट (लंबी स्थिति बंद करें, परिणाम=40)                  | //+------------------------------------------------------------------+ int CBH_BH_MFI::ShortCondition()   {    int result=0; //--- idx का उपयोग विशेषज्ञ सलाहकार कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड शर्तों की जांच करता है   int idx   =StartIndex(); //--- छोटी स्थिति खोलने की शर्तों की जांच //--- Bearish Harami पैटर्न और MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (MFI(1)>60))      result=80; //--- लंबी स्थिति बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवर्सोल्ड स्तरों के सिग्नल लाइन क्रॉसओवर (ऊपर 70, नीचे 30)    if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))      result=40; //--- परिणाम लौटाएं    return(result);   } 2.3. MQL5 Wizard का उपयोग करके Expert Advisor बनाना CBH_BH_MFI क्लास स्टैण्डर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसका उपयोग करने के लिए, आपको abh_bh_mfi.mqh फ़ाइल डाउनलोड करनी पड़ेगी (संलग्नक देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। आपको acandlepatterns.mqh फ़ाइल के साथ भी यही करना होगा। आप इसे MQL5 Wizard में MetaEditor को पुनः प्रारंभ करने के बाद उपयोग कर सकते हैं। Expert Advisor बनाने के लिए MQL5 Wizard लॉन्च करें: Fig. 4. Creating Expert Advisor using MQL5 Wizard Expert Advisor का नाम निर्धारित करें: Fig. 5. General properties of the Expert Advisor इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल्स के मॉड्यूल का चयन करना होगा। Fig. 6. Signal properties of the Expert Advisor हमारे मामले में हम केवल एक ट्रेड सिग्नल्स के मॉड्यूल का उपयोग कर रहे हैं। "Bullish Harami/Bearish Harami द्वारा पुष्टि किए गए सिग्नल" ट्रेडिंग सिग्नल्स के मॉड्यूल को जोड़ना: Fig. 7. Signal properties of the Expert Advisor ट्रेड सिग्नल्स का मॉड्यूल जोड़ा गया: Fig. 8. Signal properties of the Expert Advisor आप किसी भी ट्रेलिंग प्रॉपर्टीज का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे: Fig. 9. Trailing properties of the Expert Advisor पैसों के प्रबंधन की प्रॉपर्टीज के संबंध में, हम "स्थिर व्यापार मात्रा के साथ व्यापार" का उपयोग करेंगे: Fig. 10. Money management properties of the Expert Advisor "Finish" बटन दबाकर, हम उत्पन्न Expert Advisor का कोड प्राप्त करेंगे, जो Expert_ABH_BH_MFI.mq5 में स्थित होगा, इसे terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। उत्पन्न Expert Advisor के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int            Signal_ThresholdOpen   =10;     // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int            Signal_ThresholdClose  =10;     // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double         Signal_PriceLevel      =0.0;    // डील निष्पादित करने के लिए प्राइस लेवल input double         Signal_StopLevel       =50.0;   // स्टॉप लॉस स्तर (पॉइंट्स में) input double         Signal_TakeLevel       =50.0   // टेक प्रॉफिट स्तर (पॉइंट्स में) इसे बदलकर: //--- मुख्य सिग्नल के लिए इनपुट input int            Signal_ThresholdOpen   =40;     // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int            Signal_ThresholdClose  =20;     // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double         Signal_PriceLevel      =0.0;    // डील निष्पादित करने के लिए प्राइस लेवल input double         Signal_StopLevel       =0.0    // स्टॉप लॉस स्तर (पॉइंट्स में) input double         Signal_TakeLevel       =0.0    // टेक प्रॉफिट स्तर (पॉइंट्स में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको खुलने और बंद होने की स्थिति के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशोल्ड के निश्चित मान निर्दिष्ट किए हैं: स्थिति खोलें: 80; स्थिति बंद करें: 40. MQL5 Wizard द्वारा उत्पन्न Expert Advisor ट्रेड सिग्नल्स के मॉड्यूल से "वोट" का उपयोग करके स्थिति खोलता और बंद करता है। मुख्य मॉड्यूल का वोट भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट के परिणाम "वोट्स" औसत में भी उपयोग किए जाते हैं। हमारे मामले में, हमें मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल मिला है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस कारण से ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट हैं, इसका मतलब है कि स्थिति केवल तभी बंद की जाएगी जब बंद होने की शर्तें सत्य हों। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए Expert Advisor के ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=11) पर बैकटेस्टिंग पर विचार करें। Expert Advisor बनाने में हमने स्थिर मात्रा का उपयोग किया (Trading Fixed Lot, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं). Fig. 11. Testing results of the Expert Advisor, based on Bullish Harami /Bearish Harami + MFI इनपुट पैरामीटर का सबसे अच्छा सेट Strategy Tester का उपयोग करके खोजा जा सकता है, जो MetaTrader 5 क्लाइंट टर्मिनल का हिस्सा है। MQL5 Wizard द्वारा बनाए गए Expert Advisor का कोड expert_abh_bh_mfi.mq5 में संलग्न है।

2011.03.17
MQL5 विजार्ड: बुलिश हारामी/बेयरिश हारामी + CCI पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: बुलिश हारामी/बेयरिश हारामी + CCI पर आधारित ट्रेड सिग्नल

मेटाट्रेडर 5 के लिए MQL5 विजार्ड आपको तैयार-निर्मित एक्सपर्ट एडवाइजर्स बनाने की सुविधा देता है। ये एडवाइजर्स स्टैंडर्ड लाइब्रेरी क्लासेस पर आधारित होते हैं, जो क्लाइंट टर्मिनल के साथ आते हैं (विस्तार के लिए MQL5 विजार्ड में तैयार-निर्मित एक्सपर्ट एडवाइजर्स बनाना देखें)। यह आपके ट्रेड आईडियाज को जल्दी चेक करने की सुविधा देता है, आपको बस अपनी खुद की ट्रेड सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण आप MQL5 विजार्ड: ट्रेडिंग सिग्नल का मॉड्यूल कैसे बनाएं लेख में देख सकते हैं। बुनियादी विचार यह है: ट्रेडिंग सिग्नल की क्लास CExpertSignal से निकाली जाती है, उसके बाद आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने तरीकों से ओवरराइड करना होता है। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियां" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियों का उल्लेख किया गया है, हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिसे स्टोकास्टिक, CCI, MFI, और RSI ऑस्सीलेटर द्वारा पुष्टि की जाती है। सबसे अच्छा तरीका यह है कि एक अलग क्लास बनाई जाए, जो CExpertSignal से निकाली गई हो, ताकि कैंडलस्टिक पैटर्न के निर्माण की जांच की जा सके। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल की पुष्टि के लिए, CCandlePattern से निकली क्लास लिखना पर्याप्त है और आवश्यक विशेषताएँ (जैसे ऑस्सीलेटर द्वारा पुष्टि) जोड़ें। 1. "बुलिश हारामी" और "बेयरिश हारामी" रिवर्सल कैंडलस्टिक पैटर्न 1.1. बुलिश हारामी बुलिश हारामी रिवर्सल पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक आती है, जिसका शरीर बड़ी कैंडल के शरीर के ऊर्ध्वाधर क्षेत्र के भीतर होता है। यह पैटर्न संकेत करता है कि गिरता ट्रेंड (डाउनट्रेंड) पलट सकता है, यह लंबे पद में प्रवेश करने का अच्छा समय बताता है। दूसरी कैंडलस्टिक एक गैप अप के साथ खुलती है। दूसरी (सफेद) कैंडलस्टिक जितनी छोटी होगी, पलटने की संभावना उतनी ही अधिक होगी। चित्र 1. "बुलिश हारामी" कैंडलस्टिक पैटर्न "बुलिश हारामी" पैटर्न की पहचान CheckPatternBullishHarami() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "बुलिश हारामी" कैंडलस्टिक पैटर्न की जांच करता है         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- बुलिश हारामी    if((Close(1)>Open(1))              && // अंतिम पूर्ण बार बुलिश है (सफेद दिन)      ((Open(2)-Close(2)>AvgBody(1))  && // पिछली कैंडल bearish है, उसका शरीर औसत से बड़ा है (लंबा काला)      ((Close(1)<Open(2))              && // बुलिश कैंडल का क्लोज प्राइस बेयरिश कैंडल के ओपन प्राइस से कम है       (Open(1)>Close(2)))             && // बुलिश कैंडल का ओपन प्राइस बेयरिश कैंडल के क्लोज प्राइस से ज्यादा है       (MidPoint(2)<CloseAvg(2)))         // डाउन ट्रेंड       return(true); //---    return(false);   } "बुलिश हारामी" कैंडलस्टिक पैटर्न की पहचान करने के लिए CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) मेथड का उपयोग किया जाता है। 1.2. बेयरिश हारामी बेयरिश हारामी रिवर्सल पैटर्न तब बनता है जब एक बड़ी कैंडलस्टिक के बाद एक छोटी कैंडलस्टिक आती है, जिसका शरीर बड़ी कैंडल के शरीर के ऊर्ध्वाधर क्षेत्र के भीतर होता है। यह पैटर्न संकेत करता है कि बढ़ता ट्रेंड (अपट्रेंड) पलट सकता है, यह छोटे पद में प्रवेश करने का अच्छा समय बताता है। दूसरी कैंडलस्टिक एक गैप डाउन के साथ खुलती है। दूसरी (काली) कैंडलस्टिक जितनी छोटी होगी, पलटने की संभावना उतनी ही अधिक होगी। चित्र 2. "बेयरिश हारामी" कैंडलस्टिक पैटर्न "बेयरिश हारामी" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "बेयरिश हारामी" कैंडलस्टिक पैटर्न की जांच करता है         | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- बेयरिश हारामी    if((Close(1)<Open(1))              && // अंतिम पूर्ण बार बेयरिश है (काला दिन)      ((Close(2)-Open(2)>AvgBody(1))  && // पिछली कैंडल बुलिश है, उसका शरीर औसत से बड़ा है (लंबा सफेद)      ((Close(1)>Open(2))              && // क्लोज प्राइस बेयरिश कैंडल के ओपन प्राइस से ज्यादा है       (Open(1)<Close(2)))             && // ओपन प्राइस बेयरिश कैंडल के क्लोज प्राइस से कम है       (MidPoint(2)>CloseAvg(2)))         // अपट्रेंड       return(true); //---    return(false);   } "बेयरिश हारामी" कैंडलस्टिक पैटर्न की पहचान करने के लिए CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) मेथड का उपयोग किया जाता है। 2. CCI इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लंबी स्थिति के लिए और 50 छोटी स्थिति के लिए) से अधिक/कम होना चाहिए। खुले हुए पद का समापन CCI के मानों पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है: यदि CCI की रेखा विपरीत महत्वपूर्ण स्तर (80 लंबी स्थिति के लिए और -80 छोटी स्थिति के लिए) तक पहुँच गई है। यदि विपरीत सिग्नल की पुष्टि नहीं होती है (जब CCI निम्नलिखित स्तरों तक पहुँचता है: -80 लंबी स्थिति के लिए और 80 छोटी स्थिति के लिए)। चित्र 3. "बुलिश हारामी" पैटर्न, CCI इंडिकेटर द्वारा पुष्टि की गई int CBH_BH_CCI::LongCondition() - लंबी स्थिति खोलने की स्थितियों की जांच करता है (80 लौटाता है) और छोटी स्थिति को बंद करता है (40 लौटाता है); int CBH_BH_CCI::ShortCondition() - छोटी स्थिति खोलने की स्थितियों की जांच करता है (80 लौटाता है) और लंबी स्थिति को बंद करता है (40 लौटाता है). 2.1. लंबी स्थिति खोलें/छोटी स्थिति बंद करें "बुलिश हारामी" पैटर्न की पुष्टि CCI इंडिकेटर द्वारा की जानी चाहिए: CCI(1)<-50 (अंतिम पूर्ण बार का CCI मान -50 से कम होना चाहिए)। छोटी स्थिति को बंद किया जाना चाहिए यदि CCI इंडिकेटर ने महत्वपूर्ण स्तर -80 को ऊपर की ओर पार किया है या महत्वपूर्ण स्तर 80 को नीचे की ओर पार किया है। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की स्थितियों की जांच करता है                 | //| 1) मार्केट में प्रवेश (लंबी स्थिति खोलें, परिणाम=80)                  | //| 2) मार्केट से निकासी (छोटी स्थिति बंद करें, परिणाम=40)                 | //+------------------------------------------------------------------+ int CBH_BH_CCI::LongCondition()   {    int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड स्थितियों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड स्थितियों की जांच करता है    int idx   =StartIndex(); //--- लंबी स्थिति खोलने की स्थितियों की जांच //--- बुलिश हारामी पैटर्न और CCI<-50 का निर्माण    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))      result=80; //--- छोटी स्थिति बंद करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (नीचे -80, नीचे -80) का सिग्नल लाइन क्रॉसओवर    if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))      result=40; //--- परिणाम लौटाएं    return(result);   } 2.2. छोटी स्थिति खोलें/लंबी स्थिति बंद करें "बेयरिश हारामी" पैटर्न की पुष्टि CCI इंडिकेटर द्वारा की जानी चाहिए: CCI(1)>50 (अंतिम पूर्ण बार का CCI मान 50 से ज्यादा होना चाहिए)। लंबी स्थिति को बंद करना चाहिए यदि CCI इंडिकेटर ने -80 या 80 स्तरों को नीचे की ओर पार किया है। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की स्थितियों की जांच करता है                 | //| 1) मार्केट में प्रवेश (छोटी स्थिति खोलें, परिणाम=80)                 | //| 2) मार्केट से निकासी (लंबी स्थिति बंद करें, परिणाम=40)                  | //+------------------------------------------------------------------+ int CBH_BH_CCI::ShortCondition()   {    int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड स्थितियों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड स्थितियों की जांच करता है    int idx   =StartIndex(); //--- छोटी स्थिति खोलने की स्थितियों की जांच //--- बेयरिश हारामी पैटर्न और CCI>50 का निर्माण    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))      result=80; //--- लंबी स्थिति बंद करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (नीचे -80, नीचे 80) का सिग्नल लाइन क्रॉसओवर    if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))      result=40; //--- परिणाम लौटाएं    return(result);   } 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CBH_BH_CCI क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए, acbh_bh_cci.mqh फ़ाइल को डाउनलोड करना आवश्यक है (संलग्नकों में देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। उसी तरह candlepatterns.mqh फ़ाइल के साथ भी करना होगा। आप इसे MQL5 विजार्ड में मेटा एडिटर को पुनः आरंभ करने के बाद उपयोग कर सकते हैं। एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें: चित्र 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: चित्र 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएं इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल के मॉड्यूल का चयन करना होगा। चित्र 6. एक्सपर्ट एडवाइजर के सिग्नल गुण हमारे मामले में हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग कर रहे हैं। "बुलिश हारामी/बेयरिश हारामी द्वारा पुष्टि किए गए सिग्नल" ट्रेड सिग्नल का मॉड्यूल जोड़ना: चित्र 7. एक्सपर्ट एडवाइजर के सिग्नल गुण ट्रेड सिग्नल का मॉड्यूल जोड़ा गया है: चित्र 8. एक्सपर्ट एडवाइजर के सिग्नल गुण आप किसी भी ट्रेलिंग गुणों का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का उपयोग करेंगे: चित्र 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुण पैसे प्रबंधन के गुणों के बारे में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: चित्र 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण "फिनिश" बटन पर क्लिक करके, हमें उत्पन्न एक्सपर्ट एडवाइजर का कोड प्राप्त होगा, जो Expert_ABH_BH_CCI.mq5 में स्थित होगा, इसे terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। उत्पन्न एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट्स input int            Signal_ThresholdOpen   =10;     // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int            Signal_ThresholdClose  =10;     // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double         Signal_PriceLevel      =0.0;    व्यापार निष्पादित करने के लिए मूल्य स्तर input double         Signal_StopLevel       =50.0;   स्टॉप लॉस स्तर (पॉइंट में) input double         Signal_TakeLevel       =50.0;  टेक प्रॉफिट स्तर (पॉइंट में) इसे बदलना चाहिए: //--- मुख्य सिग्नल के लिए इनपुट्स input int            Signal_ThresholdOpen   =40;     // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int            Signal_ThresholdClose  =20;     // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double         Signal_PriceLevel      =0.0;    व्यापार निष्पादित करने के लिए मूल्य स्तर input double         Signal_StopLevel       =0.0    // स्टॉप लॉस स्तर (पॉइंट में) input double         Signal_TakeLevel       =0.0    // टेक प्रॉफिट स्तर (पॉइंट में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको खोले गए और बंद किए गए पदों के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स की कोड में हमने थ्रेशोल्ड के निश्चित मान निर्दिष्ट किए हैं: पद खोलना: 80; पद बंद करना: 40; MQL5 विजार्ड द्वारा उत्पन्न एक्सपर्ट एडवाइजर "वोट्स" का उपयोग करके पद खोलता और बंद करता है। ट्रेड सिग्नल के मॉड्यूल से वोट का मुख्य मॉड्यूल (जिसमें सभी जोड़े गए मॉड्यूल होते हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट के परिणाम भी "वोट्स" के औसत में उपयोग किए जाते हैं। हमारे मामले में हमारे पास: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल का मॉड्यूल है, इसलिए हमें थ्रेशोल्ड के मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस तथ्य के कारण ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट किए गए हैं, इसका मतलब है कि पदों का समापन केवल तब किया जाएगा जब समापन की स्थितियाँ सही हों। 2.4. ऐतिहासिक बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर का बैकटेस्टिंग ऐतिहासिक डेटा पर करें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5)। एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया). चित्र 11. एक्सपर्ट एडवाइजर के परीक्षण परिणाम, बुलिश हारामी/बेयरिश हारामी + CCI पर आधारित सबसे अच्छे इनपुट पैरामीटर का सेट स्ट्रैटेजी टेस्ट के माध्यम से पाया जा सकता है, जो मेटाट्रेडर 5 क्लाइंट टर्मिनल का हिस्सा है। MQL5 विजार्ड द्वारा बनाई गई एक्सपर्ट एडवाइजर का कोड expert_abh_bh_cci.mq5 में संलग्न है।

2011.03.17
MQL5 विजार्ड: बुलिश हरामी/बियरिश हरामी पर आधारित ट्रेड सिग्नल + स्टोकास्टिक के साथ एक्सपर्ट एडवाइजर
MetaTrader5
MQL5 विजार्ड: बुलिश हरामी/बियरिश हरामी पर आधारित ट्रेड सिग्नल + स्टोकास्टिक के साथ एक्सपर्ट एडवाइजर

MQL5 विजार्ड आपको तैयार किए गए एक्सपर्ट एडवाइजर्स बनाने की अनुमति देता है, जो स्टैंडर्ड लाइब्रेरी क्लासेस पर आधारित होते हैं, जो क्लाइंट टर्मिनल के साथ आते हैं (विस्तार के लिए MQL5 विजार्ड में तैयार किए गए एक्सपर्ट एडवाइजर्स बनाना देखें)। यह आपको अपने ट्रेड आइडियाज को जल्दी चेक करने की अनुमति देता है, बस आपको अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण MQL5 विजार्ड: ट्रेडिंग सिग्नल का मॉड्यूल कैसे बनाएं में मिल सकता है। सामान्य विचार यह है: ट्रेडिंग सिग्नल क्लास CExpertSignal से व्युत्पन्न होती है, फिर, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपनी खुद की मेथड्स से ओवरराइड करना होता है। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है, हम रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटरों से पुष्टि की गई है। सर्वश्रेष्ठ तरीका यह है कि एक अलग क्लास बनाएं, जो CExpertSignal से व्युत्पन्न हो, कैंडलस्टिक पैटर्न्स की फॉर्मेशन की जांच के लिए। कैंडलस्टिक पैटर्न्स द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, केवल CCandlePattern से व्युत्पन्न क्लास लिखना आवश्यक है और वहां आवश्यक फीचर्स (जैसे, ऑस्सीलेटर द्वारा पुष्टि) जोड़ना है। यहां हम "बुलिश हरामी/बियरिश हरामी" रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल्स पर विचार करेंगे, जो स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गई है। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है, यह कैंडलस्टिक पैटर्न्स के साथ ट्रेड सिग्नल्स बनाने का एक सरल उदाहरण है। 1. "बुलिश हरामी" और "बियरिश हरामी" रिवर्सल कैंडलस्टिक पैटर्न्स 1.1. बुलिश हरामी बुलिश हरामी रिवर्सल पैटर्न उस डाउनवर्ड ट्रेंड में बनता है जब एक बड़ा कैंडलस्टिक छोटे कैंडलस्टिक के बाद आता है, जिसका शरीर बड़े शरीर की वर्टिकल रेंज के भीतर स्थित होता है। यह पैटर्न संकेत करता है कि गिरता हुआ ट्रेंड (डाउनट्रेंड) बदल सकता है, यह बताता है कि लंबी स्थिति में प्रवेश करने का अच्छा समय है। दूसरा कैंडलस्टिक एक गैप अप के साथ खुलता है। दूसरे (सफेद) कैंडलस्टिक का छोटा होना, रिवर्सल की संभावना को अधिक करता है। Fig. 1. 'बुलिश हरामी' कैंडलस्टिक पैटर्न "बुलिश हरामी" पैटर्न की पहचान CheckPatternBullishHarami() मेथड में की गई है, जो CCandlePattern क्लास का हिस्सा है: //+------------------------------------------------------------------+ //| Checks formation of "बुलिश हरामी" candlestick pattern   | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // the last completed bar is bullish (white day)      ((Open(2)-Close(2))>AvgBody(1))  && // the previous candle is bearish, its body is greater than average (long black)      ((Close(1)<Open(2))              && // close price of the bullish candle is lower than open price of the bearish candle       (Open(1)>Close(2)))             && // open price of the bullish candle is higher than close price of the bearish candle       (MidPoint(2)<CloseAvg(2)))         // down trend       return(true); //---    return(false);   } "CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI)" मेथड का उपयोग "बुलिश हरामी" कैंडलस्टिक पैटर्न की फॉर्मेशन की जांच करने के लिए किया जाता है। 1.2. बियरिश हरामी बियरिश हरामी रिवर्सल पैटर्न उस अपवर्ड ट्रेंड में बनता है जब एक बड़ा कैंडलस्टिक छोटे कैंडलस्टिक के बाद आता है, जिसका शरीर बड़े शरीर की वर्टिकल रेंज के भीतर स्थित होता है। यह पैटर्न संकेत करता है कि बढ़ता हुआ ट्रेंड (अपट्रेंड) बदल सकता है, यह बताता है कि यह शॉर्ट पोजीशन में प्रवेश करने का अच्छा समय है। दूसरा कैंडलस्टिक एक गैप डाउन के साथ खुलता है। दूसरे (काले) कैंडलस्टिक का छोटा होना, रिवर्सल की संभावना को अधिक करता है। Fig. 2. 'बियरिश हरामी' कैंडलस्टिक पैटर्न "बियरिश हरामी" पैटर्न की पहचान CheckPatternBearishHarami() मेथड में की गई है, जो CCandlePattern क्लास का हिस्सा है: //+------------------------------------------------------------------+ //| Checks formation of "बियरिश हरामी" candlestick pattern   | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // last completed bar is bearish (black day)      ((Close(2)-Open(2))>AvgBody(1))  && // the previous candle is bullish, its body is greater than average (long white)      ((Close(1)>Open(2))              && // close price of the bearish candle is higher than open price of the bullish candle      (Open(1)<Close(2)))             && // open price of the bearish candle is lower than close price of the bullish candle       (MidPoint(2)>CloseAvg(2)))         // up trend       return(true); //---    return(false);   } "CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI)" मेथड का उपयोग "बियरिश हरामी" कैंडलस्टिक पैटर्न की फॉर्मेशन की जांच करने के लिए किया जाता है। 2. स्टोकास्टिक इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल्स लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल्स को स्टोकास्टिक ऑस्सीलेटर द्वारा पुष्टि की जानी चाहिए। %D लाइन को संबंधित क्रिटिकल लेवल (30 या 70) से अधिक/कम होना चाहिए। खुली स्थिति का समापन %D इंडिकेटर के मानों पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है: यदि %D लाइन विपरीत क्रिटिकल लेवल (लंबी स्थिति के लिए 80 और छोटी स्थिति के लिए 20) तक पहुंच गई है। यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब %D लाइन निम्नलिखित स्तरों तक पहुंचती है: लंबी स्थिति के लिए 20 और छोटी स्थिति के लिए 80)। Figure 3. 'बियरिश हरामी' कैंडलस्टिक पैटर्न, स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गईमार्केट में प्रवेश और निकासी के लिए ट्रेड कंडीशन्स की जांच दो मेथड्स में की गई है: int CBH_BH_Stoch::LongCondition() - लंबी स्थिति खोलने के लिए कंडीशन्स की जांच करता है (80 लौटाता है) और छोटी स्थिति को बंद करता है (40 लौटाता है); int CBH_BH_Stoch::ShortCondition() - छोटी स्थिति खोलने के लिए कंडीशन्स की जांच करता है (80 लौटाता है) और लंबी स्थिति को बंद करता है (40 लौटाता है). 2.1. लंबी स्थिति खोलें/छोटी स्थिति बंद करें "बुलिश हरामी" पैटर्न की फॉर्मेशन को स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की जानी चाहिए: StochSignal(1)<30 (स्टोकास्टिक इंडिकेटर की अंतिम पूर्ण बार की सिग्नल लाइन का मान 30 से कम होना चाहिए)। छोटी स्थिति को बंद किया जाना चाहिए यदि स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 20 या 80 स्तरों को ऊपर की ओर पार कर गई है। //+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market                   | //| 1) Market entry (open long position, result=80)            | //| 2) Market exit (close short position, result=40)          | //+------------------------------------------------------------------+ int CBH_BH_Stoch::LongCondition()   {    int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade condition only at news bars    int idx   =StartIndex(); //--- checking of conditions to open long position //--- formation of Bullish Harami pattern and signal line<30   if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30))      result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (downward 20, upward 80)    if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||        ((StochSignal(1)>80) && (StochSignal(2)<80))))      result=40; //--- return result    return(result);   } 2.2. छोटी स्थिति खोलें/लंबी स्थिति बंद करें "बियरिश हरामी" पैटर्न की फॉर्मेशन को स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की जानी चाहिए: StochSignal(1)>70 (स्टोकास्टिक इंडिकेटर की अंतिम पूर्ण बार की सिग्नल लाइन का मान 70 से अधिक होना चाहिए)। लंबी स्थिति को बंद किया जाना चाहिए यदि स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 80 या 20 स्तरों को नीचे की ओर पार कर गई है। //+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market                   | //| 1) Market entry (open short position, result=80)           | //| 2) Market exit (close long position, result=40)           | //+------------------------------------------------------------------+ int CBH_BH_Stoch::ShortCondition()   {    int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade condition only at news bars    int idx   =StartIndex(); //--- checking of conditions to open short position //--- formation of Bearish Harami pattern and signal line>70   if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70))      result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (downward 80, upward 20)    if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||        ((StochSignal(1)<20) && (StochSignal(2)>20))))      result=40; //--- return result    return(result);   } 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CBH_BH_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए, आपको acbh_bh_stoch.mqh फ़ाइल डाउनलोड करनी होगी (संलग्नक देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। आपको candlepatterns.mqh फ़ाइल के साथ भी यही करना होगा। आप इसे MQL5 विजार्ड में MetaEditor को पुनः आरंभ करने के बाद उपयोग कर सकते हैं। एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें: Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: Fig. 5. एक्सपर्ट एडवाइजर के सामान्य गुण इसके बाद हमें उपयोग किए गए ट्रेड सिग्नल्स के मॉड्यूल का चयन करना होगा। Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुण हमारे मामले में हम केवल एक ट्रेड सिग्नल्स का मॉड्यूल उपयोग कर रहे हैं। "बुलिश हरामी/बियरिश हरामी की पुष्टि स्टोकास्टिक के द्वारा" ट्रेड सिग्नल्स का मॉड्यूल जोड़ना: Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुण ट्रेड सिग्नल्स का मॉड्यूल जोड़ा गया: Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुण आप कोई भी ट्रेलिंग गुण चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे: Fig. 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुण पैसे प्रबंधन गुणों के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण "फिनिश" बटन दबाकर, हमें उत्पन्न किए गए एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_ABH_BH_Stoch.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। उत्पन्न एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- inputs for main signal input int            Signal_ThresholdOpen   =10;     // Signal threshold value to open [0...100] input int            Signal_ThresholdClose  =10     // Signal threshold value to close [0...100] input double         Signal_PriceLevel      =0.0    // Price level to execute a deal input double         Signal_StopLevel       =50.0   // Stop Loss level (in points) input double         Signal_TakeLevel       =50.0  // Take Profit level (in points)इसे प्रतिस्थापित करना होगा: //--- inputs for main signal input int            Signal_ThresholdOpen   =40;     // Signal threshold value to open [0...100] input int            Signal_ThresholdClose  =20     // Signal threshold value to close [0...100] input double         Signal_PriceLevel      =0.0    // Price level to execute a deal input double         Signal_StopLevel       =0.0    // Stop Loss level (in points) input double         Signal_TakeLevel       =0.0    // Take Profit level (in points) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको ओपन और क्लोज़ करने के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में, हमने थ्रेशोल्ड के फिक्स्ड मान निर्दिष्ट किए हैं: ओपन पोजीशन: 80; क्लोज़ पोजीशन: 40. MQL5 विजार्ड द्वारा उत्पन्न एक्सपर्ट एडवाइजर, ट्रेड सिग्नल्स के मॉड्यूल से "वोट्स" का उपयोग करके स्थिति खोलता और बंद करता है। मुख्य मॉड्यूल का वोट (जैसे कंटेनर, इसमें सभी जोड़े गए मॉड्यूल होते हैं) का उपयोग भी किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट परिणाम का उपयोग "वोट्स" को औसत करने में किया जाता है। हमारे मामले में हमारे पास हैं: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल, इसलिए हमें थ्रेशोल्ड मानों को सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस तथ्य के कारण, ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट किए गए हैं, इसका मतलब है कि पोजीशन्स का समापन केवल तब किया जाएगा जब समापन की शर्तें सही हों। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर के बैकटेस्टिंग पर विचार करें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5)। एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया (ट्रेलिंग का उपयोग नहीं). Fig. 11. एक्सपर्ट एडवाइजर के परीक्षण परिणाम, 'बुलिश/बियरिश हरामी + स्टोकास्टिक' इनपुट पैरामीटर का सबसे अच्छा सेट स्टेटजी टेस्टर का उपयोग करके खोजा जा सकता है, जो मेटाट्रेडर 5 क्लाइंट टर्मिनल का हिस्सा है। MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर का कोड expert_abh_bh_stoch.mq5 में संलग्न है।

2011.03.16
MQL5 विजार्ड: बुलिश एंगुल्फिंग/बियरिश एंगुल्फिंग और RSI के आधार पर ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: बुलिश एंगुल्फिंग/बियरिश एंगुल्फिंग और RSI के आधार पर ट्रेड सिग्नल

दोस्तों, आज हम बात करेंगे MQL5 विजार्ड के बारे में। यह एक ऐसा टूल है जो हमें तैयार किए गए एक्सपर्ट एडवाइजर्स (EA) बनाने की सुविधा देता है, खासकर जब हम ट्रेड आइडियाज को जल्दी चेक करना चाहते हैं। आपको केवल अपनी ट्रेडिंग सिग्नल्स क्लास बनानी होगी। इसकी संरचना और उदाहरण के लिए आप इस लेख को देख सकते हैं। इसका मुख्य आइडिया यह है कि ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से ली जाती है। इसके बाद, आपको अपनी आवश्यकताओं के अनुसार LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होगा। हम यहाँ कुछ ट्रेडिंग स्ट्रेटेजीज़ पर ध्यान केंद्रित करेंगे, जैसे कि रिवर्सल कैंडलस्टिक पैटर्न्स, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर की मदद से कन्फर्म किया जाता है। 1. "बुलिश एंगुल्फिंग" और "बियरिश एंगुल्फिंग" 1.1. बुलिश एंगुल्फिंग "बुलिश एंगुल्फिंग" पैटर्न तब बनता है जब एक छोटी काली कैंडलस्टिक के बाद एक बड़ी सफेद कैंडलस्टिक होती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को कवर करती है। इस पैटर्न की पहचान CCandlePattern क्लास के CheckPatternBullishEngulfing() मेथड में की जाती है। बुलिश एंगुल्फिंग कैंडलस्टिक पैटर्न अब बात करते हैं 1.2. बियरिश एंगुल्फिंग की। "बियरिश एंगुल्फिंग" पैटर्न तब बनता है जब एक छोटी सफेद कैंडलस्टिक के बाद एक बड़ी काली कैंडलस्टिक होती है। इसी तरह, इसकी पहचान CCandlePattern क्लास के CheckPatternBearishEngulfing() मेथड में की जाती है। बियरिश एंगुल्फिंग कैंडलस्टिक पैटर्न 2. ट्रेड सिग्नल्स, जो RSI इंडिकेटर द्वारा कन्फर्म होते हैं ट्रेड सिग्नल्स को खोले जाने के लिए RSI इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए। RSI का मान 40 से कम (लॉन्ग पोजिशन के लिए) और 60 से अधिक (शॉर्ट पोजिशन के लिए) होना चाहिए। बुलिश एंगुल्फिंग पैटर्न, जो RSI द्वारा कन्फर्म है int CBE_BE_RSI::LongCondition() - लॉन्ग पोजिशन खोलने के लिए चेक करता है (80 लौटाता है) और शॉर्ट पोजिशन बंद करने के लिए (40 लौटाता है); int CBE_BE_RSI::ShortCondition() - शॉर्ट पोजिशन खोलने के लिए (80 लौटाता है) और लॉन्ग पोजिशन बंद करने के लिए (40 लौटाता है)। 2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन बंद करना "बुलिश एंगुल्फिंग" पैटर्न की पहचान RSI द्वारा कन्फर्म होनी चाहिए: RSI(1)<40। शॉर्ट पोजिशन बंद होनी चाहिए यदि RSI इंडिकेटर 70 या 30 के क्रिटिकल लेवल को पार कर जाए। //+------------------------------------------------------------------+ //| एंट्री और एग्जिट कंडीशंस की जांच करता है | int CBE_BE_RSI::LongCondition()   {    int result=0;    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))      result=80;    return(result);   } 2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन बंद करना "बियरिश एंगुल्फिंग" पैटर्न की पहचान RSI द्वारा कन्फर्म होनी चाहिए: RSI(1)>60। लॉन्ग पोजिशन बंद होनी चाहिए यदि RSI 70 या 30 के क्रिटिकल लेवल को पार कर जाए। //+------------------------------------------------------------------+ //| एंट्री और एग्जिट कंडीशंस की जांच करता है | int CBE_BE_RSI::ShortCondition()   {    int result=0;    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))      result=80;    return(result);   } 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CBE_BE_RSI क्लास को स्टैंडर्ड लाइब्रेरी में शामिल नहीं किया गया है। इसे उपयोग करने के लिए आपको acml_rsi.mqh और acandlepatterns.mqh फ़ाइलों को डाउनलोड करना होगा। फिर इन्हें client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सेव करना होगा। एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें। MQL5 विजार्ड का उपयोग करते हुए एक्सपर्ट एडवाइजर बनाना एक्सपर्ट एडवाइजर का नाम निर्धारित करें: एक्सपर्ट एडवाइजर की सामान्य प्रॉपर्टीज़ इसके बाद, ट्रेड सिग्नल्स के मॉड्यूल का चयन करना होगा। एक्सपर्ट एडवाइजर की सिग्नल प्रॉपर्टीज़ हम एक ट्रेड सिग्नल मॉड्यूल का उपयोग कर रहे हैं: एक्सपर्ट एडवाइजर की सिग्नल प्रॉपर्टीज़ अब हम ट्रेड सिग्नल मॉड्यूल को जोड़ते हैं: एक्सपर्ट एडवाइजर की सिग्नल प्रॉपर्टीज़ आप कोई भी ट्रेलिंग प्रॉपर्टीज़ चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का उपयोग करेंगे: एक्सपर्ट एडवाइजर की ट्रेलिंग प्रॉपर्टीज़ पैसों के प्रबंधन की प्रॉपर्टीज़ में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे। एक्सपर्ट एडवाइजर की पैसे प्रबंधन प्रॉपर्टीज़ "फिनिश" बटन दबाने पर, हमें जनरेटेड एक्सपर्ट एडवाइजर का कोड मिलेगा, जो terminal_data_folder\MQL5\Experts\ में सेव होगा। जनरेटेड एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int    Signal_ThresholdOpen   =10; input int    Signal_ThresholdClose  =10; input double     Signal_PriceLevel   =0.0; input double     Signal_StopLevel    =50.0; input double     Signal_TakeLevel    =50.0; इन पैरामीटर को बदलना होगा: //--- मुख्य सिग्नल के लिए इनपुट input int    Signal_ThresholdOpen   =40; input int    Signal_ThresholdClose  =20; input double     Signal_PriceLevel   =0.0; input double     Signal_StopLevel    =0.0; input double     Signal_TakeLevel    =0.0; इनपुट पैरामीटर्स हमें ओपन और क्लोज़ के लिए थ्रेशोल्ड लेवल निर्दिष्ट करने की अनुमति देते हैं। अब हम बात करते हैं बैकटेस्टिंग की, जो हमें इस एक्सपर्ट एडवाइजर के प्रदर्शन को समझने में मदद करेगी। टेस्टिंग रिपोर्ट में हमें यह देखने को मिलेगा कि किस तरह से यह एक्सपर्ट एडवाइजर काम कर रहा है। एक्सपर्ट एडवाइजर का टेस्टिंग परिणाम, जो बुलिश एंगुल्फिंग/बियरिश एंगुल्फिंग + RSI पर आधारित है आप सबसे अच्छे इनपुट पैरामीटर्स को स्ट्रैटेजी टेस्टर का उपयोग करके खोज सकते हैं। उम्मीद है, यह जानकारी आपके लिए उपयोगी साबित होगी। अगर आपके कोई सवाल हैं, तो बेझिझक पूछें!

2011.03.10
MQL5 विज़ार्ड का उपयोग करें: Bullish और Bearish Engulfing पैटर्न पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विज़ार्ड का उपयोग करें: Bullish और Bearish Engulfing पैटर्न पर आधारित ट्रेड सिग्नल

MQL5 विज़ार्ड का उपयोग करके तैयार किए गए एक्सपर्ट एडवाइजर (EA) बनाने के लिए यहाँ क्लिक करें। यह विज़ार्ड आपको अपने ट्रेडिंग आइडियाज को तेजी से चेक करने की सुविधा देता है। आपको केवल अपना खुद का ट्रेडिंग सिग्नल क्लास बनाना होगा। इस क्लास की संरचना और उदाहरण के लिए, आप MQL5 विज़ार्ड: ट्रेडिंग सिग्नल मॉड्यूल कैसे बनाएं लेख देख सकते हैं। सामान्य विचार यह है कि ट्रेडिंग सिग्नल क्लास CExpertSignal से व्युत्पन्न होती है। इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपनी खुद की मेथड्स के साथ ओवरराइड करना होगा। एक पुस्तक है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है। हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर के द्वारा पुष्टि की गई है। सबसे अच्छा तरीका यह है कि एक अलग क्लास बनाई जाए, जो CExpertSignal से व्युत्पन्न हो, कैंडलस्टिक पैटर्न की पहचान के लिए। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल की पुष्टि के लिए, आवश्यक विशेषताएँ जोड़कर CCandlePattern से व्युत्पन्न क्लास लिखना पर्याप्त है। 1. "Bullish Engulfing" और "Bearish Engulfing" रिवर्सल कैंडलस्टिक पैटर्न 1.1. Bullish Engulfing "Bullish Engulfing" रिवर्सल पैटर्न तब बनता है जब एक डाउनट्रेंड में एक छोटा काला कैंडल बड़ा सफेद कैंडल द्वारा पूरा ढक लिया जाता है। छोटे कैंडल की छायाएँ छोटी होती हैं, जिससे बड़े कैंडल का शरीर पहले दिन के कैंडल को पूरी तरह से ढक लेता है। Fig. 1. "Bullish Engulfing" कैंडलस्टिक पैटर्न "Bullish Engulfing" पैटर्न की पहचान CheckPatternBullishEngulfing() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "Bullish Engulfing" कैंडलस्टिक पैटर्न की पहचान करता है       | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() {    //--- Bullish Engulfing    if((Open(2)>Close(2))             &&  // पिछले कैंडल का मूल्य गिर रहा है       (Close(1)-Open(1)>AvgBody(1))  &&  // bullish कैंडल का मूल्य औसत से अधिक है       (Close(1)>Open(2))             &&  // bullish कैंडल का बंद मूल्य bearish कैंडल के खुलने से अधिक है       (MidOpenClose(2)<CloseAvg(2))  &&  // डाउनट्रेंड       (Open(1)<Close(2)))                // bullish कैंडल का खुलने का मूल्य bearish कैंडल के बंद से कम है       return(true); //---    return(false); } CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) मेथड का उपयोग "Bullish Engulfing" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 1.2. Bearish Engulfing "Bearish Engulfing" रिवर्सल पैटर्न तब बनता है जब एक अपट्रेंड में एक छोटा सफेद कैंडल एक बड़े काले कैंडल द्वारा ढक लिया जाता है। Fig. 2. "Bearish Engulfing" कैंडलस्टिक पैटर्न "Bearish Engulfing" पैटर्न की पहचान CheckPatternBearishEngulfing() मेथड में की जाती है: //+------------------------------------------------------------------+ //| "Bearish Engulfing" कैंडलस्टिक पैटर्न की पहचान करता है       | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() {    //--- Bearish Engulfing    if((Open(2)<Close(2))            &&  // पिछले कैंडल का मूल्य बढ़ रहा है       (Open(1)-Close(1)>AvgBody(1)) &&  // bearish कैंडल का मूल्य औसत से अधिक है       (Close(1)<Open(2))            &&  // bearish कैंडल का बंद मूल्य bullish कैंडल के खुलने से कम है       (MidOpenClose(2)>CloseAvg(2)) &&  // अपट्रेंड       (Open(1)>Close(2)))               // Open price of the bearish candle is higher than close price of the bullish candle       return(true); //---    return(false); } CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) मेथड का उपयोग "Bearish Engulfing" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 2. MFI संकेतक द्वारा पुष्टि किए गए ट्रेड सिग्नल ट्रेडिंग सिग्नल को लॉन्ग या शॉर्ट पोजीशन खोलने के लिए MFI संकेतक द्वारा पुष्टि की जानी चाहिए। MFI संकेतक का मान 40 से कम (लॉन्ग पोजीशन के लिए) या 60 से अधिक (शॉर्ट पोजीशन के लिए) होना चाहिए। खुले हुए पोजीशन को MFI संकेतक के मानों पर निर्भर करते हुए बंद किया जाएगा। इसे 2 मामलों में किया जा सकता है: यदि MFI विपरीत महत्वपूर्ण स्तर (70 लॉन्ग पोजीशन के लिए और 30 शॉर्ट पोजीशन के लिए) तक पहुँच गया है यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब MFI संकेतक निम्नलिखित स्तरों तक पहुँचता है: 30 लॉन्ग पोजीशन के लिए और 70 शॉर्ट पोजीशन के लिए) Fig. 3. "Bullish Engulfing" पैटर्न, MFI संकेतक द्वारा पुष्टि की गई int CBE_BE_MFI::LongCondition() - लॉन्ग पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करने के लिए (40 लौटाता है); int CBE_BE_MFI::ShortCondition() - शॉर्ट पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और लॉन्ग पोजीशन को बंद करने के लिए (40 लौटाता है). 2.1. लॉन्ग पोजीशन खोलें/शॉर्ट पोजीशन बंद करें "Bullish Engulfing" पैटर्न की पुष्टि MFI संकेतक द्वारा की जानी चाहिए: MFi(1)<40 (पिछले पूर्ण बार का MFI संकेतक का मान 40 से कम होना चाहिए). शॉर्ट पोजीशन को बंद करना चाहिए यदि MFI संकेतक महत्वपूर्ण स्तरों (70 या 30) को पार कर जाता है। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है                 | //| 1) मार्केट में प्रवेश (लॉन्ग पोजीशन खोलें, परिणाम=80)                  | //| 2) मार्केट से निकासी (शॉर्ट पोजीशन बंद करें, परिणाम=40)                 | //+------------------------------------------------------------------+ int CBE_BE_MFI::LongCondition() {    int result=0;    //--- idx का उपयोग एक्सपर्ट एडवाइज़र कार्य मोड निर्धारित करने के लिए किया जा सकता है    int idx = StartIndex();    //--- लॉन्ग पोजीशन खोलने की शर्तों की जांच    //--- Bullish Engulfing पैटर्न और MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (MFI(1)<40))      result=80;    //--- शॉर्ट पोजीशन बंद करने की शर्तों की जांच    //--- ओवरबॉट/ओवर्सोल्ड स्तरों (30, 70) के बीच सिग्नल लाइन क्रॉसओवर की जांच   if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))      result=40;    //--- परिणाम लौटाएँ    return(result); } 2.2. शॉर्ट पोजीशन खोलें/लॉन्ग पोजीशन बंद करें "Bearish Engulfing" पैटर्न की पुष्टि MFI संकेतक द्वारा की जानी चाहिए: MFI(1)>60 (पिछले पूर्ण बार का MFI संकेतक का मान 60 से अधिक होना चाहिए). लॉन्ग पोजीशन को बंद करना चाहिए यदि MFI संकेतक महत्वपूर्ण स्तरों (70 या 30) को पार कर जाता है। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है                 | //| 1) मार्केट में प्रवेश (शॉर्ट पोजीशन खोलें, परिणाम=80)                 | //| 2) मार्केट से निकासी (लॉन्ग पोजीशन बंद करें, परिणाम=40)                  | //+------------------------------------------------------------------+ int CBE_BE_MFI::ShortCondition() {    int result=0;    //--- idx का उपयोग एक्सपर्ट एडवाइज़र कार्य मोड निर्धारित करने के लिए किया जा सकता है    int idx = StartIndex();    //--- शॉर्ट पोजीशन खोलने की शर्तों की जांच    //--- Bearish Engulfing पैटर्न और MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (MFI(1)>60))      result=80;    //--- लॉन्ग पोजीशन बंद करने की शर्तों की जांच    //--- ओवरबॉट/ओवर्सोल्ड स्तरों (30, 70) के बीच सिग्नल लाइन क्रॉसओवर की जांच    if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))      result=40;    //--- परिणाम लौटाएँ    return(result); } 2.3. MQL5 विज़ार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CBE_BE_MFI क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए, आपको abe_be_mfi.mqh फ़ाइल डाउनलोड करनी होगी (संलग्नक देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। इसी प्रकार, acandlepatterns.mqh फ़ाइल के साथ भी करें। आप इसे MQL5 विज़ार्ड में MetaEditor को रिस्टार्ट करने के बाद उपयोग कर सकते हैं। एक एक्सपर्ट एडवाइजर बनाने के लिए, MQL5 विज़ार्ड चलाएँ: Fig. 4. MQL5 विज़ार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: Fig. 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएँ इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल मॉड्यूल का चयन करना होगा। Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुण हमारे मामले में हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग करेंगे। "Bullish Engulfing/Bearish Engulfing द्वारा पुष्टि किए गए सिग्नल" ट्रेड सिग्नल मॉड्यूल जोड़ना: Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुण ट्रेड सिग्नल मॉड्यूल जोड़ा गया: Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुण आप कोई भी ट्रेलिंग गुण चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का उपयोग करेंगे: Fig. 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुण पैसों के प्रबंधन की विशेषताओं के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण "फिनिश" बटन दबाकर, हमें उत्पन्न एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_ABE_BE_MFI.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। उत्पन्न एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int            Signal_ThresholdOpen   =10;     // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int            Signal_ThresholdClose  =10;     // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double         Signal_PriceLevel      =0.0    // एक डील निष्पादित करने के लिए मूल्य स्तर input double         Signal_StopLevel       =50.0   // स्टॉप लॉस स्तर (पॉइंट में) input double         Signal_TakeLevel       =50.0   // टेक प्रॉफिट स्तर (पॉइंट में) इन्हें बदलकर करना होगा: //--- मुख्य सिग्नल के लिए इनपुट input int            Signal_ThresholdOpen   =40;     // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int            Signal_ThresholdClose  =20;     // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double         Signal_PriceLevel      =0.0    // एक डील निष्पादित करने के लिए मूल्य स्तर input double         Signal_StopLevel       =0.0    // स्टॉप लॉस स्तर (पॉइंट में) input double         Signal_TakeLevel       =0.0    // टेक प्रॉफिट स्तर (पॉइंट में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको पोजीशन्स खोलने और बंद करने के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशोल्ड के निश्चित मान निर्दिष्ट किए हैं: पोजीशन खोलें: 80; पोजीशन बंद करें: 40. MQL5 विज़ार्ड द्वारा उत्पन्न एक्सपर्ट एडवाइजर "सिग्नल" के मॉड्यूल से "वोट" का उपयोग करके पोजीशन खोलता और बंद करता है। मुख्य मॉड्यूल का वोट (जो सभी जोड़े गए मॉड्यूल का कंटेनर है) भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट परिणाम भी "वोट" के औसत में उपयोग किए जाते हैं। हमारे मामले में, हमें मुख्य मॉड्यूल + 1 ट्रेड सिग्नल मॉड्यूल है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस बात का ध्यान रखना होगा। इस कारण से, ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट करना होगा। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट होते हैं, जिसका अर्थ है कि पोजीशन्स केवल तब बंद किए जाएंगे जब बंद करने की शर्तें सही हों। 2.4. ऐतिहासिक बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर के बैकटेस्टिंग पर विचार करें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=5). एक्सपर्ट एडवाइजर बनाने में हमने निश्चित मात्रा का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया). Fig. 11. Bullish Engulfing/Bearish Engulfing + MFI पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम इनपुट पैरामीटर का सर्वश्रेष्ठ सेट स्ट्रेटेजी टेस्टर का उपयोग करके खोजा जा सकता है। MQL5 विज़ार्ड द्वारा निर्मित एक्सपर्ट एडवाइजर का कोड expert_abe_be_mfi.mq5 में संलग्न है।

2011.03.10
MQL5 विजार्ड: बुलिश एवं बेयरिश इंगुल्फिंग ट्रेड सिग्नल + CCI के साथ
MetaTrader5
MQL5 विजार्ड: बुलिश एवं बेयरिश इंगुल्फिंग ट्रेड सिग्नल + CCI के साथ

बाजार में सफल होने के लिए सही संकेतों की पहचान करना बहुत जरूरी है। आज हम बात करेंगे MQL5 विजार्ड की, जो आपको तैयार एक्सपर्ट एडवाइजर्स बनाने में मदद करता है। यह आपको अपने ट्रेड आइडियाज का त्वरित परीक्षण करने की सुविधा देता है। बस आपको अपनी ट्रेडिंग सिग्नल क्लास बनानी होती है। इसकी संरचना और उदाहरण आप लेख में पढ़ सकते हैं MQL5 विजार्ड: ट्रेडिंग सिग्नल का मॉड्यूल कैसे बनाएं। इस प्रक्रिया का मूल विचार यह है कि ट्रेडिंग सिग्नल की क्लास को CExpertSignal से विरासत में लिया जाता है। इसके बाद, आपको अपनी खुद की विधियों के साथ LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होगा। रूसी भाषा में एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है। हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिसे स्टोकास्टिक, CCI, MFI और RSI जैसे ऑस्सीलेटरों द्वारा पुष्टि की जाती है। सर्वश्रेष्ठ तरीका यह है कि आप एक अलग क्लास बनाएं, जो कैंडलस्टिक पैटर्न के निर्माण की जांच करती है। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल की पुष्टि के लिए, बस CCandlePattern से विरासत में ली गई क्लास लिखें और उसमें आवश्यक सुविधाएँ जोड़ें (जैसे, ऑस्सीलेटर द्वारा पुष्टि)। 1. "बुलिश इंगुल्फिंग" और "बेयरिश इंगुल्फिंग" रिवर्सल कैंडलस्टिक पैटर्न 1.1. बुलिश इंगुल्फिंग "बुलिश इंगुल्फिंग" रिवर्सल पैटर्न उस समय बनता है जब एक छोटी काली कैंडलस्टिक के बाद एक बड़ी सफेद कैंडलस्टिक आती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को ढक लेती है। छोटी कैंडलस्टिक की छायाएँ छोटी होती हैं, जिससे बड़ी कैंडलस्टिक का शरीर पिछले दिन की कैंडलस्टिक को पूरी तरह कवर कर लेता है। Fig. 2. "बेयरिश इंगुल्फिंग" कैंडलस्टिक पैटर्न "बेयरिश इंगुल्फिंग" पैटर्न की पहचान CheckPatternBearishEngulfing() मेथड में की गई है। //+------------------------------------------------------------------+ //| "बेयरिश इंगुल्फिंग" पैटर्न की पहचान करता है      | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- बेयरिश इंगुल्फिंग    if((Open(2)<Close(2))            &&  // पिछले कैंडल की स्थिति बुलिश है       (Open(1)-Close(1)>AvgBody(1)) &&  // कैंडल का शरीर औसत आकार से बड़ा है       (Close(1)<Open(2))            &&  // बेयरिश कैंडल की बंद कीमत बुलिश कैंडल की खोल कीमत से कम है       (MidOpenClose(2)>CloseAvg(2)) &&  // अपट्रेंड       (Open(1)>Close(2)))               // बेयरिश कैंडल की खोल कीमत बुलिश कैंडल की बंद कीमत से ज्यादा है       return(true); //---    return(false);   } "बेयरिश इंगुल्फिंग" पैटर्न की पहचान CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) मेथड का उपयोग करके की जाती है। 2. CCI संकेतों द्वारा पुष्टि की गई ट्रेड सिग्नल लंबी या छोटी स्थिति खोलने के लिए ट्रेड सिग्नल को CCI संकेतक द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लंबी स्थिति के लिए और 50 छोटी स्थिति के लिए) से अधिक/कम होना चाहिए। खुले हुए स्थिति का समापन CCI के मानों पर निर्भर करता है। यह दो मामलों में किया जा सकता है: यदि CCI लाइन विपरीत महत्वपूर्ण स्तर (लंबी स्थिति के लिए 80 और छोटी स्थिति के लिए -80) तक पहुँच गई है यदि उल्टा संकेत की पुष्टि नहीं होती है (जब CCI निम्नलिखित स्तरों पर पहुँचता है: -80 लंबी स्थिति के लिए और 80 छोटी स्थिति के लिए)

2011.03.10
MQL5 विजार्ड: बुलिश और बेयरिश एंगुल्फिंग पैटर्न पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: बुलिश और बेयरिश एंगुल्फिंग पैटर्न पर आधारित ट्रेड सिग्नल

प्रिय ट्रेडर्स, आज हम MQL5 विजार्ड के बारे में चर्चा करेंगे, जो आपको ट्रेडिंग सिग्नल बनाने की सुविधा प्रदान करता है। यह स्टैंडर्ड लाइब्रेरी क्लासेज का उपयोग करते हुए तैयार किए गए एक्सपर्ट एडवाइजर्स बनाने में मदद करता है। अपने ट्रेड आइडियाज को जल्दी चेक करने के लिए, आपको केवल अपना खुद का ट्रेडिंग सिग्नल क्लास बनाना होगा। इसके लिए आप MQL5 विजार्ड: ट्रेडिंग सिग्नल के मॉड्यूल को कैसे बनाएं लेख को देख सकते हैं। बेसिक आइडिया यह है: ट्रेडिंग सिग्नल क्लास CExpertSignal से डेराइव की जाती है। इसके बाद, आपको अपने खुद के LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होगा। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में) जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है। हम रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑसिलेटर्स द्वारा कन्फर्म किया जाता है। हम यहां "बुलिश एंगुल्फिंग/बेयरिश एंगुल्फिंग" रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल्स पर ध्यान केंद्रित करेंगे, जिसे स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की जाएगी। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है। 1. "बुलिश एंगुल्फिंग" और "बेयरिश एंगुल्फिंग" रिवर्सल कैंडलस्टिक पैटर्न 1.1. बुलिश एंगुल्फिंग "बुलिश एंगुल्फिंग" रिवर्सल पैटर्न डाउनट्रेंड में तब बनता है जब एक छोटी काली कैंडलस्टिक के बाद एक बड़ी सफेद कैंडलस्टिक आती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को "एंगुल्फ" कर देती है। छोटी कैंडलस्टिक के टेल्स छोटे होते हैं, जिससे बड़ी कैंडलस्टिक का बॉडी पिछले दिन की कैंडलस्टिक को कवर कर लेता है। Fig. 1. "बुलिश एंगुल्फिंग" कैंडलस्टिक पैटर्न "बुलिश एंगुल्फिंग" पैटर्न की पहचान CheckPatternBullishEngulfing() मेथड में की जाती है: //+------------------------------------------------------------------+ //| Checks formation of "Bullish Engulfing" candlestick pattern    | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))             &&  // previous candle is bearish       (Close(1)-Open(1)>AvgBody(1))  &&  // body of the bullish candle is higher than average value of the body       (Close(1)>Open(2))             &&  // close price of the bullish candle is higher than open price of the bearish candle       (MidOpenClose(2)<CloseAvg(2))  &&  // downtrend       (Open(1)<Close(2)))                // open price of the bullish candle is lower than close price of the bearish       return(true); //---    return(false);   } CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) मेथड "बुलिश एंगुल्फिंग" कैंडलस्टिक पैटर्न की पहचान करने के लिए उपयोग की जाती है। 1.2. बेयरिश एंगुल्फिंग "बेयरिश एंगुल्फिंग" रिवर्सल पैटर्न अपट्रेंड में तब बनता है जब एक छोटी सफेद कैंडलस्टिक के बाद एक बड़ी काली कैंडलस्टिक आती है, जो पूरी तरह से पिछले दिन की कैंडलस्टिक को "एंगुल्फ" कर देती है। छोटी कैंडलस्टिक के टेल्स छोटे होते हैं, जिससे बड़ी कैंडलस्टिक का बॉडी पिछले दिन की कैंडलस्टिक को कवर कर लेता है। Fig. 2. "बेयरिश एंगुल्फिंग" कैंडलस्टिक पैटर्न "बेयरिश एंगुल्फिंग" पैटर्न की पहचान CheckPatternBearishEngulfing() मेथड में की जाती है: //+------------------------------------------------------------------+ //| Checks formation of "Bearish Engulfing" candlestick pattern   | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))            &&  // previous candle is bullish       (Open(1)-Close(1)>AvgBody(1)) &&  // body of the candle is higher than average value of the body       (Close(1)<Open(2))            &&  // close price of the bearish candle is lower than open price of the bullish candle       (MidOpenClose(2)>CloseAvg(2)) &&  // uptrend       (Open(1)>Close(2)))               // Open price of the bearish candle is higher than close price of the bullish candle       return(true); //---    return(false);   } CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) मेथड "बेयरिश एंगुल्फिंग" कैंडलस्टिक पैटर्न की पहचान करने के लिए उपयोग की जाती है। 2. ट्रेड सिग्नल्स, जिन्हें स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गई है लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेडिंग सिग्नल्स की पुष्टि स्टोकास्टिक ऑसिलेटर द्वारा होनी चाहिए। सिग्नल %D लाइन को संबंधित क्रिटिकल लेवल (30 या 70) से अधिक/कम होना चाहिए। खुले हुए पोजीशन को बंद करने की प्रक्रिया %D इंडिकेटर के मानों पर निर्भर करती है। यह दो मामलों में किया जा सकता है: अगर %D लाइन विपरीत क्रिटिकल लेवल (लॉन्ग पोजीशन के लिए 80 और शॉर्ट पोजीशन के लिए 20) तक पहुँच गई है। अगर रिवर्स सिग्नल की पुष्टि नहीं होती (जब %D लाइन निम्न स्तरों तक पहुँचती है: 20 लॉन्ग पोजीशन के लिए और 80 शॉर्ट पोजीशन के लिए)। Fig. 3. "बुलिश एंगुल्फिंग" पैटर्न, स्टोकास्टिक इंडिकेटर द्वारा पुष्टि की गई ट्रेड के लिए प्रवेश और निकासी की शर्तों की जांच दो मेथड्स में की जाती है: int CBE_BE_Stoch::LongCondition() - लॉन्ग पोजीशन खोलने की शर्तें चेक करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करता है (40 लौटाता है); int CBE_BE_Stoch::ShortCondition() - शॉर्ट पोजीशन खोलने की शर्तें चेक करता है (80 लौटाता है) और लॉन्ग पोजीशन को बंद करता है (40 लौटाता है)। 2.1. लॉन्ग पोजीशन खोलना/शॉर्ट पोजीशन बंद करना "बुलिश एंगुल्फिंग" पैटर्न की पुष्टि स्टोकास्टिक इंडिकेटर द्वारा होनी चाहिए: StochSignal(1)<30 (स्टोकास्टिक इंडिकेटर की सिग्नल लाइन का मान पिछले पूर्ण बार से 30 से कम होना चाहिए)। शॉर्ट पोजीशन को तब बंद किया जाना चाहिए जब स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 20 या 80 स्तरों को ऊपर की ओर क्रॉस करती है। //+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market                 | //| 1) Market entry (open long position, result=80)            | //| 2) Market exit (close short position, result=40)          | //+------------------------------------------------------------------+ int CBE_BE_Stoch::LongCondition()   {    int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade consition only at news bars   int idx   =StartIndex(); //--- checking of conditions to open long position //--- formation of Bullish Engulfing pattern and signal line<30   if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (StochSignal(1)<30))      result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (downward 20, upward 80)    if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||        ((StochSignal(1)>80) && (StochSignal(2)<80))))      result=40; //--- return result    return(result);   } 2.2. शॉर्ट पोजीशन खोलना/लॉन्ग पोजीशन बंद करना "बेयरिश एंगुल्फिंग" पैटर्न की पुष्टि स्टोकास्टिक इंडिकेटर द्वारा होनी चाहिए: StochSignal(1)>70 (स्टोकास्टिक इंडिकेटर की सिग्नल लाइन का मान पिछले पूर्ण बार से 70 से अधिक होना चाहिए)। लॉन्ग पोजीशन को तब बंद किया जाना चाहिए जब स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 80 या 20 स्तरों को नीचे की ओर क्रॉस करती है। //+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market                 | //| 1) Market entry (open short position, result=80)           | //| 2) Market exit (close long position, result=40)          | //+------------------------------------------------------------------+ int CBE_BE_Stoch::ShortCondition()   {    int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade consition only at news bars   int idx   =StartIndex(); //--- checking of conditions to open short position //--- formation of Bearish Engulfing pattern and signal line>70   if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (StochSignal(1)>70))      result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (downward 80, upward 20)    if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||        ((StochSignal(1)<20) && (StochSignal(2)>20))))      result=40; //--- return result    return(result);   } 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर्स बनाना CBE_BE_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लासेज में शामिल नहीं है, इसलिए इसे उपयोग करने के लिए आपको acbe_be_stoch.mqh फ़ाइल डाउनलोड करनी होगी (जुड़वां में देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। इसी प्रकार candlepatterns.mqh फ़ाइल के साथ भी करना होगा। आप इसे MQL5 विजार्ड में MetaEditor को रीस्टार्ट करने के बाद उपयोग कर सकते हैं। एक्सपर्ट एडवाइजर्स बनाने के लिए MQL5 विजार्ड लॉन्च करें: Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर्स बनाना आइए एक्सपर्ट एडवाइजर्स का नाम निर्दिष्ट करें: Fig. 5. एक्सपर्ट एडवाइजर्स की सामान्य प्रॉपर्टीज इसके बाद हमें उपयोग किए गए ट्रेड सिग्नल के मॉड्यूल का चयन करना होगा। Fig. 6. एक्सपर्ट एडवाइजर्स के सिग्नल प्रॉपर्टीज हमारे मामले में हम केवल एक ट्रेड सिग्नल के मॉड्यूल का उपयोग करते हैं। "स्टोकास्टिक द्वारा पुष्टि की गई बुलिश/बेयरिश एंगुल्फिंग पर आधारित सिग्नल्स" ट्रेड सिग्नल का मॉड्यूल जोड़ना: Fig. 7. एक्सपर्ट एडवाइजर्स के सिग्नल प्रॉपर्टीज ट्रेड सिग्नल का मॉड्यूल जोड़ा गया: Fig. 8. एक्सपर्ट एडवाइजर्स के सिग्नल प्रॉपर्टीज आप कोई भी ट्रेलिंग प्रॉपर्टीज चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का चयन करेंगे: Fig. 9. एक्सपर्ट एडवाइजर्स की ट्रेलिंग प्रॉपर्टीज पैसों के प्रबंधन की प्रॉपर्टीज के संदर्भ में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. एक्सपर्ट एडवाइजर्स की पैसे प्रबंधन प्रॉपर्टीज "फिनिश" बटन दबाने पर, हमें जनरेटेड एक्सपर्ट एडवाइजर्स का कोड प्राप्त होता है, जो Expert_ABE_BE_Stoch.mq5 में स्थित होता है, और यह terminal_data_folder\MQL5\Experts\ में सेव होता है। जनरेटेड एक्सपर्ट एडवाइजर्स के डिफ़ॉल्ट इनपुट पैरामीटर्स: //--- inputs for main signal input int            Signal_ThresholdOpen   =10;     // सिग्नल थ्रेशहोल्ड वैल्यू खोलने के लिए [0...100] input int            Signal_ThresholdClose  =10     // सिग्नल थ्रेशहोल्ड वैल्यू बंद करने के लिए [0...100] input double         Signal_PriceLevel      =0.0    // डील को निष्पादित करने के लिए मूल्य स्तर input double         Signal_StopLevel       =50.0   // स्टॉप लॉस स्तर (पॉइंट्स में) input double         Signal_TakeLevel       =50.0    // टेक प्रॉफिट स्तर (पॉइंट्स में) इसे बदलकर होना चाहिए: //--- inputs for main signal input int            Signal_ThresholdOpen   =40;     // सिग्नल थ्रेशहोल्ड वैल्यू खोलने के लिए [0...100] input int            Signal_ThresholdClose  =20     // सिग्नल थ्रेशहोल्ड वैल्यू बंद करने के लिए [0...100] input double         Signal_PriceLevel      =0.0    // डील को निष्पादित करने के लिए मूल्य स्तर input double         Signal_StopLevel       =0.0    // स्टॉप लॉस स्तर (पॉइंट्स में) input double         Signal_TakeLevel       =0.0    // टेक प्रॉफिट स्तर (पॉइंट्स में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर्स आपको ओपन और क्लोज़ करने के लिए थ्रेशहोल्ड स्तरों को निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशहोल्ड के फिक्स्ड मान निर्दिष्ट किए हैं: ओपन पोजीशन: 80; क्लोज़ पोजीशन: 40. MQL5 विजार्ड द्वारा जनरेट किया गया एक्सपर्ट एडवाइजर्स "वोट्स" के आधार पर ओपन और क्लोज़ पोजीशन करता है। मुख्य मॉड्यूल का वोट (कंटेनर के रूप में, इसमें सभी जोड़े गए मॉड्यूल शामिल हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट के परिणाम "वोट्स" औसत में भी उपयोग किए जाते हैं। हमारे मामले में हमारे पास हैं: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल का मॉड्यूल, इसलिए हमें थ्रेशहोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस तथ्य के कारण, ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट करना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर्स के मान 0 पर सेट किए जाते हैं, इसका अर्थ है कि पोजीशन्स को केवल तब बंद किया जाएगा जब क्लोजिंग कंडीशन्स सत्य हों। 2.4. ऐतिहासिक बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर्स की बैकटेस्टिंग पर विचार करें जो ऐतिहासिक डेटा पर की गई थी (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5)। एक्सपर्ट एडवाइजर्स बनाने के लिए हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट ट्रेडिंग, 0.1) का उपयोग किया, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया)। Fig. 11. एक्सपर्ट एडवाइजर्स के परीक्षण परिणाम, बुलिश/बेयरिश एंगुल्फिंग + स्टोकास्टिक पर आधारित इनपुट पैरामीटर्स का सबसे अच्छा सेट स्ट्रैटेजी टेस्टर का उपयोग करके पाया जा सकता है। MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर्स का कोड expert_abe_be_stoch.mq5 में संलग्न है।

2011.03.10
MQL5 विज़ार्ड: RSI के साथ डार्क क्लाउड कवर/पीयर्सिंग लाइन ट्रेड सिग्नल्स
MetaTrader5
MQL5 विज़ार्ड: RSI के साथ डार्क क्लाउड कवर/पीयर्सिंग लाइन ट्रेड सिग्नल्स

MQL5 विज़ार्ड एक बेहतरीन टूल है जो आपको एक्सपर्ट एडवाइजर (EA) बनाने की सुविधा देता है। यह आपको अपने ट्रेड आईडियाज को तेजी से चेक करने की अनुमति देता है, बस आपको अपनी खुद की ट्रेड सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण आप MQL5 विज़ार्ड: ट्रेडिंग सिग्नल्स का मॉड्यूल कैसे बनाएं लेख में देख सकते हैं। साधारण रूप से, ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से निकली गई है। इसके बाद, आपको अपने खुद के LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होगा। एक किताब है "सर्वश्रेष्ठ ट्रेडरों की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियां दी गई हैं। यहाँ हम रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI, और RSI जैसे ऑस्सीलेटर द्वारा पुष्टि की गई हैं। हम यहाँ "डार्क क्लाउड कवर" और "पीयर्सिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान देंगे, जिन्हें RSI इंडिकेटर द्वारा पुष्टि किया गया है। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है। 1. "डार्क क्लाउड कवर" और "पीयर्सिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न 1.1. डार्क क्लाउड कवर यह एक बैरिश कैंडलस्टिक रिवर्सल है जो अपट्रेंड के अंत में होता है। पहले दिन एक लंबी सफेद कैंडल बनती है और दूसरे दिन एक गैप अप होता है। हालाँकि, दूसरे दिन का समापन पहले दिन के मध्य बिंदु से नीचे होता है। चित्र 1. "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न "डार्क क्लाउड कवर" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में की जाती है। //+------------------------------------------------------------------+ //| "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- डार्क क्लाउड कवर if((Close(2) - Open(2) > AvgBody(1)) && (Close(1) < Close(2) && Close(1 Open(2) && (MidOpenClose(2) > CloseAvg(1)) && (Open(1) > High(2))) { return true; } return false; } "डार्क क्लाउड कवर" पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग किया जाता है। 1.2. पीयर्सिंग लाइन दूसरे दिन का गैप डाउन डाउनट्रेंड को जारी रखता है। हालाँकि, दूसरे दिन का समापन पहले दिन के शरीर के मध्य बिंदु के ऊपर होता है। यह भालुओं को बताता है कि एक बॉटम बन सकता है। चित्र 2. "पीयर्सिंग लाइन" कैंडलस्टिक पैटर्न "पीयर्सिंग लाइन" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में की जाती है। //+------------------------------------------------------------------+ //| "पीयर्सिंग लाइन" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- पीयर्सिंग लाइन if((Close(1) - Open(1) > AvgBody(1)) && (Open(2) - Close(2) > AvgBody(1) && Close(1) > Close(2) && Close(1) < Open(2) && (MidOpenClose(2) < CloseAvg(2)) && (Open(1) < Low(2))) { return true; } return false; } "पीयर्सिंग लाइन" पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) मेथड का उपयोग किया जाता है। 2. ट्रेड सिग्नल्स, जो RSI इंडिकेटर द्वारा पुष्टि किए गए हैं लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेडिंग सिग्नल्स को RSI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। यदि RSI विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 40 और शॉर्ट पोजिशन के लिए 60) तक पहुँचता है तो लॉन्ग पोजिशन खोली जाएगी। यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब RSI निम्नलिखित स्तरों तक पहुँचता है: लॉन्ग पोजिशन के लिए 30 और शॉर्ट पोजिशन के लिए 70) तो पोजिशन बंद की जाएगी। चित्र 3. "डार्क क्लाउड कवर" पैटर्न, जो RSI इंडिकेटर द्वारा पुष्टि किया गया है int CDC_PL_RSI::LongCondition() - लॉन्ग पोजिशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजिशन को बंद करने के लिए (40 लौटाता है); int CDC_PL_RSI::ShortCondition() - शॉर्ट पोजिशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और लॉन्ग पोजिशन को बंद करने के लिए (40 लौटाता है). 2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन बंद करना "पीयर्सिंग लाइन" पैटर्न की पुष्टि RSI इंडिकेटर द्वारा की जानी चाहिए: RSI(1) 70) && (RSI(2) < 70))) result = 40; //--- परिणाम लौटाएं return(result); } 2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन बंद करना "डार्क क्लाउड कवर" पैटर्न की पुष्टि RSI इंडिकेटर द्वारा की जानी चाहिए: RSI(1)>60 (पिछले पूर्ण बार का RSI मान 60 से अधिक होना चाहिए). यदि RSI इंडिकेटर ने महत्वपूर्ण स्तर 70 या 30 को नीचे की ओर पार किया है तो लॉन्ग पोजिशन बंद की जानी चाहिए. //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है | //| 1) मार्केट में प्रवेश (शॉर्ट पोजिशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (लॉन्ग पोजिशन बंद करें, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::ShortCondition() { int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है int idx = StartIndex(); //--- शॉर्ट पोजिशन खोलने की शर्तों की जांच //--- "डार्क क्लाउड कवर" पैटर्न और RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1) > 60)) result = 80; //--- लॉन्ग पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों का सिग्नल लाइन क्रॉसओवर (नीचे 70, नीचे 30) if(((RSI(1) < 70) && (RSI(2) > 70)) || ((RSI(1) < 30) && (RSI(2) > 30))) result = 40; //--- परिणाम लौटाएं return(result); } 2.3. MQL5 विज़ार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CDC_PL_RSI क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए, आपको adc_pl_rsi.mqh फ़ाइल को डाउनलोड करना होगा (देखें अटैचमेंट) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। इसी तरह acandlepatterns.mqh फ़ाइल के साथ भी करें। आप इसे MQL5 विज़ार्ड में MetaEditor को फिर से चालू करने के बाद उपयोग कर सकते हैं। एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विज़ार्ड लॉन्च करें: चित्र 4. MQL5 विज़ार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: चित्र 5. एक्सपर्ट एडवाइजर के सामान्य गुण इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल्स के मॉड्यूल का चयन करना होगा। चित्र 6. एक्सपर्ट एडवाइजर के सिग्नल गुण हमारे मामले में हम केवल एक ट्रेड सिग्नल्स मॉड्यूल का उपयोग करेंगे।"डार्क क्लाउड कवर/पीयर्सिंग लाइन द्वारा पुष्टि किए गए सिग्नल्स" ट्रेड सिग्नल्स के मॉड्यूल को जोड़ना: चित्र 7. एक्सपर्ट एडवाइजर के सिग्नल गुण ट्रेड सिग्नल्स का मॉड्यूल जोड़ा गया: चित्र 8. एक्सपर्ट एडवाइजर के सिग्नल गुण आप कोई भी ट्रेलिंग गुण चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे: चित्र 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुण पैसे प्रबंधन के गुणों के संबंध में, हम "स्थिर व्यापार मात्रा के साथ व्यापार" का उपयोग करेंगे: चित्र 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण "फिनिश" बटन दबाकर हम जनरेटेड एक्सपर्ट एडवाइजर का कोड प्राप्त करेंगे, जो कि Expert_ADC_PL_RSI.mq5 में स्थित होगा, इसे terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। जनरेटेड एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int Signal_ThresholdOpen = 10; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int Signal_ThresholdClose = 10; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double Signal_PriceLevel = 0.0; // डील करने के लिए मूल्य स्तर input double Signal_StopLevel = 50.0; // स्टॉप लॉस स्तर (पॉइंट में) input double Signal_TakeLevel = 50.0; // टेक प्रॉफिट स्तर (पॉइंट में) इसे बदलकर: //--- मुख्य सिग्नल के लिए इनपुट input int Signal_ThresholdOpen = 40; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int Signal_ThresholdClose = 20; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double Signal_PriceLevel = 0.0; // डील करने के लिए मूल्य स्तर input double Signal_StopLevel = 0.0; // स्टॉप लॉस स्तर (पॉइंट में) input double Signal_TakeLevel = 0.0; // टेक प्रॉफिट स्तर (पॉइंट में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर्स आपको ओपन और क्लोज़ पोजिशन्स के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। ट्रेड सिग्नल्स क्लास के LongCondition() और ShortCondition() मेथड्स में हमनें थ्रेशोल्ड के निश्चित मान निर्दिष्ट किए हैं: ओपन पोजिशन: 80; क्लोज़ पोजिशन: 40. MQL5 विज़ार्ड द्वारा जनरेटेड एक्सपर्ट एडवाइजर ट्रेड सिग्नल्स के मॉड्यूल से "वोट" का उपयोग करके पोजिशन्स खोलता और बंद करता है। मुख्य मॉड्यूल का वोट भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट परिणामों का भी "वोट" के औसत में उपयोग किया जाता है। हमारे मामले में हमारे पास मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस बात का ध्यान रखना होगा। इस कारण से, ThresholdOpen और ThresholdClose को 40 = (0+80)/2 और 20 = (0+40)/2 के रूप में सेट किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर्स का मान 0 सेट है, जिसका मतलब है कि पोजिशन्स केवल तभी बंद की जाएंगी जब बंद करने की शर्तें सही हों। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर के बैकटेस्टिंग पर ध्यान दें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14). एक्सपर्ट एडवाइजर के निर्माण में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया). चित्र 11. एक्सपर्ट एडवाइजर के परीक्षण परिणाम, जो डार्क क्लाउड कवर/पीयर्सिंग लाइन + RSI पर आधारित है सर्वश्रेष्ठ इनपुट पैरामीटर्स सेट को स्ट्रेटेजी टेस्टर के माध्यम से खोजा जा सकता है। MQL5 विज़ार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर का कोड expert_ad_pl_rsi.mq5 में संलग्न है।

2011.02.25
MQL5 विजार्ड: Dark Cloud Cover/Piercing Line और MFI पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: Dark Cloud Cover/Piercing Line और MFI पर आधारित ट्रेड सिग्नल

MQL5 विजार्ड की मदद से आप तैयार-निर्मित Expert Advisors बना सकते हैं। यह आपको अपने ट्रेड आइडियाज को जल्दी से चेक करने की सुविधा देता है। बस आपको अपनी खुद की ट्रेडिंग सिग्नल क्लास बनाने की जरूरत है। इस क्लास की संरचना और उदाहरण MQL5 विजार्ड: ट्रेडिंग सिग्नल्स का मॉड्यूल कैसे बनाएं में मिलेंगे। आसान शब्दों में कहें तो, ट्रेडिंग सिग्नल्स की क्लास को CExpertSignal से लिया गया है। इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने अनुसार ओवरराइड करना होगा। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग स्ट्रेटेजीज को समझाया गया है। हम यहां पर रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान देंगे, जिन्हें Stochastic, CCI, MFI और RSI ऑस्सीलेटर द्वारा कन्फर्म किया गया है। सर्वश्रेष्ठ तरीका यह है कि आप कैंडलस्टिक पैटर्न्स की पहचान के लिए एक अलग क्लास बनाएं, जो CExpertSignal से निकाली जाए। कैंडलस्टिक पैटर्न्स द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, CCandlePattern से निकाली गई क्लास को लिखना काफी है और उसमें आवश्यक फीचर्स (जैसे, ऑस्सीलेटर द्वारा पुष्टि) जोड़ना होगा। 1. "Dark Cloud Cover" और "Piercing Line" रिवर्सल कैंडलस्टिक पैटर्न 1.1. Dark Cloud Cover यह एक बेयरिश कैंडलस्टिक रिवर्सल है जो अपट्रेंड के अंत में होता है। पहले दिन एक लंबी सफेद कैंडल बनती है और दूसरे दिन एक गैप अप बनता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के मध्य बिंदु से नीचे होता है। Fig. 1. "Dark Cloud Cover" कैंडलस्टिक पैटर्न "Dark Cloud Cover" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में की जाती है। //+------------------------------------------------------------------+ //| "Dark Cloud Cover" कैंडलस्टिक पैटर्न की पहचान करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //--- Dark Cloud Cover &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; // (लंबी सफेद) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (पिछली बॉडी के भीतर क्लोज) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; // (अपट्रेंड) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (नए हाई पर ओपन) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} "Dark Cloud Cover" कैंडलस्टिक पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग किया जाता है। 1.2. Piercing Line दूसरे दिन का गैप डाउन डाउनट्रेंड को बढ़ाता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन की बॉडी के मध्य बिंदु से ऊपर होता है। इससे यह संकेत मिलता है कि एक बॉटम बन सकता है। कैंडलस्टिक चार्ट्स का प्रयोग करने पर यह प्राइस एक्शन अधिक स्पष्ट होता है। Fig. 2. "Piercing Line" कैंडलस्टिक पैटर्न "Piercing Line" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में की जाती है। //+------------------------------------------------------------------+ //| "Piercing Line" कैंडलस्टिक पैटर्न की पहचान करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //--- Piercing Line &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; // (लंबी सफेद) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; // (लंबा काला) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; //&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // (पिछली बॉडी के भीतर क्लोज) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; // (डाउनट्रेंड) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (पिछले लो से कम ओपन) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} "Piercing Line" कैंडलस्टिक पैटर्न की पहचान के लिए CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) मेथड का उपयोग किया जाता है। 2. MFI इंडिकेटर द्वारा कन्फर्म किए गए ट्रेड सिग्नल लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेड सिग्नल्स को MFI इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए। MFI इंडिकेटर का मान 40 से कम (लॉन्ग पोजिशन के लिए) या 60 से अधिक (शॉर्ट पोजिशन के लिए) होना चाहिए। खुली स्थिति का क्लोज MFI इंडिकेटर के मान पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है: MFI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 70 और शॉर्ट पोजिशन के लिए 30) को प्राप्त किया है। यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब MFI इंडिकेटर निम्नलिखित स्तरों पर पहुँचता है: लॉन्ग पोजिशन के लिए 30 और शॉर्ट पोजिशन के लिए 70) Fig. 3. "Dark Cloud Cover" पैटर्न, MFI इंडिकेटर द्वारा कन्फर्म किया गया int CDC_PL_MFI::LongCondition() - लॉन्ग पोजिशन खोलने की शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजिशन को क्लोज करता है (40 लौटाता है); int CDC_PL_MFI::ShortCondition() - शॉर्ट पोजिशन खोलने की शर्तों की जांच करता है (80 लौटाता है) और लॉन्ग पोजिशन को क्लोज करता है (40)। 2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन को बंद करना "Morning Star" पैटर्न की पहचान MFI इंडिकेटर द्वारा की जानी चाहिए: MFi(1)&lt;40 (अंतिम पूर्ण बार का MFI इंडिकेटर का मान 40 से कम होना चाहिए)। शॉर्ट पोजिशन को तब बंद किया जाना चाहिए जब MFI इंडिकेटर महत्वपूर्ण स्तरों (70 या 30) को पार कर गया है। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) मार्केट प्रवेश (लॉन्ग पोजिशन खोलना, परिणाम=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2) मार्केट निकासी (शॉर्ट पोजिशन बंद करना, परिणाम=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CDC_PL_MFI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर की कार्य विधि निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की शर्तों की जांच करता है &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- लॉन्ग पोजिशन खोलने की शर्तों की जांच //--- Piercing Line पैटर्न और MFI&lt;40 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (MFI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- शॉर्ट पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (उपर 30, उपर 70) की सिग्नललाइन क्रॉसओवर &nbsp;&nbsp;if(((MFI(1)&gt;30) &amp;&amp; (MFI(2)&lt;30)) || ((MFI(1)&gt;70) &amp;&amp; (MFI(2)&lt;70))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएँ &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन को बंद करना "Dark Cloud Cover" पैटर्न की पहचान MFI इंडिकेटर द्वारा की जानी चाहिए: MFI(1)&gt;60 (अंतिम पूर्ण बार का MFI इंडिकेटर का मान 60 से अधिक होना चाहिए)। लॉन्ग पोजिशन को तब बंद किया जाना चाहिए जब MFI इंडिकेटर महत्वपूर्ण स्तरों (70 या 30) को पार कर गया है। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की शर्तों की जांच करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) मार्केट प्रवेश (शॉर्ट पोजिशन खोलना, परिणाम=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) मार्केट निकासी (लॉन्ग पोजिशन बंद करना, परिणाम=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CDC_PL_MFI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर की कार्य विधि निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की शर्तों की जांच करता है &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- शॉर्ट पोजिशन खोलने की शर्तों की जांच //--- Dark Cloud Cover पैटर्न और MFI&gt;60 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (MFI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- लॉन्ग पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (उपर 70, नीचे 30) की सिग्नललाइन क्रॉसओवर &nbsp;&nbsp;if(((MFI(1)&gt;70) &amp;&amp; (MFI(2)&lt;70)) || ((MFI(1)&lt;30) &amp;&amp; (MFI(2)&gt;30))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएँ &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. MQL5 विजार्ड का उपयोग करके Expert Advisor बनाना CDC_PL_MFI क्लास स्टैण्डर्ड लाइब्रेरी क्लासेज में शामिल नहीं है, इसका उपयोग करने के लिए, adc_pl_mfi.mqh फाइल डाउनलोड करें और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सेव करें। वही acandlepatterns.mqh फाइल के साथ भी करें। आप इसे MQL5 विजार्ड में MetaEditor के रिस्टार्ट के बाद उपयोग कर सकते हैं। Expert Advisor बनाने के लिए MQL5 विजार्ड लॉन्च करें: Fig. 4. MQL5 विजार्ड का उपयोग करके Expert Advisor बनाना Expert Advisor का नाम निर्धारित करें: Fig. 5. Expert Advisor की सामान्य विशेषताएँ इसके बाद, हमें उपयोग किए गए ट्रेड सिग्नल मॉड्यूल का चयन करना होगा। Fig. 6. Expert Advisor की सिग्नल विशेषताएँ हमारे मामले में हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग करते हैं। "Dark Cloud Cover/Piercing Line द्वारा कन्फर्म किए गए सिग्नल" ट्रेड सिग्नल मॉड्यूल जोड़ना: Fig. 7. Expert Advisor की सिग्नल विशेषताएँ ट्रेड सिग्नल मॉड्यूल जोड़ा गया: Fig. 8. Expert Advisor की सिग्नल विशेषताएँ आप कोई भी ट्रेलिंग विशेषताएँ चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे: Fig. 9. Expert Advisor की ट्रेलिंग विशेषताएँ पैसों के प्रबंधन की विशेषताओं के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. Expert Advisor की पैसे प्रबंधन विशेषताएँ "फिनिश" बटन दबाने पर, हमें जनरेटेड Expert Advisor का कोड मिलेगा, जो Expert_ADC_PL_MFI.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सेव होगा। जनरेटेड Expert Advisor के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // ओपन के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // क्लोज के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // स्टॉप लॉस लेवल (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp; // टेक प्रॉफिट लेवल (पॉइंट्स में) इसे बदलकर होना चाहिए: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // ओपन के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // क्लोज के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// स्टॉप लॉस लेवल (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// टेक प्रॉफिट लेवल (पॉइंट्स में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर ओपन और क्लोज के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशोल्ड के फिक्स्ड मान निर्दिष्ट किए हैं: पोजिशन खोलना: 80; पोजिशन बंद करना: 40; MQL5 विजार्ड द्वारा जनरेटेड Expert Advisor "वोट्स" का उपयोग करके पोजिशन खोलता और बंद करता है। मुख्य मॉड्यूल का वोट (कंटेनर के रूप में, इसमें सभी जोड़े गए मॉड्यूल शामिल हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट के परिणामों का भी "वोट्स" की औसत में उपयोग होता है। हमारे मामले में, मुख्य मॉड्यूल + 1 ट्रेड सिग्नल मॉड्यूल है, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस कारण थ्रेशोल्डOpen और थ्रेशोल्डClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट करना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर का मान 0 पर सेट किया गया है, इसका अर्थ है कि पोजिशन केवल तब बंद की जाएगी जब क्लोजिंग शर्तें सही हों। 2.4. इतिहास बैकटेस्टिंग परिणाम Expert Advisor के बैकटेस्टिंग पर विचार करें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11)। Expert Advisor बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया). Fig. 11. "Dark Cloud Cover/Piercing Line + MFI" पर आधारित Expert Advisor के परीक्षण परिणाम इनपुट पैरामीटर का सबसे अच्छा सेट स्ट्रेटजी टेस्टर के माध्यम से पाया जा सकता है। MQL5 विजार्ड द्वारा बनाए गए Expert Advisor का कोड expert_adc_pl_mfi.mq5 में संलग्न किया गया है।

2011.02.25
MQL5 विजार्ड: डार्क क्लाउड कवर/पियर्सिंग लाइन और CCI पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: डार्क क्लाउड कवर/पियर्सिंग लाइन और CCI पर आधारित ट्रेड सिग्नल

MQL5 विजार्ड आपको तैयार किए गए एक्सपर्ट एडवाइजर्स बनाने की सुविधा देता है, जो स्टैंडर्ड लाइब्रेरी क्लासेस पर आधारित होते हैं जो क्लाइंट टर्मिनल के साथ आते हैं (डिटेल्स के लिए MQL5 विजार्ड में तैयार एक्सपर्ट एडवाइजर्स बनाने के लिए देखें)। यह आपके ट्रेड आइडियाज को जल्दी चेक करने की अनुमति देता है, आपको बस अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण MQL5 विजार्ड: ट्रेडिंग सिग्नल का मॉड्यूल कैसे बनाएं में मिल सकते हैं। आइडिया यह है कि ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से विरासत में ली जाती है, इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने तरीके से ओवरराइड करना होता है। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियाँ बताई गई हैं, हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर्स द्वारा पुष्टि की गई हैं। सबसे अच्छा तरीका यह है कि एक अलग क्लास बनाएं, जो CExpertSignal से विरासत में हो, कैंडलस्टिक पैटर्न्स के गठन की जांच करने के लिए। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, आवश्यक विशेषताएँ (जैसे, ऑस्सीलेटर्स द्वारा पुष्टि) के साथ CCandlePattern से विरासत में ली गई क्लास लिखना पर्याप्त है। यहाँ हम "डार्क क्लाउड कवर/पियर्सिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न पर आधारित सिग्नल्स पर विचार करेंगे, जो CCI इंडिकेटर द्वारा पुष्टि की गई हैं। ट्रेड सिग्नल्स का मॉड्यूल CCandlePattern क्लास पर आधारित है, यह कैंडलस्टिक पैटर्न्स के साथ ट्रेड सिग्नल्स बनाने के लिए इसके उपयोग का एक सरल उदाहरण है। 1. "डार्क क्लाउड कवर" और "पियर्सिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न 1.1. डार्क क्लाउड कवर यह एक बेयरिश कैंडलस्टिक रिवर्सल है जो अप ट्रेंड के अंत में होता है। पहले दिन एक लंबा सफेद कैंडलस्टिक बनता है और दूसरे दिन एक गैप अप बनता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के मध्य बिंदु से नीचे होता है। Fig. 1. "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न "डार्क क्लाउड कवर" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में CCandlePattern क्लास का उपयोग किया गया है: //+------------------------------------------------------------------+ //| "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //--- डार्क क्लाउड कवर &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; // (लंबा सफेद) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (पिछले बॉडी के भीतर क्लोज) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; // (अप ट्रेंड) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (नई उच्चता पर ओपन) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है। 1.2. पियर्सिंग लाइन दूसरे दिन का गैप डाउन डाउनट्रेंड को जारी रखता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के बॉडी के मध्य बिंदु के ऊपर होता है। यह भालुओं को बताता है कि एक बॉटम बन सकता है। यह प्राइस एक्शन बार चार्ट्स की तुलना में कैंडलस्टिक चार्ट्स पर अधिक स्पष्ट है। दूसरे दिन के क्लोज का पहले दिन के बॉडी में जितना अधिक प्रवेश होगा, रिवर्सल सिग्नल की सफलता की संभावना उतनी ही अधिक होगी। Fig. 2. "पियर्सिंग लाइन" कैंडलस्टिक पैटर्न "पियर्सिंग लाइन" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में CCandlePattern क्लास का उपयोग किया गया है: //+------------------------------------------------------------------+ //| "पियर्सिंग लाइन" कैंडलस्टिक पैटर्न की पहचान करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //--- पियर्सिंग लाइन &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; // (लंबा सफेद) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; // (लंबा काला) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; //&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // (पिछले बॉडी के भीतर क्लोज) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; // (डाउनट्रेंड) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (पिछले लो से नीचे ओपन) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) मेथड का उपयोग "पियर्सिंग लाइन" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है। 2. CCI इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल्स लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेडिंग सिग्नल्स को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तरों (-50 लॉन्ग पोजिशन के लिए और 50 शॉर्ट पोजिशन के लिए) से अधिक/कम होना चाहिए। खुले हुए पोजिशन का क्लोज CCI के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है: यदि CCI लाइन ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 80 और शॉर्ट पोजिशन के लिए -80) को छू लिया है। यदि रिवर्स सिग्नल की पुष्टि नहीं होती (जब CCI निम्नलिखित स्तरों को प्राप्त करता है: -80 लॉन्ग पोजिशन के लिए और 80 शॉर्ट पोजिशन के लिए)। Fig. 3. "डार्क क्लाउड कवर" पैटर्न, CCI इंडिकेटर द्वारा पुष्टि की गई int CDC_PL_CCI::LongCondition() - लॉन्ग पोजिशन खोलने की स्थितियों की जांच करता है (80 लौटाता है) और शॉर्ट पोजिशन को क्लोज करता है (40 लौटाता है); int CDC_PL_CCI::ShortCondition() - शॉर्ट पोजिशन खोलने की स्थितियों की जांच करता है (80 लौटाता है) और लॉन्ग पोजिशन को क्लोज करता है (40 लौटाता है). 2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन क्लोज करना "पियर्सिंग लाइन" पैटर्न की पुष्टि CCI इंडिकेटर द्वारा की जानी चाहिए: CCI(1)&lt;-50 (अंतिम पूर्ण बार का CCI मान -50 से कम होना चाहिए)। यदि CCI इंडिकेटर ने महत्वपूर्ण स्तर -80 को ऊपर की ओर पार किया है या महत्वपूर्ण स्तर 80 को नीचे की ओर पार किया है, तो शॉर्ट पोजिशन को क्लोज किया जाना चाहिए। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की स्थितियों की जांच करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) मार्केट में प्रवेश (लॉन्ग पोजिशन खोलें, परिणाम=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2) मार्केट से निकासी (शॉर्ट पोजिशन क्लोज करें, परिणाम=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CDC_PL_CCI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड स्थिति की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड स्थिति की जांच करता है &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- लॉन्ग पोजिशन खोलने की स्थितियों की जांच //--- पियर्सिंग लाइन पैटर्न और CCI&lt;-50 &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (CCI(1)&lt;-50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- शॉर्ट पोजिशन को क्लोज करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (डाउनवर्ड -80, डाउनवर्ड -80) का सिग्नल लाइन क्रॉसओवर &nbsp;&nbsp; if(((CCI(1)&gt;-80) &amp;&amp; (CCI(2)&lt;-80)) || ((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन क्लोज करना "डार्क क्लाउड कवर" पैटर्न की पुष्टि CCI इंडिकेटर द्वारा की जानी चाहिए: CCI(1)&gt;50 (अंतिम पूर्ण बार का CCI मान 50 से अधिक होना चाहिए)। यदि CCI इंडिकेटर ने -80 या 80 स्तरों को नीचे की ओर पार किया है, तो लॉन्ग पोजिशन को क्लोज किया जाना चाहिए। //+------------------------------------------------------------------+ //| मार्केट में प्रवेश और निकासी की स्थितियों की जांच करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) मार्केट में प्रवेश (शॉर्ट पोजिशन खोलें, परिणाम=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) मार्केट से निकासी (लॉन्ग पोजिशन क्लोज करें, परिणाम=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CDC_PL_CCI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड स्थिति की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड स्थिति की जांच करता है &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- शॉर्ट पोजिशन खोलने की स्थितियों की जांच //--- डार्क क्लाउड कवर पैटर्न और CCI&gt;50 &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (CCI(1)&gt;50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- लॉन्ग पोजिशन को क्लोज करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (डाउनवर्ड -80, डाउनवर्ड 80) का सिग्नल लाइन क्रॉसओवर &nbsp;&nbsp; if(((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80)) || ((CCI(1)&lt;-80) &amp;&amp; (CCI(2)&gt;-80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CDC_PL_CCI क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए, acdc_pl_cci.mqh फ़ाइल डाउनलोड करना आवश्यक है (संलग्नकों में देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजें। उसी तरह candlepatterns.mqh फ़ाइल के साथ भी करना चाहिए। आप इसे MQL5 विजार्ड में MetaEditor के पुनरारंभ के बाद उपयोग कर सकते हैं। एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें: Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: Fig. 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएं इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल्स के मॉड्यूल का चयन करना है। Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुण हमारे मामले में हम केवल एक ट्रेड सिग्नल्स मॉड्यूल का उपयोग करते हैं। "डार्क क्लाउड कवर/पियर्सिंग लाइन के आधार पर CCI द्वारा पुष्टि किए गए सिग्नल्स" ट्रेडिंग सिग्नल्स का मॉड्यूल जोड़ते हुए: Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुण व्यापार सिग्नल्स का मॉड्यूल जोड़ा गया: Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुण आप किसी भी ट्रेलिंग विशेषताओं का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे: Fig. 9. एक्सपर्ट एडवाइजर की ट्रेलिंग विशेषताएँ मनी मैनेजमेंट विशेषताओं के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट विशेषताएँ "फिनिश" बटन दबाकर, हमें जनरेट किए गए एक्सपर्ट एडवाइजर का कोड प्राप्त होगा, जो Expert_ADC_PL_CCI.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। जनरेट किए गए एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // क्लोज करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // स्टॉप लॉस लेवल (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // टेक प्रॉफिट लेवल (पॉइंट्स में) इसे बदलकर होना चाहिए: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // क्लोज करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0;&nbsp;&nbsp;&nbsp;&nbsp;// स्टॉप लॉस लेवल (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// टेक प्रॉफिट लेवल (पॉइंट्स में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको ओपन और क्लोज करने के लिए थ्रेशोल्ड लेवल निर्दिष्ट करने की अनुमति देते हैं। ट्रेड सिग्नल्स क्लास के LongCondition() और ShortCondition() मेथड्स के कोड में हमने ओपन और क्लोज करने के लिए थ्रेशोल्ड के फिक्स्ड मान निर्दिष्ट किए हैं: ओपन पोजिशन: 80; क्लोज पोजिशन: 40. MQL5 विजार्ड द्वारा जनरेट किया गया एक्सपर्ट एडवाइजर ट्रेड सिग्नल्स के मॉड्यूल से "वोट" का उपयोग करके पोजिशन खोलता और क्लोज करता है। मुख्य मॉड्यूल का वोट (कंटेनर के रूप में, इसमें सभी जोड़े गए मॉड्यूल शामिल होते हैं) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट का परिणाम भी "वोट" के औसत में उपयोग किया जाता है। हमारे मामले में, हमारे पास है: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना होगा। इस तथ्य के कारण ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट होते हैं, इसका मतलब है कि पोजिशन केवल तब क्लोज की जाएगी जब क्लोजिंग की स्थितियाँ सही हों। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर का बैकटेस्टिंग ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16) पर विचार करें। एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट के साथ ट्रेडिंग, 0.1) का उपयोग किया, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं). Fig. 11. "डार्क क्लाउड कवर/पियर्सिंग लाइन + CCI" के आधार पर एक्सपर्ट एडवाइजर के परीक्षण परिणाम बेस्ट सेट के इनपुट पैरामीटर को स्ट्रेटेजी टेस्टर का उपयोग करके पाया जा सकता है। MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर का कोड expert_adc_pl_cci.mq5 में संलग्न है।

2011.02.25
MQL5 विजार्ड: डार्क क्लाउड कवर/पीयरसिंग लाइन और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: डार्क क्लाउड कवर/पीयरसिंग लाइन और स्टोकास्टिक पर आधारित ट्रेड सिग्नल

MQL5 विजार्ड का उपयोग करके आप तैयार किए गए एक्सपर्ट एडवाइज़र्स (EAs) बना सकते हैं, जो मेटाट्रेडर 5 के साथ आने वाले स्टैंडर्ड लाइब्रेरी क्लासेज पर आधारित होते हैं। इससे आप अपने ट्रेड आइडियाज को जल्दी से चेक कर सकते हैं, बस आपको अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण के लिए, आप MQL5 विजार्ड: ट्रेडिंग सिग्नल का मॉड्यूल कैसे बनाएं लेख देख सकते हैं। आसान शब्दों में, ट्रेडिंग सिग्नल की क्लास CExpertSignal से derivé की जाती है। इसके बाद, आपको अपनी खुद की LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होता है। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग रणनीतियों पर चर्चा की गई है। हम रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI, और RSI ऑस्सीलेटर द्वारा पुष्टि की जाती है। सर्वश्रेष्ठ तरीका यह है कि आप एक अलग क्लास बनाएं, जो CExpertSignal से derivé हो ताकि कैंडलस्टिक पैटर्न के निर्माण की जांच की जा सके। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल की पुष्टि करने के लिए, आपको एक क्लास लिखने की जरूरत है, जो CCandlePattern से derivé हो और उसमें आवश्यक विशेषताएँ (जैसे ऑस्सीलेटर द्वारा पुष्टि) जोड़ें। 1. "डार्क क्लाउड कवर" और "पीयरसिंग लाइन" रिवर्सल कैंडलस्टिक पैटर्न 1.1. डार्क क्लाउड कवर यह एक बेयरिश कैंडलस्टिक रिवर्सल है, जो अपट्रेंड के अंत में होता है। पहले दिन एक लंबी सफेद कैंडलस्टिक बनती है और दूसरे दिन एक गैप अप बनता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के मध्य बिंदु के नीचे होता है। डार्क क्लाउड कवर पैटर्न "डार्क क्लाउड कवर" पैटर्न की पहचान CheckPatternDarkCloudCover() मेथड में CCandlePattern क्लास में की गई है: //+------------------------------------------------------------------+ //| "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //---डार्क क्लाउड कवर &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; // (लंबी सफेद) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (पिछले बॉडी में क्लोज) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; // (अपट्रेंड) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (नई उच्च पर ओपन) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) मेथड का उपयोग "डार्क क्लाउड कवर" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 1.2. पीयरसिंग लाइन दूसरे दिन का गैप डाउन डाउनट्रेंड को मजबूत करता है। हालाँकि, दूसरे दिन का क्लोज पहले दिन के बॉडी के मध्य बिंदु के ऊपर होता है। यह भालुओं को संकेत देता है कि एक बॉटम बन सकता है। यह प्राइस एक्शन बार चार्ट्स के मुकाबले कैंडलस्टिक चार्ट्स में बहुत स्पष्ट होता है। दूसरे दिन के क्लोज का पहले दिन के बॉडी में अधिक गहराई से प्रवेश, रिवर्सल सिग्नल की सफलता की संभावना को बढ़ाता है। पीयरसिंग लाइन कैंडलस्टिक पैटर्न "पीयरसिंग लाइन" पैटर्न की पहचान CheckPatternPiercingLine() मेथड में CCandlePattern क्लास में की गई है: //+------------------------------------------------------------------+ //| "पीयरसिंग लाइन" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //---पीयरसिंग लाइन &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; // (लंबी सफेद) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; // (लंबी काली) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // (पिछले बॉडी में क्लोज) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; // (डाउनट्रेंड) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (पिछले लो से कम ओपन) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) मेथड का उपयोग "पीयरसिंग लाइन" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 2. ट्रेड सिग्नल, जो स्टोकास्टिक ऑस्सीलेटर द्वारा पुष्टि किए गए हैं लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेड सिग्नल को स्टोकास्टिक ऑस्सीलेटर द्वारा पुष्टि की जानी चाहिए। सिग्नल %D लाइन को संबंधित महत्वपूर्ण स्तर (30 या 70) से अधिक/कम होना चाहिए। खुली पोजिशन को %D इंडिकेटर के मूल्यों के आधार पर बंद किया जाता है। यह 2 मामलों में किया जा सकता है: अगर %D लाइन विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजिशन के लिए 80 और शॉर्ट पोजिशन के लिए 20) तक पहुँच गई है। अगर रिवर्स सिग्नल की पुष्टि नहीं होती (जब %D लाइन निम्नलिखित स्तरों तक पहुँचती है: लॉन्ग पोजिशन के लिए 20 और शॉर्ट पोजिशन के लिए 80) डार्क क्लाउड कवर पैटर्न, स्टोकास्टिक द्वारा पुष्टि की गई 2.1. लॉन्ग पोजिशन खोलें/शॉर्ट पोजिशन बंद करें "पीयरसिंग लाइन" पैटर्न का निर्माण स्टोकास्टिक ऑस्सीलेटर द्वारा पुष्टि की जानी चाहिए: StochSignal(1)&lt;30 (स्टोकास्टिक इंडिकेटर की अंतिम पूर्ण बार की सिग्नल लाइन का मान 30 से कम होना चाहिए)। शॉर्ट पोजिशन को तब बंद किया जाना चाहिए जब स्टोकास्टिक ऑस्सीलेटर की सिग्नल लाइन ने 20 या 80 स्तरों को ऊपर की ओर पार किया हो। //+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की स्थिति की जांच करता है | //| 1) मार्केट में प्रवेश (लॉन्ग पोजिशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (शॉर्ट पोजिशन बंद करें, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_Stoch::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइज़र कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की स्थितियों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की स्थिति की जांच करता है &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- लॉन्ग पोजिशन खोलने की स्थितियों की जांच //--- "पीयरसिंग लाइन" पैटर्न और सिग्नल लाइन&lt;30 का निर्माण &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (StochSignal(1)&lt;30)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- शॉर्ट पोजिशन बंद करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (नीचे 20, ऊपर 80) के क्रॉसओवर सिग्नल लाइन &nbsp;&nbsp; if((((StochSignal(1)&gt;20) &amp;&amp; (StochSignal(2)&lt;20)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&gt;80) &amp;&amp; (StochSignal(2)&lt;80)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. शॉर्ट पोजिशन खोलें/लॉन्ग पोजिशन बंद करें "डार्क क्लाउड कवर" पैटर्न का निर्माण स्टोकास्टिक ऑस्सीलेटर द्वारा पुष्टि की जानी चाहिए: StochSignal(1)&gt;70 (स्टोकास्टिक इंडिकेटर की अंतिम पूर्ण बार की सिग्नल लाइन का मान 70 से अधिक होना चाहिए)। लॉन्ग पोजिशन को तब बंद किया जाना चाहिए जब स्टोकास्टिक ऑस्सीलेटर की सिग्नल लाइन ने 80 या 20 स्तरों को नीचे की ओर पार किया हो। //+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की स्थिति की जांच करता है | //| 1) मार्केट में प्रवेश (शॉर्ट पोजिशन खोलें, परिणाम=80) | //| 2) मार्केट से निकासी (लॉन्ग पोजिशन बंद करें, परिणाम=40) | //+------------------------------------------------------------------+ int CDC_PL_Stoch::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइज़र कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की स्थितियों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की स्थिति की जांच करता है &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- शॉर्ट पोजिशन खोलने की स्थितियों की जांच //--- "डार्क क्लाउड कवर" पैटर्न और सिग्नल लाइन&gt;70 का निर्माण &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (StochSignal(1)&gt;70)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- लॉन्ग पोजिशन बंद करने की स्थितियों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (नीचे 80, ऊपर 20) के क्रॉसओवर सिग्नल लाइन &nbsp;&nbsp; if((((StochSignal(1)&lt;80) &amp;&amp; (StochSignal(2)&gt;80)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&lt;20) &amp;&amp; (StochSignal(2)&gt;20)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइज़र बनाना CDC_PL_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लासेज में शामिल नहीं है, इसका उपयोग करने के लिए, adc_pl_stoch.mqh फ़ाइल डाउनलोड करनी होगी (संलग्नकों में देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। वही candlepatterns.mqh फ़ाइल के साथ किया जाना चाहिए। आप इसे MQL5 विजार्ड में MetaEditor को पुनः चालू करने के बाद उपयोग कर सकते हैं। एक्सपर्ट एडवाइज़र बनाने के लिए MQL5 विजार्ड लॉन्च करें: MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइज़र बनाना आइए एक्सपर्ट एडवाइज़र का नाम निर्धारित करें: एक्सपर्ट एडवाइज़र की सामान्य विशेषताएँ इसके बाद हमें उपयोग किए गए ट्रेड सिग्नल के मॉड्यूल का चयन करना होगा। एक्सपर्ट एडवाइज़र के सिग्नल विशेषताएँ हमारे मामले में हम केवल एक ट्रेड सिग्नल का मॉड्यूल उपयोग करते हैं। "डार्क क्लाउड कवर/पीयरसिंग लाइन द्वारा पुष्टि किए गए सिग्नल" ट्रेडिंग सिग्नल के मॉड्यूल को जोड़ना: एक्सपर्ट एडवाइज़र के सिग्नल विशेषताएँ ट्रेड सिग्नल का मॉड्यूल जोड़ा गया: एक्सपर्ट एडवाइज़र के सिग्नल विशेषताएँ आप किसी भी ट्रेलिंग विशेषताओं का चयन कर सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का उपयोग करेंगे: एक्सपर्ट एडवाइज़र के पैसे प्रबंधन की विशेषताएँ पैसे प्रबंधन की विशेषताओं के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: एक्सपर्ट एडवाइज़र के पैसे प्रबंधन की विशेषताएँ "फिनिश" बटन दबाने पर, हमें उत्पन्न एक्सपर्ट एडवाइज़र का कोड प्राप्त होगा, जो Expert_ADC_PL_Stoch.mq5 में स्थित होगा, यह terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। उत्पन्न एक्सपर्ट एडवाइज़र के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // ओपन करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // स्टॉप लॉस स्तर (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp;&nbsp; // टेक प्रॉफिट स्तर (पॉइंट्स में) इसे निम्नलिखित में बदलना चाहिए: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // ओपन करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// स्टॉप लॉस स्तर (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// टेक प्रॉफिट स्तर (पॉइंट्स में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको ओपन और क्लोज के लिए थ्रेशोल्ड स्तर निर्धारित करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशोल्ड के फिक्स्ड मान निर्दिष्ट किए हैं: ओपन पोजिशन: 80; क्लोज पोजिशन: 40. MQL5 विजार्ड द्वारा जनरेट किया गया एक्सपर्ट एडवाइज़र "वोट" का उपयोग करके पोजिशन खोलता और बंद करता है। प्रमुख मॉड्यूल का वोट (चूंकि यह सभी जोड़े गए मॉड्यूल का कंटेनर है) भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। प्रमुख मॉड्यूल के वोट के परिणाम "वोट" के औसत में भी उपयोग किए जाते हैं। हमारे मामले में हमारे पास हैं: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल का मॉड्यूल, इसलिए हमें थ्रेशोल्ड मान सेट करते समय इस तथ्य को ध्यान में रखना चाहिए। इस तथ्य के कारण ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर का मान 0 पर सेट किया गया है, इसका मतलब है कि पोजिशन केवल तभी बंद की जाएगी जब बंद होने की स्थितियाँ सही हों। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइज़र का बैकटेस्टिंग करें ऐतिहासिक डेटा पर (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.02.02, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27)। एक्सपर्ट एडवाइज़र बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया). डार्क क्लाउड कवर/पीयरसिंग लाइन + स्टोकास्टिक पर आधारित एक्सपर्ट एडवाइज़र के परीक्षण परिणाम उत्तम इनपुट पैरामीटर सेट को स्ट्रेटेजी टेस्टर का उपयोग करके मेटाट्रेडर 5 क्लाइंट टर्मिनल में खोजा जा सकता है। MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइज़र का कोड expert_adc_pl_stoch.mq5 में संलग्न है।

2011.02.25
MQL5 विजार्ड: 3 ब्लैक क्रो/3 व्हाइट सोल्जर + RSI पर आधारित ट्रेड सिग्नल्स के लिए एक्सपर्ट एडवाइजर
MetaTrader5
MQL5 विजार्ड: 3 ब्लैक क्रो/3 व्हाइट सोल्जर + RSI पर आधारित ट्रेड सिग्नल्स के लिए एक्सपर्ट एडवाइजर

मेटाट्रेडर 5 के MQL5 विजार्ड के जरिए आप तैयार किए गए एक्सपर्ट एडवाइजर्स बना सकते हैं। ये एडवाइजर्स स्टैंडर्ड लाइब्रेरी क्लासेस पर आधारित होते हैं, जो क्लाइंट टर्मिनल के साथ आती हैं। अपने ट्रेड आइडियाज को जल्दी से चेक करने के लिए, बस अपने ट्रेडिंग सिग्नल्स क्लास को बनाना होता है। इसकी संरचना और उदाहरण के लिए देखिए MQL5 विजार्ड: ट्रेडिंग सिग्नल्स का मॉड्यूल कैसे बनाएं।बुनियादी विचार यह है कि ट्रेडिंग सिग्नल्स क्लास को CExpertSignal से निकाला जाता है। फिर, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपने तरीके से ओवरराइड करना होगा।एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग स्ट्रेटेजीज पर चर्चा की गई है। हम रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान केंद्रित करेंगे, जिन्हें स्टोकास्टिक, CCI, MFI, और RSI ऑस्सीलेटरों द्वारा पुष्टि की जाती हैं।सबसे अच्छा तरीका यह है कि आप एक अलग क्लास बनाएं, जो CExpertSignal से निकाली जाए, ताकि कैंडलस्टिक पैटर्न्स की फॉर्मेशन की जांच की जा सके। कैंडलस्टिक पैटर्न्स द्वारा उत्पन्न ट्रेड सिग्नल्स की पुष्टि के लिए, आपको एक क्लास लिखने की आवश्यकता है, जो CCandlePattern से निकाली गई हो और उसमें आवश्यक फीचर्स (जैसे ऑस्सीलेटरों द्वारा पुष्टि) जोड़े जाएं।1. "3 ब्लैक क्रो" और "3 व्हाइट सोल्जर" रिवर्सल कैंडलस्टिक पैटर्न1.1. 3 ब्लैक क्रोयह एक bearish कैंडलस्टिक पैटर्न है, जिसका उपयोग मौजूदा अपट्रेंड के रिवर्सल की भविष्यवाणी करने के लिए किया जाता है। इस पैटर्न में तीन लगातार लंबे-bodied कैंडलस्टिक्स होते हैं, जो पिछले दिन से कम बंद होते हैं, और प्रत्येक सत्र का ओपन पिछले कैंडल के बॉडी के भीतर होता है।Fig. 1. "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न"3 ब्लैक क्रो" पैटर्न की पहचान CCandlePattern क्लास के CheckPatternThreeBlackCrows मेथड में की जाती है।//+------------------------------------------------------------------+ //| "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की पहचान करता है &nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 ब्लैक क्रो &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; // (लॉन्ग ब्लैक) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (लोअर मिडपॉइंट्स) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2)))&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;}CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) मेथड का उपयोग "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।1.2. 3 व्हाइट सोल्जर कैंडलस्टिक पैटर्नयह एक bullish कैंडलस्टिक पैटर्न है, जिसका उपयोग मौजूदा डाउनट्रेंड के रिवर्सल की भविष्यवाणी करने के लिए किया जाता है। इस पैटर्न में तीन लगातार लंबे-bodied कैंडलस्टिक्स होते हैं, जो पिछले दिन से अधिक बंद होते हैं, और प्रत्येक सत्र का ओपन पिछले कैंडल के बॉडी के भीतर होता है। पैटर्न तब तक मान्य होता है जब तक दिन दो का कैंडल पहले दिन की रेंज के ऊपरी आधे हिस्से में खुलता है।Fig. 2. "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्नयहाँ "3 व्हाइट सोल्जर" पैटर्न की पहचान करने का मेथड है://+------------------------------------------------------------------+ //| "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 व्हाइट सोल्जर &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; // लॉन्ग व्हाइट &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;}CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) मेथड का उपयोग "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की पहचान करने के लिए किया जाता है।2. ट्रेड सिग्नल्स, जो RSI इंडिकेटर द्वारा पुष्टि किए जाते हैंलॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेड सिग्नल्स को RSI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। RSI का मान महत्वपूर्ण स्तरों (लॉन्ग पोजीशन के लिए 40 और शॉर्ट पोजीशन के लिए 60) से कम/ज्यादा होना चाहिए।खुले हुए पोजीशन का क्लोजिंग RSI के मानों पर निर्भर करता है। यह 2 मामलों में किया जा सकता है: यदि RSI ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजीशन के लिए 70 और शॉर्ट पोजीशन के लिए 30) को पहुंच लिया है यदि उल्टा सिग्नल की पुष्टि नहीं होती है (जब RSI निम्नलिखित स्तरों पर पहुंचता है: लॉन्ग पोजीशन के लिए 30 और शॉर्ट पोजीशन के लिए 70)Fig. 3. "3 ब्लैक क्रो" पैटर्न, जो स्टोकास्टिक इंडिकेटर द्वारा पुष्टि किया गया हैint CML_RSI::LongCondition() - लंबे पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करता है (40 लौटाता है);int CML_RSI::ShortCondition() - शॉर्ट पोजीशन खोलने के लिए शर्तों की जांच करता है (80 लौटाता है) और लंबे पोजीशन को बंद करता है (40 लौटाता है).2.1. लंबे पोजीशन खोलना/शॉर्ट पोजीशन क्लोज करना"3 व्हाइट सोल्जर" पैटर्न की फॉर्मेशन को RSI इंडिकेटर द्वारा पुष्टि करनी चाहिए: RSI(1)&lt;40 (पिछले पूर्ण बार का RSI मान 40 से कम होना चाहिए).शॉर्ट पोजीशन को बंद करना चाहिए यदि RSI इंडिकेटर ने महत्वपूर्ण स्तर 70 या 30 को ऊपर की ओर पार किया है.//+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की शर्तों की जांच करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) बाजार में प्रवेश (लंबी पोजीशन खोलना, परिणाम=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2) बाजार से निकासी (शॉर्ट पोजीशन बंद करना, परिणाम=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CBC_WS_RSI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड की शर्तों की जांच करता है &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- लंबे पोजीशन खोलने के लिए शर्तों की जांच //--- "3 व्हाइट सोल्जर" पैटर्न की फॉर्मेशन और RSI&lt;30 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (RSI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- शॉर्ट पोजीशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (ऊपर 30, ऊपर 70) का सिग्नल लाइन क्रॉसओवर &nbsp;&nbsp;if(((RSI(1)&gt;30) &amp;&amp; (RSI(2)&lt;30)) || ((RSI(1)&gt;70) &amp;&amp; (RSI(2)&lt;70))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;}2.2. शॉर्ट पोजीशन खोलना/लंबी पोजिशन क्लोज करना"3 ब्लैक क्रो" पैटर्न को RSI इंडिकेटर द्वारा पुष्टि करनी चाहिए: RSI(1)&gt;60 (पिछले पूर्ण बार का RSI मान 60 से अधिक होना चाहिए).लॉन्ग पोजिशन को बंद करना चाहिए यदि RSI इंडिकेटर ने महत्वपूर्ण स्तर 70 या 30 को नीचे की ओर पार किया है.//+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की शर्तों की जांच करता है&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) बाजार में प्रवेश (शॉर्ट पोजीशन खोलना, परिणाम=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) बाजार से निकासी (लंबी पोजीशन बंद करना, परिणाम=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CBC_WS_RSI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की शर्तों की जांच करता है //--- idx=1 - इस मामले में EA केवल समाचार बार पर ट्रेड की शर्तों की जांच करता है &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- शॉर्ट पोजीशन खोलने की शर्तों की जांच //--- "3 ब्लैक क्रो" पैटर्न की फॉर्मेशन और RSI&gt;60 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (RSI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- लंबी पोजिशन को बंद करने की शर्तों की जांच //--- ओवरबॉट/ओवरसोल्ड स्तरों (नीचे 70, नीचे 30) का सिग्नल लाइन क्रॉसओवर &nbsp;&nbsp; if(((RSI(1)&lt;70) &amp;&amp; (RSI(2)&gt;70)) || ((RSI(1)&lt;30) &amp;&amp; (RSI(2)&gt;30))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;}2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनानाCML_RSI क्लास स्टैंडर्ड लाइब्रेरी क्लासेस में शामिल नहीं है, इसे उपयोग करने के लिए acml_rsi.mqh फ़ाइल डाउनलोड करनी होगी (आवश्यक फाइलें देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। वही प्रक्रिया candlepatterns.mqh फ़ाइल के लिए भी करनी होगी। आप इसे MQL5 विजार्ड में उपयोग कर सकते हैं, जब आप मेटा-एडिटर को रीस्टार्ट करेंगे।एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड को लॉन्च करें:Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनानाआइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें:Fig. 5. एक्सपर्ट एडवाइजर के सामान्य गुणइसके बाद, हमें उपयोग किए गए ट्रेड सिग्नल्स के मॉड्यूल का चयन करना होगा।Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल गुणहमारे मामले में हम केवल एक ट्रेड सिग्नल्स का मॉड्यूल उपयोग कर रहे हैं।"3 ब्लैक क्रो/3 व्हाइट सोल्जर" ट्रेडिंग सिग्नल्स के मॉड्यूल को जोड़ना:Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल गुणट्रेड सिग्नल्स का मॉड्यूल जोड़ा गया:Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल गुणआप कोई भी ट्रेलिंग गुण चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का चयन करेंगे:Fig. 9. एक्सपर्ट एडवाइजर के ट्रेलिंग गुणपैसे प्रबंधन के गुणों के संदर्भ में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे:Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन गुण"फिनिश" बटन दबाने से, हमें उत्पन्न एक्सपर्ट एडवाइजर का कोड मिलेगा, जो Expert_ABC_WS_RSI.mq5 में स्थित होगा, इसे terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा।उत्पन्न एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर://--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील को निष्पादित करने के लिए मूल्य स्तर input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // स्टॉप लॉस स्तर (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // टेक प्रॉफिट स्तर (पॉइंट्स में)इसे बदलकर बनाना चाहिए: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // डील को निष्पादित करने के लिए मूल्य स्तर input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// स्टॉप लॉस स्तर (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// टेक प्रॉफिट स्तर (पॉइंट्स में)Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको पोजिशन खोलने और बंद करने के लिए थ्रेशोल्ड स्तर निर्धारित करने की अनुमति देते हैं।LongCondition() और ShortCondition() मेथड्स की कोड में हमने थ्रेशोल्ड के निश्चित मान निर्धारित किए हैं:पोजिशन खोलना: 80;पोजिशन बंद करना: 40.MQL5 विजार्ड द्वारा उत्पन्न एक्सपर्ट एडवाइजर "ट्रेड सिग्नल्स के मॉड्यूल" से "वोट्स" का उपयोग करके पोजिशन खोलता और बंद करता है। मुख्य मॉड्यूल का वोट (कॉन्टेनर के रूप में, यह सभी जोड़े गए मॉड्यूल्स को शामिल करता है) का भी उपयोग किया जाता है, लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं।मुख्य मॉड्यूल के वोट परिणाम भी "वोट्स" के औसत में उपयोग होते हैं। हमारे मामले में, हमें मुख्य मॉड्यूल + 1 ट्रेड सिग्नल्स का मॉड्यूल मिला है, इसलिए हमें थ्रेशोल्ड मान निर्धारित करते समय इस तथ्य पर ध्यान देना चाहिए। इस तथ्य के कारण, ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में सेट किया जाना चाहिए।Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर का मान 0 पर सेट किया गया है, इसका मतलब है कि पोजिशन्स की क्लोजिंग केवल तभी की जाएगी जब क्लोजिंग की शर्तें सही हों।2.4. ऐतिहासिक बैकटेस्टिंग परिणामआइए एक्सपर्ट एडवाइजर के बैकटेस्टिंग पर गौर करें जो ऐतिहासिक डेटा (EURUSD H1, टेस्टिंग पीरियड: 2010.01.01-2011.02.02, PeriodRSI=37, MA_period=51) पर किया गया है।एक्सपर्ट एडवाइजर बनाने में हमने निश्चित वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया (ट्रेलिंग का उपयोग नहीं किया गया).Fig. 11. 3 ब्लैक क्रो/3 व्हाइट सोल्जर + RSI पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणामइंपुट पैरामीटर्स का सबसे अच्छा सेट स्ट्रैटेजी टेस्टर का उपयोग करके मेटाट्रेडर 5 क्लाइंट टर्मिनल में पाया जा सकता है।MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर का कोड expert_abc_ws_rsi.mq5 में संलग्न है।

2011.02.18
MQL5 विजार्ड: 3 ब्लैक क्रो और 3 व्हाइट सोल्जर पर आधारित ट्रेड सिग्नल्स + MFI
MetaTrader5
MQL5 विजार्ड: 3 ब्लैक क्रो और 3 व्हाइट सोल्जर पर आधारित ट्रेड सिग्नल्स + MFI

MQL5 विजार्ड का उपयोग करके आप तैयार तैयार एक्सपर्ट एडवाइजर बना सकते हैं। यह आपको आपके ट्रेड आइडियाज को तेजी से जांचने की सुविधा देता है। इसके लिए आपको बस अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होगी। इस क्लास की संरचना और उदाहरण को आप MQL5 विजार्ड: ट्रेडिंग सिग्नल्स का मॉड्यूल कैसे बनाएं लेख में देख सकते हैं। आसान भाषा में कहें तो, ट्रेडिंग सिग्नल्स की क्लास CExpertSignal से ली जाती है। इसके बाद, आपको LongCondition() और ShortCondition() वर्चुअल मेथड्स को अपनी आवश्यकताओं के अनुसार ओवरराइड करना होगा। हम यहाँ 3 ब्लैक क्रो और 3 व्हाइट सोल्जर के रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जो कि मार्केट फैसिलिटेशन इंडेक्स (MFI) इंडिकेटर द्वारा पुष्टि किए गए हैं। 1. 3 ब्लैक क्रो और 3 व्हाइट सोल्जर के रिवर्सल कैंडलस्टिक पैटर्न 1.1. 3 ब्लैक क्रो यह एक बेयरिश कैंडलस्टिक पैटर्न है, जो मौजूदा अपट्रेंड के उलटने की भविष्यवाणी करता है। इसमें तीन लगातार लंबे शरीर वाली कैंडलस्टिक्स शामिल होती हैं, जो पिछले दिन से कम बंद होती हैं। Fig. 1. 3 Black Crows कैंडलस्टिक पैटर्न "3 ब्लैक क्रो" पैटर्न की पहचान CheckPatternThreeBlackCrows मेथड में की जाती है। //+------------------------------------------------------------------+ //| Checks formation of "3 Black Crows" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 Black Crows &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की पहचान CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) मेथड के माध्यम से की जाती है। 1.2. 3 व्हाइट सोल्जर कैंडलस्टिक पैटर्न यह एक बुलिश कैंडलस्टिक पैटर्न है, जो मौजूदा डाउनट्रेंड के उलटने की भविष्यवाणी करता है। यह पैटर्न भी तीन लगातार लंबे शरीर वाली कैंडलस्टिक्स का उपयोग करता है। Fig. 2. 3 White Soldiers कैंडलस्टिक पैटर्न "3 व्हाइट सोल्जर" पैटर्न की पहचान CheckPatternThreeWhiteSoldiers मेथड में की जाती है। //+------------------------------------------------------------------+ //| Checks formation of "3 White Soldiers" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 White Soldiers &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की जांच CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) मेथड द्वारा की जाती है। 2. MFI इंडिकेटर द्वारा पुष्टि किए गए ट्रेड सिग्नल्स ट्रेडिंग सिग्नल्स को खुला या बंद करने के लिए MFI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। लॉन्ग पोजिशन के लिए MFI का मान 40 से कम होना चाहिए। शॉर्ट पोजिशन के लिए MFI का मान 60 से अधिक होना चाहिए। खुली पोजिशन को बंद करने की प्रक्रिया MFI के मानों पर निर्भर करती है। यदि MFI विपरीत क्रिटिकल लेवल (70 लॉन्ग पोजिशन के लिए और 30 शॉर्ट पोजिशन के लिए) पर पहुँच जाता है। यदि रिवर्स सिग्नल की पुष्टि नहीं होती है। Fig. 3. 3 Black Crows पैटर्न, MFI इंडिकेटर द्वारा पुष्टि की गई int CBC_WS_MFI::LongCondition() - लॉन्ग पोजिशन खोलने की शर्तों की जांच करता है। int CBC_WS_MFI::ShortCondition() - शॉर्ट पोजिशन खोलने की शर्तों की जांच करता है। 2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन बंद करना "3 व्हाइट सोल्जर" पैटर्न की पुष्टि MFI इंडिकेटर से होनी चाहिए: MFI(1) < 40। शॉर्ट पोजिशन तब बंद होनी चाहिए जब MFI क्रिटिकल लेवल (70 या 30) को पार कर ले। //+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Market entry (open long position, result=80)&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) Market exit (close short position, result=40)&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CBC_WS_MFI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- checking of conditions to open long position &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (MFI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- return result &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन बंद करना "3 ब्लैक क्रो" पैटर्न की पुष्टि MFI इंडिकेटर से होनी चाहिए: MFI(1) > 60। लॉन्ग पोजिशन तब बंद होनी चाहिए जब MFI क्रिटिकल लेवल (70 या 30) को पार कर ले। //+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Market entry (open short position, result=80)&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) Market exit (close long position, result=40)&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CBC_WS_MFI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- checking of conditions to open short position &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (MFI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- return result &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CBC_WS_MFI क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए आपको abc_ws_mfi.mqh फ़ाइल डाउनलोड करनी होगी। एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें। Fig. 4. MQL5 विजार्ड का प्रयोग अब हमें एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करना है: Fig. 5. एक्सपर्ट एडवाइजर की सामान्य प्रॉपर्टीज इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल्स के मॉड्यूल का चयन करना होगा। Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज हमारे मामले में, हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग कर रहे हैं। "3 ब्लैक क्रो/3 व्हाइट सोल्जर जो MFI द्वारा पुष्टि की गई" ट्रेड सिग्नल मॉड्यूल जोड़ना: Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज ट्रेड सिग्नल मॉड्यूल जोड़ा गया: Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज आप कोई भी ट्रेलिंग प्रॉपर्टीज चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं" करेंगे: Fig. 9. एक्सपर्ट एडवाइजर की ट्रेलिंग प्रॉपर्टीज पैसों के प्रबंधन की प्रॉपर्टीज के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. एक्सपर्ट एडवाइजर की मनी मैनेजमेंट प्रॉपर्टीज "फिनिश" बटन दबाने पर, हमें जनरेट किया गया एक्सपर्ट एडवाइजर कोड मिलेगा, जो Expert_ABC_WS_MFI.mq5 में स्थित होगा। जनरेटेड एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- inputs for main signal input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Signal threshold value to open [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Signal threshold value to close [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Price level to execute a deal input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Stop Loss level (in points) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Take Profit level (in points) लेकिन इसे बदलकर करना होगा: //--- inputs for main signal input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Signal threshold value to open [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Signal threshold value to close [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Price level to execute a deal input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0;&nbsp;&nbsp;&nbsp;&nbsp;// Stop Loss level (in points) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Take Profit level (in points) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको ओपन और क्लोज़ करने के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। MQL5 विजार्ड द्वारा जनरेटेड एक्सपर्ट एडवाइजर ट्रेड सिग्नल मॉड्यूल से "वोट" का उपयोग करके पोजिशन खोलता और बंद करता है। 2.4. बैक टेस्टिंग के परिणाम आइए एक्सपर्ट एडवाइजर की बैक टेस्टिंग पर नज़र डालते हैं (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=13). एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट ट्रेडिंग, 0.1) का उपयोग किया है। Fig. 11. एक्सपर्ट एडवाइजर के परीक्षण परिणाम सर्वश्रेष्ठ इनपुट पैरामीटर सेट MetaTrader 5 क्लाइंट टर्मिनल के स्ट्रेटजी टेस्ट का उपयोग करके पाए जा सकते हैं।

2011.02.18
MQL5 विजार्ड: 3 काले कौवे/3 सफेद सिपाही पर आधारित ट्रेड सिग्नल + CCI
MetaTrader5
MQL5 विजार्ड: 3 काले कौवे/3 सफेद सिपाही पर आधारित ट्रेड सिग्नल + CCI

MQL5 विजार्ड एक बेहतरीन टूल है जो आपको तैयार किए गए एक्सपर्ट एडवाइजर्स (EAs) को बनाने की अनुमति देता है। यह स्टैंडर्ड लाइब्रेरी क्लासेस के आधार पर काम करता है जो क्लाइंट टर्मिनल के साथ आती हैं। अपने ट्रेड आइडियाज को जल्दी से चेक करने के लिए बस आपको अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होती है। इस क्लास की संरचना और उदाहरण के लिए आप MQL5 विजार्ड: ट्रेडिंग सिग्नल मॉड्यूल कैसे बनाएं लेख देख सकते हैं। आसान भाषा में कहें तो, ट्रेडिंग सिग्नल क्लास को CExpertSignal से विकसित किया जाता है। इसके बाद, आपको अपने खुद के मेथड्स के साथ LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होता है। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" (रूसी में), जिसमें कई ट्रेडिंग स्ट्रेटेजीज़ का जिक्र किया गया है। हम यहाँ रिवर्सल कैंडलस्टिक पैटर्न पर ध्यान केंद्रित करेंगे, जिसे स्टोकास्टिक, CCI, MFI, और RSI ऑसिलेटर्स द्वारा पुष्टि की जाती है। सबसे अच्छा तरीका है कि आप कैंडलस्टिक पैटर्न की गठन की जांच के लिए एक अलग क्लास बनाएं। कैंडलस्टिक पैटर्न द्वारा उत्पन्न ट्रेड सिग्नल की पुष्टि के लिए, केवल एक क्लास लिखना पर्याप्त है, जो CCandlePattern से विकसित होती है और आवश्यक फीचर्स जोड़ती है (जैसे कि ऑसिलेटर्स द्वारा पुष्टि)। यहाँ हम उन सिग्नल्स पर गौर करेंगे जो "3 काले कौवे/3 सफेद सिपाही" रिवर्सल कैंडलस्टिक पैटर्न पर आधारित हैं, जिसे CCI इंडिकेटर द्वारा पुष्टि की गई है। ट्रेड सिग्नल का मॉड्यूल CCandlePattern क्लास पर आधारित है, यह कैंडलस्टिक पैटर्न के साथ ट्रेड सिग्नल बनाने का एक साधारण उदाहरण है। 1. "3 काले कौवे" और "3 सफेद सिपाही" रिवर्सल कैंडलस्टिक पैटर्न 1.1. 3 काले कौवे यह एक bearish कैंडलस्टिक पैटर्न है जिसका उपयोग मौजूदा अपट्रेंड के उलटफेर की भविष्यवाणी करने के लिए किया जाता है। इस पैटर्न में तीन लगातार लंबे शरीर वाली कैंडलस्टिक्स होती हैं जो पिछले दिन की तुलना में कम बंद होती हैं, और प्रत्येक सत्र का ओपन पिछले कैंडल के बॉडी में होता है। Fig. 1. "3 काले कौवे" कैंडलस्टिक पैटर्न "3 काले कौवे" पैटर्न की पहचान CCandlePattern क्लास के CheckPatternThreeBlackCrows मेथड में की गई है: //+------------------------------------------------------------------+ //| "3 काले कौवे" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 काले कौवे &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; //(लॉन्ग ब्लैक) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (नीचे के मिडपॉइंट) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2)))&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) मेथड का उपयोग "3 काले कौवे" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 1.2. 3 सफेद सिपाही कैंडलस्टिक पैटर्न यह एक bullish कैंडलस्टिक पैटर्न है जिसका उपयोग मौजूदा डाउनट्रेंड के उलटफेर की भविष्यवाणी करने के लिए किया जाता है। इस पैटर्न में तीन लगातार लंबे शरीर वाली कैंडलस्टिक्स होती हैं जो पिछले दिन की तुलना में ऊँची बंद होती हैं, और प्रत्येक सत्र का ओपन पिछले कैंडल के बॉडी में होता है। यह पैटर्न तब तक मान्य रहता है जब तक कि दूसरे दिन की कैंडल पहले दिन की रेंज के ऊपरी आधे में खुलती है। दूसरे दिन के अंत में, इसे अपने उच्च के निकट बंद होना चाहिए, जिससे बहुत छोटा या कोई ऊपरी छाया नहीं बची। यह पैटर्न फिर तीसरे दिन दोहराया जाता है। Fig. 2. "3 सफेद सिपाही" कैंडलस्टिक पैटर्न यहाँ "3 सफेद सिपाही" पैटर्न की पहचान के लिए मेथड है: //+------------------------------------------------------------------+ //| "3 सफेद सिपाही" कैंडलस्टिक पैटर्न की पहचान करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 सफेद सिपाही &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; // लॉन्ग व्हाइट &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // उच्च मिडपॉइंट्स &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) मेथड का उपयोग "3 सफेद सिपाही" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 2. ट्रेड सिग्नल, CCI इंडिकेटर द्वारा पुष्टि किए गए लॉन्ग या शॉर्ट पोजीशन खोलने के लिए ट्रेडिंग सिग्नल को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए। CCI का मान महत्वपूर्ण स्तर (-50 लॉन्ग पोजीशन के लिए और 50 शॉर्ट पोजीशन के लिए) से अधिक/कम होना चाहिए। खोलने वाली पोजीशन का बंद होना CCI के मान पर निर्भर करता है। इसे 2 मामलों में किया जा सकता है: यदि CCI लाइन ने विपरीत महत्वपूर्ण स्तर (लॉन्ग पोजीशन के लिए 80 और शॉर्ट पोजीशन के लिए -80) को हासिल किया है। यदि रिवर्स सिग्नल की पुष्टि नहीं होती है (जब CCI निम्नलिखित स्तरों को हासिल करता है: -80 लॉन्ग पोजीशन के लिए और 80 शॉर्ट पोजीशन के लिए)। Fig. 3. "3 काले कौवे" पैटर्न, CCI इंडिकेटर द्वारा पुष्टि की गई int CBC_WS_CCI::LongCondition() - लॉन्ग पोजीशन खोलने की स्थितियों की जांच करता है (80 लौटाता है) और शॉर्ट पोजीशन को बंद करता है (40 लौटाता है); int CBC_WS_CCI::ShortCondition() - शॉर्ट पोजीशन खोलने की स्थितियों की जांच करता है (80 लौटाता है) और लॉन्ग पोजीशन को बंद करता है (40 लौटाता है). 2.1. लॉन्ग पोजीशन खोलना/शॉर्ट पोजीशन बंद करना "3 काले कौवे" पैटर्न की गठन को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए: CCI(1)&lt;-50 (पिछले पूर्ण बार का CCI मान -50 से कम होना चाहिए). शॉर्ट पोजीशन को बंद करना होगा यदि CCI इंडिकेटर ने महत्वपूर्ण स्तर -80 को ऊपर की ओर पार किया है या महत्वपूर्ण स्तर 80 को नीचे की ओर पार किया है। //+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की स्थितियों की जांच करता है | //| 1) बाजार में प्रवेश (लॉन्ग पोजीशन खोलना, परिणाम=80) | //| 2) बाजार से निकासी (शॉर्ट पोजीशन बंद करना, परिणाम=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की स्थितियों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की स्थितियों की जांच करता है &nbsp;&nbsp; int idx = StartIndex(); //--- लॉन्ग पोजीशन खोलने की स्थितियों की जांच //--- "3 सफेद सिपाही" पैटर्न और CCI&lt;-50 &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (CCI(1)&lt;-50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- शॉर्ट पोजीशन बंद करने की स्थितियों की जांच //--- ओवरबॉट/ओवर्सोल्ड स्तरों के सिग्नल लाइन क्रॉसओवर (नीचे -80, नीचे -80) &nbsp;&nbsp; if(((CCI(1)&gt;-80) &amp;&amp; (CCI(2)&lt;-80)) || ((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. शॉर्ट पोजीशन खोलना/लॉन्ग पोजीशन बंद करना "3 सफेद सिपाही" पैटर्न की गठन को CCI इंडिकेटर द्वारा पुष्टि की जानी चाहिए: CCI(1)&gt;50 (पिछले पूर्ण बार का CCI मान 50 से अधिक होना चाहिए). लॉन्ग पोजीशन को बंद करना होगा यदि CCI इंडिकेटर ने नीचे की ओर -80 या 80 स्तरों को पार किया है। //+------------------------------------------------------------------+ //| बाजार में प्रवेश और निकासी की स्थितियों की जांच करता है | //| 1) बाजार में प्रवेश (शॉर्ट पोजीशन खोलना, परिणाम=80) | //| 2) बाजार से निकासी (लॉन्ग पोजीशन बंद करना, परिणाम=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx का उपयोग एक्सपर्ट एडवाइजर कार्य मोड निर्धारित करने के लिए किया जा सकता है //--- idx=0 - इस मामले में EA प्रत्येक टिक पर ट्रेड की स्थितियों की जांच करता है //--- idx=1 - इस मामले में EA केवल न्यूज़ बार पर ट्रेड की स्थितियों की जांच करता है &nbsp;&nbsp; int idx = StartIndex(); //--- शॉर्ट पोजीशन खोलने की स्थितियों की जांच //--- "3 काले कौवे" पैटर्न और CCI&gt;50 &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (CCI(1)&gt;50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- लॉन्ग पोजीशन बंद करने की स्थितियों की जांच //--- ओवरबॉट/ओवर्सोल्ड स्तरों के सिग्नल लाइन क्रॉसओवर (नीचे -80, नीचे 80) &nbsp;&nbsp; if(((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80)) || ((CCI(1)&lt;-80) &amp;&amp; (CCI(2)&gt;-80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- परिणाम लौटाएं &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना CBC_WS_CCI क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे उपयोग करने के लिए, acbc_ws_cci.mqh फ़ाइल डाउनलोड करनी होगी (संलग्नकों में देखें) और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सहेजना होगा। इसी तरह candlepatterns.mqh फ़ाइल भी। आप इसे MQL5 विजार्ड में मेटा-एडिटर को पुनः प्रारंभ करने के बाद उपयोग कर सकते हैं। एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें: Fig. 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: Fig. 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएँ इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल के मॉड्यूल का चयन करना होगा। Fig. 6. एक्सपर्ट एडवाइजर के सिग्नल की विशेषताएँ हमारे मामले में हम केवल एक ट्रेड सिग्नल के मॉड्यूल का उपयोग करते हैं। "CCI द्वारा पुष्टि किए गए 3 काले कौवे/3 सफेद सिपाही पर आधारित सिग्नल्स" ट्रेड सिग्नल का मॉड्यूल जोड़ना: Fig. 7. एक्सपर्ट एडवाइजर के सिग्नल की विशेषताएँ ट्रेड सिग्नल का मॉड्यूल जोड़ दिया गया है: Fig. 8. एक्सपर्ट एडवाइजर के सिग्नल की विशेषताएँ आप कोई भी ट्रेलिंग विशेषताएँ चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप का उपयोग नहीं किया गया" का उपयोग करेंगे: Fig. 9. एक्सपर्ट एडवाइजर के ट्रेलिंग विशेषताएँ पैसे प्रबंधन की विशेषताओं के संबंध में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: Fig. 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन की विशेषताएँ "फिनिश" बटन पर क्लिक करके, हम उत्पन्न एक्सपर्ट एडवाइजर का कोड प्राप्त करेंगे, जो Expert_ABC_WS_CCI.mq5 में होगा, इसे terminal_data_folder\MQL5\Experts\ में सहेजा जाएगा। उत्पन्न एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए मूल्य स्तर input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // स्टॉप लॉस स्तर (पॉइंट में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp; // टेक प्रॉफिट स्तर (पॉइंट में) इन पैरामीटर को बदलना होगा: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड मान [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // डील निष्पादित करने के लिए मूल्य स्तर input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0;&nbsp;&nbsp;&nbsp;&nbsp;// स्टॉप लॉस स्तर (पॉइंट में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// टेक प्रॉफिट स्तर (पॉइंट में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर आपको पोजीशन्स के खोलने और बंद करने के लिए थ्रेशोल्ड स्तर निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशोल्ड के निश्चित मान निर्दिष्ट किए हैं: पोजीशन खोलना: 80; पोजीशन बंद करना: 40. MQL5 विजार्ड द्वारा उत्पन्न एक्सपर्ट एडवाइजर "वोट्स" के माध्यम से पोजीशन्स खोलता और बंद करता है। मुख्य मॉड्यूल का वोट भी उपयोग किया जाता है (यह एक कंटेनर के रूप में काम करता है, जिसमें सभी जोड़े गए मॉड्यूल होते हैं) लेकिन इसके LongCondition() और ShortCondition() मेथड्स हमेशा 0 लौटाते हैं। मुख्य मॉड्यूल के वोट का परिणाम "वोट्स" के औसत में भी उपयोग किया जाता है। हमारे मामले में हमारे पास है: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल का मॉड्यूल, इसलिए हमें थ्रेशोल्ड मान निर्दिष्ट करते समय इस तथ्य का ध्यान रखना होगा। इसलिए ThresholdOpen और ThresholdClose को 40=(0+80)/2 और 20=(0+40)/2 के रूप में निर्धारित किया जाना चाहिए। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर के मान 0 पर सेट किए गए हैं, इसका मतलब है कि पोजीशन्स को केवल तब बंद किया जाएगा जब बंद होने की स्थितियाँ सही हों। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर का बैकटेस्टिंग ऐतिहासिक डेटा (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.03.16, PeriodCCI=37, MA_period=13) पर विचार करें। एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम का उपयोग किया (फिक्स्ड लॉट ट्रेडिंग, 0.1), ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया (ट्रेलिंग का उपयोग नहीं किया). Fig. 11. एक्सपर्ट एडवाइजर के परीक्षण परिणाम, 3 काले कौवे/3 सफेद सिपाही + CCI पर आधारित इनपुट पैरामीटर का सबसे अच्छा सेट स्ट्रेटेजी टेस्ट के माध्यम से MetaTrader 5 क्लाइंट टर्मिनल पर पाया जा सकता है। MQL5 विजार्ड द्वारा बनाई गई एक्सपर्ट एडवाइजर का कोड expert_abc_ws_cci.mq5 में संलग्न है।

2011.02.18
MQL5 विजार्ड: 3 ब्लैक क्रो/3 व्हाइट सोल्जर और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
MetaTrader5
MQL5 विजार्ड: 3 ब्लैक क्रो/3 व्हाइट सोल्जर और स्टोकास्टिक पर आधारित ट्रेड सिग्नल

MQL5 विजार्ड एक बेहतरीन टूल है जो आपको एक्सपर्ट एडवाइजर्स बनाने की सुविधा देता है। यह टूल आपको अपने ट्रेड आइडियाज को जल्दी चेक करने की सुविधा देता है। इसके लिए आपको अपनी खुद की ट्रेडिंग सिग्नल क्लास बनानी होगी। इस क्लास की संरचना और उदाहरण के लिए आप आर्टिकल MQL5 विजार्ड: ट्रेडिंग सिग्नल्स के मॉड्यूल को कैसे बनाएं देख सकते हैं। इसका मूल विचार यह है कि ट्रेडिंग सिग्नल क्लास को CExpertSignal से लिया जाता है, और फिर, आपको अपने खुद के LongCondition() और ShortCondition() वर्चुअल मेथड्स को ओवरराइड करना होता है। एक किताब है "सर्वश्रेष्ठ ट्रेडर्स की रणनीतियाँ" जिसमें कई ट्रेडिंग स्ट्रेटेजीज़ को बताया गया है। हम यहाँ रिवर्सल कैंडलस्टिक पैटर्न्स पर ध्यान केंद्रित करेंगे जो कि स्टोकास्टिक, CCI, MFI और RSI ऑस्सीलेटर द्वारा कन्फर्मेड हैं। सबसे अच्छा तरीका यह है कि आप एक अलग क्लास बनाएं, जो CExpertSignal से ली गई हो ताकि आप कैंडलस्टिक पैटर्न्स की फॉर्मेशन की जांच कर सकें। कैंडलस्टिक पैटर्न द्वारा जनरेटेड ट्रेड सिग्नल्स की पुष्टि के लिए, आपको CCandlePattern से ली गई क्लास लिखनी होगी और वहां आवश्यक फीचर्स (जैसे, ऑस्सीलेटर द्वारा पुष्टि) जोड़नी होगी। 1. "3 ब्लैक क्रो" और "3 व्हाइट सोल्जर्स" रिवर्सल कैंडलस्टिक पैटर्न 1.1. 3 ब्लैक क्रो यह एक बेयरिश कैंडलस्टिक पैटर्न है जो वर्तमान अपट्रेंड के रिवर्सल की भविष्यवाणी करने के लिए उपयोग किया जाता है। इस पैटर्न में तीन लगातार लंबे शरीर वाली कैंडलस्टिक्स होती हैं जो पिछले दिन की तुलना में नीचे बंद होती हैं। चित्र 1. "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न "3 ब्लैक क्रो" पैटर्न की पहचान CCandlePattern क्लास के CheckPatternThreeBlackCrows मेथड में की गई है। //+------------------------------------------------------------------+ //| "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की जांच करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 ब्लैक क्रो &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) मेथड का उपयोग "3 ब्लैक क्रो" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 1.2. 3 व्हाइट सोल्जर कैंडलस्टिक पैटर्न यह एक बुलिश कैंडलस्टिक पैटर्न है जिसका उपयोग वर्तमान डाउनट्रेंड के रिवर्सल की भविष्यवाणी करने के लिए किया जाता है। इस पैटर्न में तीन लगातार लंबे शरीर वाली कैंडलस्टिक्स होती हैं जो पिछले दिन की तुलना में ऊपर बंद होती हैं। चित्र 2. "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न यहाँ "3 व्हाइट सोल्जर" पैटर्न की पहचान के लिए मेथड है: //+------------------------------------------------------------------+ //| "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की जांच करता है | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 व्हाइट सोल्जर &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) मेथड का उपयोग "3 व्हाइट सोल्जर" कैंडलस्टिक पैटर्न की पहचान के लिए किया जाता है। 2. ट्रेड सिग्नल्स, जो स्टोकास्टिक इंडिकेटर द्वारा कन्फर्म होते हैं लॉन्ग या शॉर्ट पोजिशन खोलने के लिए ट्रेड सिग्नल्स को स्टोकास्टिक ऑस्सीलेटर द्वारा कन्फर्म किया जाना चाहिए। सिग्नल %D लाइन को संबंधित क्रिटिकल लेवल (30 या 70) से ऊपर/नीचे होना चाहिए। खुली हुई पोजिशन का क्लोजिंग %D इंडिकेटर के मानों पर निर्भर करती है। यह दो मामलों में किया जा सकता है: अगर %D लाइन ने विपरीत क्रिटिकल लेवल (80 लॉन्ग पोजिशन के लिए और 20 शॉर्ट पोजिशन के लिए) को पार कर लिया है। अगर रिवर्स सिग्नल की पुष्टि नहीं होती है (जब %D लाइन अगले स्तरों पर पहुँचती है: 20 लॉन्ग पोजिशन के लिए और 80 शॉर्ट पोजिशन के लिए)। चित्र 3. "3 व्हाइट सोल्जर" पैटर्न, स्टोकास्टिक द्वारा कन्फर्म किया गया एंट्री और एग्जिट के लिए ट्रेड कंडीशंस की जांच दो मेथड्स में की जाती है: int CBC_WS_Stoch::LongCondition() - लॉन्ग पोजिशन खोलने के लिए कंडीशंस की जांच करता है (80 लौटाता है) और शॉर्ट पोजिशन को क्लोज करता है (40 लौटाता है); int CBC_WS_Stoch::ShortCondition() - शॉर्ट पोजिशन खोलने के लिए कंडीशंस की जांच करता है (80 लौटाता है) और लॉन्ग पोजिशन को क्लोज करता है (40 लौटाता है)। 2.1. लॉन्ग पोजिशन खोलना/शॉर्ट पोजिशन को बंद करना "3 व्हाइट सोल्जर" पैटर्न की फॉर्मेशन को स्टोकास्टिक इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए: StochSignal(1)&lt;30 (स्टोकास्टिक इंडिकेटर की पिछले पूर्ण बार की सिग्नल लाइन का मान 30 से कम होना चाहिए)। शॉर्ट पोजिशन को बंद कर देना चाहिए अगर स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 20 या 80 स्तरों को ऊपर की ओर पार कर ले। //+------------------------------------------------------------------+ //| मार्केट में एंट्री और एग्जिट कंडीशंस की जांच करता है | //+------------------------------------------------------------------+ int CBC_WS_Stoch::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- लॉन्ग पोजिशन के लिए कंडीशंस की जांच &nbsp;&nbsp; //--- "3 व्हाइट सोल्जर" पैटर्न और सिग्नल लाइन&lt;30 &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (StochSignal(1)&lt;30)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- शॉर्ट पोजिशन के लिए कंडीशंस की जांच &nbsp;&nbsp; //--- ओवरबॉट/ओवर्सोल्ड लेवल्स (नीचे 20, ऊपर 80) &nbsp;&nbsp; if((((StochSignal(1)&gt;20) &amp;&amp; (StochSignal(2)&lt;20)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&gt;80) &amp;&amp; (StochSignal(2)&lt;80)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; &nbsp;&nbsp; //--- परिणाम लौटाना &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. शॉर्ट पोजिशन खोलना/लॉन्ग पोजिशन को बंद करना "3 ब्लैक क्रो" पैटर्न की फॉर्मेशन को स्टोकास्टिक इंडिकेटर द्वारा कन्फर्म किया जाना चाहिए: StochSignal(1)&gt;70 (स्टोकास्टिक इंडिकेटर की पिछले पूर्ण बार की सिग्नल लाइन का मान 70 से अधिक होना चाहिए)। लॉन्ग पोजिशन को बंद कर देना चाहिए अगर स्टोकास्टिक इंडिकेटर की सिग्नल लाइन 80 या 20 स्तरों को नीचे की ओर पार कर ले। //+------------------------------------------------------------------+ //| मार्केट में एंट्री और एग्जिट कंडीशंस की जांच करता है | //+------------------------------------------------------------------+ int CBC_WS_Stoch::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- शॉर्ट पोजिशन के लिए कंडीशंस की जांच &nbsp;&nbsp; //--- "3 ब्लैक क्रो" पैटर्न और सिग्नल लाइन&gt;70 &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (StochSignal(1)&gt;70)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- लॉन्ग पोजिशन के लिए कंडीशंस की जांच &nbsp;&nbsp; //--- ओवरबॉट/ओवर्सोल्ड लेवल्स (नीचे 80, ऊपर 20) &nbsp;&nbsp; if((((StochSignal(1)&lt;80) &amp;&amp; (StochSignal(2)&gt;80)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&lt;20) &amp;&amp; (StochSignal(2)&gt;20)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; &nbsp;&nbsp; //--- परिणाम लौटाना &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर्स बनाना CBC_WS_Stoch क्लास स्टैंडर्ड लाइब्रेरी क्लास में शामिल नहीं है, इसे इस्तेमाल करने के लिए आपको acbc_ws_stoch.mqh फाइल डाउनलोड करनी होगी और इसे client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals में सेव करना होगा। इसी तरह candlepatterns.mqh फाइल के साथ भी करना होगा। आप इसे MQL5 विजार्ड में मेटा एडिटर को रीस्टार्ट करने के बाद उपयोग कर सकते हैं। एक एक्सपर्ट एडवाइजर बनाने के लिए MQL5 विजार्ड लॉन्च करें: चित्र 4. MQL5 विजार्ड का उपयोग करके एक्सपर्ट एडवाइजर बनाना आइए एक्सपर्ट एडवाइजर का नाम निर्दिष्ट करें: चित्र 5. एक्सपर्ट एडवाइजर की सामान्य विशेषताएँ इसके बाद हमें उपयोग किए जाने वाले ट्रेड सिग्नल मॉड्यूल का चयन करना होगा। चित्र 6. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज हमारे मामले में हम केवल एक ट्रेड सिग्नल मॉड्यूल का उपयोग करेंगे। "3 ब्लैक क्रो/3 व्हाइट सोल्जर स्टोकास्टिक द्वारा कन्फर्म किए गए" ट्रेड सिग्नल मॉड्यूल जोड़ना: चित्र 7. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज ट्रेड सिग्नल मॉड्यूल जोड़ दिया गया है: चित्र 8. एक्सपर्ट एडवाइजर के सिग्नल प्रॉपर्टीज आप कोई भी ट्रेलिंग प्रॉपर्टीज़ चुन सकते हैं, लेकिन हम "ट्रेलिंग स्टॉप उपयोग नहीं किया" का उपयोग करेंगे: चित्र 9. एक्सपर्ट एडवाइजर के ट्रेलिंग प्रॉपर्टीज पैसों के प्रबंधन की प्रॉपर्टीज के संदर्भ में, हम "फिक्स्ड ट्रेड वॉल्यूम के साथ ट्रेडिंग" का उपयोग करेंगे: चित्र 10. एक्सपर्ट एडवाइजर के पैसे प्रबंधन प्रॉपर्टीज "फिनिश" बटन दबाने पर, हमें जनरेटेड एक्सपर्ट एडवाइजर का कोड प्राप्त होगा, जो Expert_ABC_WS_Stoch.mq5 में स्थित होगा। यह terminal_data_folder\MQL5\Experts\ में सेव किया जाएगा। जनरेटेड एक्सपर्ट एडवाइजर के डिफ़ॉल्ट इनपुट पैरामीटर्स: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // डील करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // स्टॉप लॉस स्तर (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp; // टेक प्रॉफिट स्तर (पॉइंट्स में) इन्हें बदलना होगा: //--- मुख्य सिग्नल के लिए इनपुट input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // खोलने के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // बंद करने के लिए सिग्नल थ्रेशोल्ड वैल्यू [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // डील करने के लिए प्राइस लेवल input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// स्टॉप लॉस स्तर (पॉइंट्स में) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// टेक प्रॉफिट स्तर (पॉइंट्स में) Signal_ThresholdOpen/Signal_ThresholdClose इनपुट पैरामीटर्स आपको ओपन और क्लोज करने के लिए थ्रेशोल्ड लेवल्स निर्दिष्ट करने की अनुमति देते हैं। LongCondition() और ShortCondition() मेथड्स के कोड में हमने थ्रेशोल्ड के फिक्स्ड वैल्यूज़ को निर्दिष्ट किया है: ओपन पोजिशन: 80; क्लोज पोजिशन: 40. MQL5 विजार्ड द्वारा जनरेटेड एक्सपर्ट एडवाइजर पोजिशन को ट्रेड सिग्नल्स के मॉड्यूल से "मत" लेकर ओपन और क्लोज करता है। मुख्य मॉड्यूल का वोट भी "मत" औसत में इस्तेमाल किया जाता है। हमारे मामले में हमारे पास है: मुख्य मॉड्यूल + 1 ट्रेड सिग्नल मॉड्यूल, इसलिए हमें थ्रेशोल्ड वैल्यूज़ सेट करते समय इस तथ्य को ध्यान में रखना होगा। Signal_StopLevel और Signal_TakeLevel इनपुट पैरामीटर्स को 0 पर सेट किया गया है, जिसका अर्थ है कि पोजिशन्स को केवल तब बंद किया जाएगा जब क्लोजिंग कंडीशंस सच होंगे। 2.4. इतिहास बैकटेस्टिंग परिणाम आइए एक्सपर्ट एडवाइजर की बैकटेस्टिंग पर नजर डालें (EURUSD H1, परीक्षण अवधि: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5)। एक्सपर्ट एडवाइजर बनाने में हमने फिक्स्ड वॉल्यूम (फिक्स्ड लॉट ट्रेडिंग, 0.1) का उपयोग किया है, ट्रेलिंग स्टॉप एल्गोरिदम का उपयोग नहीं किया गया है (ट्रेलिंग का उपयोग नहीं किया गया). चित्र 11. "3 ब्लैक क्रो/3 व्हाइट सोल्जर + स्टोकास्टिक" पर आधारित एक्सपर्ट एडवाइजर के परीक्षण परिणाम इनपुट पैरामीटर्स का सबसे अच्छा सेट स्ट्रेटेजी टेस्टर का उपयोग करके पाया जा सकता है। MQL5 विजार्ड द्वारा बनाए गए एक्सपर्ट एडवाइजर का कोड expert_abc_ws_stoch.mq5 में संलग्न किया गया है।

2011.02.16
MetaTrader 5 के लिए Demo_resource_EA: एक अनूठा ट्रेडिंग टूल
MetaTrader5
MetaTrader 5 के लिए Demo_resource_EA: एक अनूठा ट्रेडिंग टूल

नमस्कार दोस्तों! आज हम बात करेंगे Demo_Create_OBJ_BITMAP_LABEL_EA के बारे में, जो कि MetaTrader 5 के लिए एक बेहतरीन एक्सपर्ट एडवाइजर है। इसमें कई महत्वपूर्ण संसाधन शामिल हैं, जो .EX5 फाइल में अंतर्निहित हैं। इसमें euro.bmp और dollar.bmp फाइलें शामिल हैं, जिन्हें संसाधनों के रूप में उपयोग किया जाता है। यहाँ पर इन फाइलों के स्थान की जानकारी दी गई है: #resource "\\Images\\euro.bmp"&nbsp;&nbsp;&nbsp;&nbsp;// euro.bmp ग्राहक टर्मिनल डेटा फ़ोल्डर में स्थित है: MQL5\Images\ #resource "\\Images\\dollar.bmp"&nbsp;&nbsp;// dollar.bmp भी इसी स्थान पर है OBJ_BITMAP_LABEL प्रकार का ग्राफिकल ऑब्जेक्ट आपको विभिन्न आकार और आकार के बटन बनाने की अनुमति देता है। OBJ_BITMAP_LABEL प्रकार का ऑब्जेक्ट क्लिक करने पर अपनी स्थिति बदल सकता है, लेकिन ऑब्जेक्ट का चयन बंद होना चाहिए। डिफ़ॉल्ट रूप से, MQL5 में बनाए गए सभी ग्राफिकल ऑब्जेक्ट्स के लिए "Disable selection" प्रॉपर्टी सक्रिय होती है।

2011.02.15
eKeyboardTrader: MetaTrader 5 के लिए बेहतरीन एक्सपर्ट एडवाइज़र
MetaTrader5
eKeyboardTrader: MetaTrader 5 के लिए बेहतरीन एक्सपर्ट एडवाइज़र

नमस्ते दोस्तों! आज हम बात करेंगे eKeyboardTrader के बारे में, जो एक बेहतरीन एक्सपर्ट एडवाइज़र है और इसे आप अपने MetaTrader 5 पर इस्तेमाल कर सकते हैं। इससे आप कीबोर्ड का उपयोग करके ट्रेडिंग कर सकते हैं। इसमें खरीद, बेचने और ट्रेड बंद करने जैसी ऑपरेशन्स को सपोर्ट किया गया है। यहाँ आप ट्रेड वॉल्यूम (लॉट्स), स्टॉप लॉस, टेक प्रॉफिट और स्लिपेज को सेट या बदल सकते हैं। जब आप इस एक्सपर्ट एडवाइज़र को लॉन्च करते हैं, तो यह वर्तमान पैरामीटर्स (लॉट, स्टॉप लॉस, टेक प्रॉफिट, स्लिपेज) और उपलब्ध कमांड्स की लिस्ट दिखाएगा (चित्र 1): b - खरीदें, s - बेचें, c - बंद करें, i - पैरामीटर्स मेनू चित्र 1. मुख्य मेनू पैरामीटर्स मेनू में निम्नलिखित कमांड्स (चित्र 2) सपोर्ट किए जाते हैं: l - लॉट, k - स्टॉप लॉस, j - टेक प्रॉफिट, h - स्लिपेज, i और Esc - मुख्य मेनू पर वापस जाना। चित्र 2. इनपुट पैरामीटर का चयन जब आप इनपुट पैरामीटर का चयन करते हैं, तो यह इनपुट मोड में काम करेगा (चित्र 3)। इनपुट मोड में निम्नलिखित कमांड्स उपलब्ध हैं: i - लागू करें, यदि मान निर्दिष्ट नहीं किया गया है, तो "लागू करें" का परिणाम Esc के बराबर होगा, Esc - रद्द करें (मुख्य मेनू पर वापस जाएं), BackSpace - अंतिम इनपुट अक्षर हटाएं। चित्र 3. इनपुट पैरामीटर मान

2011.02.02
MetaTrader 5 में मल्टीकरेंसी OnTick इवेंट हैंडलर का उपयोग कैसे करें
MetaTrader5
MetaTrader 5 में मल्टीकरेंसी OnTick इवेंट हैंडलर का उपयोग कैसे करें

दोस्तों, आज हम बात करेंगे MetaTrader 5 में मल्टीकरेंसी मोड की नई कार्यान्वयन के बारे में। यह OnTick(string symbol) फंक्शन में विस्तारित है। इसके फायदे: यह डेमो और असली खातों पर असली मल्टीकरेंसी मोड प्रदान करता है। सेटिंग्स बहुत सरल हैं। OnTick(string symbol) के लिए इवेंट्स की सूची को कॉन्फ़िगर किया जा सकता है: NewTick और/या NewBar। संकेतों की सूची को कॉन्फ़िगर किया जा सकता है (Market Watch से सभी संकेत या कुछ विशेष संकेत)। Market Watch संकेतों के साथ काम करते समय, यह OnTick(string symbol) में "ऑन द फ्लाई" इवेंट्स को प्रबंधित करने की अनुमति देता है। इसकी कार्यप्रणाली को समझना आवश्यक नहीं है। सभी कोड इंक्लूड फ़ाइल में मौजूद हैं। इसे स्ट्रेटेजी टेस्ट में भी इस्तेमाल किया जा सकता है। एक्सपर्ट एडवाइजर का टेम्पलेट इस प्रकार दिखता है: //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnTick(string symbol).mq5 | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright 2010, Lizar | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #define VERSION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "1.00 Build 1 (01 Fab 2011)" #property copyright&nbsp;&nbsp; "Copyright 2010, Lizar" #property link&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"https://www.mql5.com/ru/users/Lizar" #property version&nbsp;&nbsp;&nbsp;&nbsp; VERSION #property description "Template of the Expert Advisor" #property description "with multicurrency OnTick(string symbol) event handler" //+------------------------------------------------------------------+ //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MULTICURRENCY MODE SETTINGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; of OnTick(string symbol) event handler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 1.1 List of symbols needed to proceed in the events:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | #define&nbsp;&nbsp;SYMBOLS_TRADING&nbsp;&nbsp;&nbsp;&nbsp;"EURUSD","GBPUSD","USDJPY","USDCHF" //| 1.2 If you want all symbols from Market Watch, use this:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //#define&nbsp;&nbsp;SYMBOLS_TRADING&nbsp;&nbsp;&nbsp;&nbsp;"MARKET_WATCH" //|&nbsp;&nbsp;&nbsp;&nbsp; Note: Select only one way from 1.1 or 1.2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2.&nbsp;&nbsp;Event type for OnTick(string symbol):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| #define&nbsp;&nbsp;CHART_EVENT_SYMBOL CHARTEVENT_TICK //|&nbsp;&nbsp;&nbsp;&nbsp; Note: the event type must corresponds to the&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENUM_CHART_EVENT_SYMBOL enumeration.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 3.&nbsp;&nbsp;Include file:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| #include &lt;OnTick(string symbol).mqh&gt; //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert initialization function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| This function must be declared, even if it empty.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int OnInit() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- Add your code here... &nbsp;&nbsp; return(0); &nbsp;&nbsp;} &nbsp;&nbsp; //+------------------------------------------------------------------+ //| Expert multi tick function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| Use this function instead of the standard OnTick() function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ void OnTick(string symbol) &nbsp;&nbsp;{ &nbsp;&nbsp; //--- Add your code here... &nbsp;&nbsp; Print("New event on symbol: ",symbol); &nbsp;&nbsp;} &nbsp;&nbsp; //+------------------------------------------------------------------+ //| ChartEvent function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| This function must be declared, even if it empty.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ void OnChartEvent(const int id,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // event id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const long&amp; lparam,&nbsp;&nbsp; // event param of long type &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const double&amp; dparam, // event param of double type &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const string&amp; sparam) // event param of string type &nbsp;&nbsp;{ &nbsp;&nbsp; //--- Add your code here... &nbsp;&nbsp;} &nbsp;&nbsp; //+------------------------------------------------------------------+ //| Expert deinitialization function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ void OnDeinit(const int reason) &nbsp;&nbsp;{ &nbsp;&nbsp; //--- Add your code here... &nbsp;&nbsp;} //+------------------------------ end -------------------------------+कुछ विशेषताएँ:1. सेटिंग्स सभी सेटिंग्स को #define निर्देशों का उपयोग करके कॉन्फ़िगर किया जा सकता है। OnTick(string symbol) फंक्शन के सही कार्य के लिए आपको केवल दो पैरामीटर निर्दिष्ट करने की आवश्यकता है: SYMBOLS_TRADING और CHART_EVENT_SYMBOL। पहले (SYMBOLS_TRADING) इवेंट्स के लिए उपयोग किए जाने वाले संकेत सूची को परिभाषित करता है। दूसरा (CHART_EVENT_SYMBOL) सभी संकेतों के लिए इवेंट प्रकारों को परिभाषित करता है। SYMBOLS_TRADING में संकेतों की सूची होती है, जैसे: #define&nbsp;&nbsp;SYMBOLS_TRADING&nbsp;&nbsp;&nbsp;&nbsp;"EURUSD","GBPUSD","USDJPY","USDCHF"यह सूची स्ट्रिंग्स के रूप में कॉमा द्वारा विभाजित होनी चाहिए। सूची एक नई लाइन के अंत में समाप्त होती है। SYMBOLS_TRADING को इस प्रकार परिभाषित किया जा सकता है: #define&nbsp;&nbsp;SYMBOLS_TRADING&nbsp;&nbsp;&nbsp;&nbsp;"MARKET_WATCH"इसका मतलब है कि सभी संकेत Market Watch से उपयोग किए जाएंगे। इस विधि का उपयोग "ऑन द फ्लाई" संकेतों की सूची को बदलने के लिए किया जा सकता है। बस Market Watch में आवश्यक संकेतों को जोड़ें या हटा दें। CHART_EVENT_SYMBOL इवेंट प्रकार को ENUM_CHART_EVENT_SYMBOL एनुमरेशन से फ्लैग या उनके संयोजन से परिभाषित किया जाता है। विवरण यहाँ देखें (रूसी में)। यहाँ इवेंट प्रकारों के उदाहरण दिए गए हैं: //--- Example 1. OnTick event: #define&nbsp;&nbsp;CHART_EVENT_SYMBOL CHARTEVENT_TICK //--- Example 2. NewBar M1 and New Bar H1: #define &nbsp;CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M12. इंक्लूड फ़ाइल। OnTick(string symbol).mqh फ़ाइल आवश्यक है, इस फ़ाइल में OnTick(string symbol) फंक्शन का कार्यान्वयन है। यह OnTick(string symbol) फंक्शन का उपयोग करने का एक सरल तरीका प्रदान करता है। कुछ मानक फंक्शंस को एक्सपर्ट एडवाइजर के कोड में घोषित किया जाना चाहिए, भले ही वे खाली हों। 3. स्ट्रेटेजी टेस्ट। जैसा कि आप जानते हैं (वर्तमान में), OnChartEvent स्ट्रेटेजी टेस्ट में समर्थित नहीं है। इस समस्या को हल करने के लिए, इवेंट्स को संभालने के लिए वैश्विक वेरिएबल्स का उपयोग किया जाता है। यह तरीका केवल स्ट्रेटेजी टेस्ट में उपयोग किया जाता है, सभी अन्य मामलों (वास्तविक/डेमो खातों) में, इवेंट्स को OnChartEvent के माध्यम से संसाधित किया जाता है। यहाँ एक विशेषता है। स्ट्रेटेजी टेस्ट में OnTick(string symbol) उन संकेतों के टिक पर काम करेगा, जो स्ट्रेटेजी टेस्ट की सेटिंग्स में निर्दिष्ट हैं। दूसरे शब्दों में, यह OnTick() की तरह काम करता है, लेकिन इसे चयनित संकेतों पर नए टिक आने पर भी कॉल किया जाता है। स्ट्रेटेजी टेस्ट में काम करने के लिए SYMBOLS_TRADING को संकेतों की सूची के रूप में निर्दिष्ट किया जाना चाहिए। 4. "स्पाई"। यह "स्पाई" (एजेंट-इंडिकेटर्स) का उपयोग करता है। "Spy Control panel MCM.ex5" फ़ाइल को \\MQL5\Indicators\ फ़ोल्डर में रखा जाना चाहिए। 5. संग्रह से फ़ाइलों को \\MQL5 फ़ोल्डर में निकालना चाहिए। आवश्यक फ़ाइलें: /MQL5/Experts/OnTick(string symbol).mq5 - एक्सपर्ट एडवाइजर का उदाहरण, टेम्पलेट का स्रोत कोड; /MQL5/Experts/OnTick(string symbol).ex5 - एक्सपर्ट एडवाइजर का संकलित फ़ाइल; /MQL5/Indicators/Spy Control panel MCM.mq5 - एजेंट-इंडिकेटर, स्रोत कोड; /MQL5/Indicators/Spy Control panel MCM.ex5 - एजेंट-इंडिकेटर, संकलित फ़ाइल; /MQL5/Include/OnTick(string symbol).mqh - OnTick(string symbol) फंक्शन के कार्यान्वयन के लिए सभी आवश्यक फ़ंक्शंस के साथ इंक्लूड फ़ाइल।

2011.02.02
पहला पिछला 56 57 58 59 60 61 62 63 अगला अंतिम