मेरे लिए एक सपना है कि मेरे पास एक ऐसा रोबोट हो जो खुद को ऑप्टिमाइज़ करे, ताकि मैं जान सकूं कि यह हमेशा सबसे अच्छे मानों के साथ काम कर रहा है। यह मेरा विनम्र प्रयास है कि मैं अपने सपने का एक हिस्सा वास्तविकता में लाऊं। संलग्न एक्सपर्ट एडवाइजर ओवरबॉट और ओवर्सोल्ड स्तरों को ऑप्टिमाइज़ करता है, जिसका उपयोग यह ट्रेड करने के लिए करता है। मेरा यह सपना है कि अन्य लोग इस विचार को लेकर इसे और बड़ा बना सकें। यदि आप ऐसा करते हैं, तो कृपया मुझे इसके बारे में बताएं। और हां, मेरे रोबोट को ऊपर दिए गए स्टार्स से रेट करना न भूलें। यह रणनीति किसी भी करेंसी पेयर पर किसी भी टाइम फ्रेम के लिए लागू होती है, बशर्ते सही सेटिंग्स का उपयोग किया जाए।
इस रोबोट के लिए कई इनपुट्स सूचीबद्ध हैं। मैंने कुछ अतिरिक्त फीचर्स शामिल किए हैं, जिनके साथ मैं खेलने का आनंद लेता हूं।
इनपुट्स
- magic = 4376 - इस EA के लिए अद्वितीय नंबर।
- optomizingPeriods = 144 - ऑप्टिमाइजेशन अवधि (बार)। यह वह बार की संख्या है जिस पर आप ऑप्टिमाइजेशन चलाना चाहते हैं। उदाहरण के लिए, यदि आप एक घंटे के चार्ट का उपयोग कर रहे हैं और आप 144 चुनते हैं, तो रोबोट 144 घंटे पीछे देखेगा, जो कि छह दिन के बराबर है।
- inAggressive = false - क्या एक्सपर्ट को आक्रामक बनाना है? जोखिम भरा। आक्रामक मोड में एक्सपर्ट एडवाइजर trades को अधिक आक्रामक तरीके से लेगा। ओवरबॉट या ओवर्सोल्ड स्तर के क्रॉस होने का इंतजार करने के बजाय, आक्रामक मोड में रोबोट केवल तब खरीदने का आदेश देगा जब हाल ही में खरीदारों की तुलना में बिकवाली अधिक लाभदायक रही हो।
- inTradeReverse = false - रिवर्स ट्रेडिंग। रिवर्स ट्रेडिंग आपके ट्रेडों की दिशा को बदल देगी।
- inOneOrderAtATime = true - क्या एक बार में केवल एक ऑर्डर खुले? यदि सही है, तो रोबोट एक समय में केवल एक ऑर्डर रखेगा, यदि गलत है, तो यह एंट्री कंडीशंस के अनुसार अनलिमिटेड ऑर्डर्स खोलेगा।
- Lot_sizing_dynamic_invalidates_static - यह केवल अन्य इनपुट्स से लॉट साइजिंग को अलग करने के लिए एक स्पेसर है।
- Lots = 0.01 - ऑर्डर्स का स्थिर लॉट साइज। अपने ऑर्डर्स के लिए स्थिर संख्या का उपयोग करके लॉट साइज निर्दिष्ट करें।
- inUseDynamicLotSize = true - डायनामिक लॉट साइज का उपयोग करें। डायनामिक लॉट साइजिंग चालू करता है, जो स्थिर लॉट साइजिंग के बजाय उपयोग किया जाएगा। हालाँकि, यदि डायनामिक लॉट साइज अमान्य साबित होता है, तो रोबोट स्थिर लॉट साइज पर वापस जाएगा।
- inPercentageOfRisk = 2 - प्रत्येक ट्रेड पर जोखिम लेने के लिए बैलेंस का % (2 = 2%)। डायनामिक लॉट साइजिंग का उपयोग करते समय, आप अपने लॉट साइज को अपने बैलेंस के प्रतिशत के रूप में निर्दिष्ट करते हैं। 2 का मतलब 2 प्रतिशत है। 0.02 दर्ज करने की आवश्यकता नहीं है, यदि आप इस तरह से दर्ज करते हैं तो उपयोग किए गए प्रतिशत वास्तव में बहुत छोटा होगा। अधिकतम प्रतिशत जो उपयोग किया जा सकता है वह 10 प्रतिशत है।
- Index_Indicator_Values - यह केवल अन्य इनपुट्स से इंडेक्स इंडिकेटर पैरामीटर को अलग करने के लिए एक स्पेसर है।
- indicator index = _RSI_ - चुनें कि आप कौन सा इंडेक्स इंडिकेटर उपयोग करना चाहते हैं। वर्तमान विकल्प हैं रिलेटिव स्ट्रेंथ इंडेक्स (RSI) या मनी फ्लो इंडेक्स (MFI)।
- IndicatorTopValue = 100 - सबसे ऊँचा मूल्य जिस पर आप ट्रेड करेंगे। यह उस ऊपरी मान पर है जिस पर आप अपने इंडिकेटर का उपयोग करके ट्रेड करेंगे। इसे 100 पर छोड़ दें ताकि सभी इंडेक्स इंडिकेटर मानों पर विचार किया जा सके।
- IndicatorBottomValue = 0 - सबसे निचला मूल्य जिस पर आप ट्रेड करेंगे। यह उस निचले मान पर है जिस पर आप अपने इंडिकेटर का उपयोग करके ट्रेड करेंगे। इसे 0 पर छोड़ दें ताकि सभी इंडेक्स इंडिकेटर मानों पर विचार किया जा सके।
- IndyTimeframe = PERIOD_CURRENT - इंडेक्स के लिए टाइमफ्रेम। चुनें कि आप ऑप्टिमाइजेशन और ट्रेडिंग के दौरान किस टाइम फ्रेम का उपयोग करना चाहते हैं। PERIOD_CURRENT का मतलब है कि यह उस चार्ट के टाइम फ्रेम का उपयोग करेगा जिस पर आप एक्सपर्ट एडवाइजर को संलग्न करते हैं। आप सिद्धांत रूप से उस समय फ्रेम का उपयोग कर सकते हैं जो आप रोबोट को संलग्न करते समय अलग होता है, यदि आप ऐसा करना चाहते हैं, तो यहाँ आप उस सेटिंग को बदल सकते हैं।
- inIndyPeriods = 14 - इंडेक्स और ATR गणनाओं के लिए औसत अवधि। औसत सच्ची सीमा (ATR) का उपयोग आगे के इनपुट विकल्पों में डायनामिक स्टॉप-लॉस या टेक-प्रॉफिट सेट करने के लिए किया जाता है।
- IndyAppPrice = PRICE_CLOSE - यदि आवश्यक हो तो इंडेक्स के लिए लागू मूल्य।
- SL_TP_Dynamic_invalidates_static_values - यह केवल अन्य इनपुट्स से स्टॉप लॉस और टेक प्रॉफिट पैरामीटर को अलग करने के लिए एक स्पेसर है।
- iStoploss = 1000 - पॉइंट्स में स्थिर स्टॉप लॉस मूल्य। स्टॉप लॉस मान पॉइंट्स में हैं, जो आपके टर्मिनल में गति की सबसे छोटी इकाई है।
- iTakeprofit = 2000 - पॉइंट्स में स्थिर टेक प्रॉफिट मूल्य। टेक प्रॉफिट मान पॉइंट्स में हैं, जो आपके टर्मिनल में गति की सबसे छोटी इकाई है।
- input inDynamic = true - क्या ATR मल्टीपल के आधार पर डायनामिक स्टॉप लॉस और टेक प्रॉफिट का उपयोग करें? यदि आप डायनामिक स्टॉप लॉस और टेक प्रॉफिट चालू करते हैं, तो वे स्थिर स्टॉप लॉस या टेक प्रॉफिट के बजाय उपयोग किए जाएंगे। डायनामिक सेटिंग्स आकर्षक हो सकती हैं क्योंकि उनके पास बाजार की स्थिति के अनुसार समायोजित करने की क्षमता होती है। जब ATR अधिक होता है, तो डायनामिक का उपयोग करने से तेज गति वाले बाजार में बड़े स्टॉप लॉस और टेक प्रॉफिट होते हैं और जब बाजार धीमा हो जाता है तो करीब सेटिंग्स।
- inStoplossMultiple = 2 - डायनामिक SL = X * ATR (औसत अवधि)। स्टॉप लॉस वह मान होगा जिसे आप यहाँ रखते हैं और औसत सच्ची सीमा (ATR) से गुणा किया जाएगा, जिसका उपयोग inIndyPeriods - इनपुट सेटिंग में निर्दिष्ट अवधि में किया जाएगा।
- inTakeProfitMultiple = 7 - डायनामिक TP = X * ATR (औसत अवधि)। टेक प्रॉफिट वह मान होगा जिसे आप यहाँ रखते हैं और औसत सच्ची सीमा (ATR) से गुणा किया जाएगा, जिसका उपयोग inIndyPeriods - इनपुट सेटिंग में निर्दिष्ट अवधि में किया जाएगा।
- Break_Even_Settings - पैडिंग ट्रिगर से कम होना चाहिए। ब्रेक ईवन सेटिंग्स के लिए एक स्पेसर। यह इस प्रकार काम करता है कि जब लाभ में बिंदुओं की संख्या ट्रिगर मात्रा से अधिक होती है, तो स्टॉप लॉस को ब्रेक ईवन पर ले जाया जाता है। यदि आपके पास एक पैडिंग सेटिंग है, तो स्टॉप लॉस को ब्रेक ईवन + पैडिंग पर ले जाया जाता है ताकि लाभ का पैडिंग मात्रा लॉक हो सके।
- bUseBreakEven = true - क्या ब्रेक ईवन (BE) का उपयोग करें। ब्रेक ईवन का उपयोग चालू या बंद करें।
- inTrigger = 200 - यदि BE = [true] तो लाभ में बिंदुओं को ट्रिगर करने के लिए सेट करें। यदि ट्रेड इन बिंदुओं में लाभ तक पहुँचता है, तो स्टॉप लॉस को ब्रेक ईवन पर ले जाया जाएगा।
- inPadding = 100 - BE पर जाने के लिए पैडिंग बिंदु ट्रिगर से कम होना चाहिए। यह लाभ के बिंदुओं की एक संख्या है जिसे आप ब्रेक ईवन पर ले जाते समय लॉक करना चाहते हैं, यह मात्रा ट्रिगर से कम होनी चाहिए।
यह रोबोट खुद को कैसे ऑप्टिमाइज़ करता है? यहाँ रहस्य है, रोबोट प्रत्येक इनडेक्स इंडिकेटर में प्रत्येक वेरिएबल का परीक्षण करता है, इसलिए यदि एक इंडिकेटर में एक सौ संभावित मान हैं, तो यह प्रत्येक मान को लेता है और उस मान पर ट्रेड करने का प्रयास करता है, एक निश्चित संख्या के बार पीछे देखता है (optomizingPeriods)। फिर यह उस मान को ग्रेड करता है कि उस मान पर ट्रेडिंग करके वह कितना पैसा जीत या हार गया। यह थोड़ा अधिक जटिल है, लेकिन आप अधिक विवरण प्राप्त करने के लिए इसे पढ़ रहे हैं, तो यह इस प्रकार है।
माना जाता है कि जब एक इंडिकेटर ओवरबॉट मान को ऊपर से पार करता है, तो एक सेल ऑर्डर जारी किया जाता है, और एक खरीद ऑर्डर तब जारी किया जाता है जब एक इंडिकेटर ओवर्सोल्ड मान से नीचे से ऊपर की ओर पार करता है। उदाहरण के लिए, यदि ओवरबॉट को 80 पर सेट किया गया था और आपके इंडिकेटर का मान पिछले बार में 85 था और अंतिम बार में 79 था, तो एक सेल ऑर्डर जारी किया जाएगा। 85 → 79 80 को नीचे की ओर पार करता है, सेल ऑर्डर जारी किया गया। यदि ओवर्सोल्ड = 23 है, तो 19 → 27 ऊपर की ओर एक खरीद ऑर्डर बनाएगा।
तो, यह रोबोट इंडिकेटर के लिए IndicatorTopValue - और IndicatorBottomValue - से हर मान लेता है और एक परीक्षण चलाता है, वास्तव में दो परीक्षण करता है। यह प्रत्येक मान पर खरीद और बिक्री का परीक्षण करता है। उदाहरण के लिए, यदि शीर्ष मान 100 है, तो यह शीर्ष मान को लेता है और optomizingPeriods पर बैकटेस्ट करता है, मान लीजिए कि यह 144 अवधि है। तो यह देखेगा कि 100 पर खरीदने और 100 पर बेचने से पिछले 144 अवधियों में लाभ होता है या नहीं। यदि यह लाभकारी है, तो यह उस डॉलर राशि को बनाए रखता है।
यह देखते हुए कि आप कितनी अवधियों का बैकटेस्ट कर रहे हैं, यह बैकटेस्ट के दौरान कई बार खरीदने का अवसर पा सकता है। यदि यह टेक प्रॉफिट पर हिट करता है इससे पहले कि यह स्टॉप लॉस पर हिट करे, तो इसका परिणाम लाभकारी होगा; यदि यह स्टॉप लॉस पर हिट करता है इससे पहले कि यह टेक प्रॉफिट पर हिट करे, तो इसका परिणाम नकारात्मक होगा। सभी अवधियों के परीक्षण के बाद, optomizingPeriods - में सभी लाभकारी परिणामों को सभी हानियों के साथ जोड़कर एक मौद्रिक मूल्य बनाए रखता है। फिर इंडिकेटर अगले छोटे इंडिकेटर मान पर आगे बढ़ता है और इसके लाभप्रदता का परीक्षण करता है।
जब यह सभी मानों का परीक्षण कर लेता है, तो यह सबसे अधिक मौद्रिक राशि वाले मान का चयन करता है और उसे अनुकूलित खरीद-मूल्य के रूप में चुनता है। इसके बाद, यह बेचना मूल्य के लिए समान जांचें करता है। जब यह समाप्त होता है, तो यह सबसे अच्छे खरीद-मूल्य की तुलना सबसे अच्छे बिक्री-मूल्य से करता है और सबसे अच्छे ट्रेड को देखता है। उदाहरण के लिए, इस ऑप्टिमाइजेशन को चलाने के बाद यह निर्धारित करता है कि सबसे अच्छा खरीद 65 पर होगा क्योंकि 65 पर खरीदने ने सबसे अधिक लाभ उत्पन्न किया, मान लीजिए बैकटेस्ट में $329; यह चेक करेगा कि सबसे अच्छा बिक्री मूल्य क्या है, और यदि सबसे अच्छा बिक्री 32 था, जिसके साथ लाभ $530 था, तो रोबोट 32 स्तर को पार करते हुए बिक्री ट्रेड के लिए देखेगा क्योंकि बिक्री खरीदने की तुलना में बेहतर है, जो लाभ उत्पन्न करता है। बैकटेस्ट में।
भविष्य के विस्तार के विचार
- एक साथ कई मुद्रा पेयर का व्यापार करें, संभवतः स्प्रेड आकार द्वारा फ़िल्टर किया गया।
- स्वयं-शिक्षण, जिसके द्वारा यह अपने खुद के ट्रेडों से सीखता है कि क्या सबसे अच्छा है।
- बैकटेस्टिंग में एक फॉरवर्ड टेस्टिंग घटक भी शामिल हो सकता है।
- चुनने के लिए अधिक संकेतकों का समावेश।
कृपया अपने सुझाव और टिप्पणियाँ छोड़ें, और रेट करना न भूलें!
अब मेटाट्रेडर मार्केटप्लेस में उपलब्ध है: https://www.mql5.com/en/market/product/26332
137-142 पंक्तियों में त्रुटि को हल करने के लिए गायब ब्रैकेट के साथ अपडेट किया गया।
संबंधित पोस्ट
- MetaTrader 4 के लिए विज़ुअल ऑर्डर प्रोसेसिंग - आपके ट्रेडिंग साथी
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विज़ार्ड: हैमर/हैंगिंग मैन पैटर्न पर आधारित ट्रेड सिग्नल्स - MetaTrader 5 के लिए
- MQL5 विजार्ड: बुलिश/बेयरिश मीटिंग लाइन्स पर आधारित ट्रेड सिग्नल्स + CCI
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल