परिचय
ज्यादातर एक्सपर्ट एडवाइजर्स (ईए) ऑर्डर को टेक प्रॉफिट के तहत खरीद मूल्य से पिप्स की दूरी के आधार पर बंद करते हैं। लेकिन ईए पर्सेप्ट्रॉन द्वारा उपयोग किया गया कोड मुख्य रूप से वर्तमान लाभ के आधार पर है। यह दृष्टिकोण आपको कई खुले पदों के साथ टेक प्रॉफिट को आसानी से प्रबंधित करने की अनुमति देता है, जिससे आप मैजिक नंबर के आधार पर कुल वर्तमान लाभ की निगरानी कर सकते हैं, जब आप एक साथ कई बॉट इंस्टेंस या विभिन्न ईए का उपयोग कर रहे हों। मुझे अपने दोस्तों में जोड़ें और समाचारों के लिए मेरे फीड का पालन करें!
इस कोड का उपयोग करने से कुछ समस्याओं पर सकारात्मक प्रभाव भी पड़ सकता है जो पिप्स के आधार पर टेक प्रॉफिट का उपयोग करते समय हो सकती हैं। उदाहरण के लिए, पिप्स के आधार पर टेक प्रॉफिट आपके ब्रोकर के स्लिपेज के आधार पर बदल सकता है, जिससे लाभ सीमित हो जाता है। वर्तमान लाभ के आधार पर कोड का उपयोग करके, आप इस समस्या से बच सकते हैं और अपने ट्रेड्स पर अधिक नियंत्रण रख सकते हैं।
यदि आप यह सीखना चाहते हैं कि वर्तमान लाभ के आधार पर टेक प्रॉफिट कैसे सेट करें, तो आप ईए स्विंगबॉट के कोड को संदर्भ के रूप में उपयोग कर सकते हैं।
…
कुल ऑर्डर
आइए हम उस कोड से शुरू करें जो समान मैजिक नंबर के साथ खुले ऑर्डरों की कुल संख्या की गणना करता है।
मैजिक नंबर एक अनूठा पहचानकर्ता है जो व्यापारी या ईए (एक्सपर्ट एडवाइजर) द्वारा ऑर्डर को सौंपा जाता है।
कोड एक वेरिएबल total_orders को जीरो से प्रारंभ करता है। फिर यह सभी खुले ऑर्डरों के माध्यम से एक for लूप का उपयोग करके लूप करता है और प्रत्येक ऑर्डर का चयन करता है OrderSelect() फंक्शन का उपयोग करके। यदि कोई ऑर्डर सफलतापूर्वक चुना जाता है, तो यह total_orders वेरिएबल को एक से बढ़ा देता है।
//----------------- int total_orders = 0; for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == MagicNumber) { total_orders++; } } }
…
वर्तमान लाभ की गणना करना
कोड दो वेरिएबल को प्रारंभ करता है: ProfittoMinimo और Profit। वेरिएबल ProfittoMinimo इस स्तर पर टेक प्रॉफिट को सक्रिय करने के लिए उपयोग किया जाता है, यह मान खाते की मुद्रा में व्यक्त किया जाता है। वेरिएबल Profit सभी खुले पदों के वर्तमान लाभ को संचित करने के लिए उपयोग किया जाता है जिनका मैजिक नंबर समान होता है। वेरिएबल StopLoss स्टॉप लॉस के लिए उपयोग किया जाता है।
कोड सभी खुले पदों के माध्यम से लूप करने के लिए एक for लूप का उपयोग करता है, जो OrdersTotal() फंक्शन का उपयोग करता है। प्रत्येक खुले पद के लिए, संबंधित ऑर्डर को OrderSelect() फंक्शन का उपयोग करके चुना जाता है। यदि ऑर्डर सफलतापूर्वक चुना जाता है और समान मैजिक नंबर है, तो ऑर्डर का लाभ Profit वेरिएबल में जोड़ा जाता है।
double ProfittoMinimo = 3; // लक्षित लाभ double Profit = 0; // वर्तमान लाभ for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == MagicNumber) // कई ईए के मामले में, आप सभी ऑर्डरों पर कार्य बनाए रखने के लिए मैजिक नंबर फ़िल्टर हटा सकते हैं। { Profit += OrderProfit(); } }
न्यूनतम लाभ को एक बाह्य वेरिएबल के रूप में सेट किया जा सकता है और ईए विकल्पों में कॉन्फ़िगर किया जा सकता है:

…
यदि लाभ प्राप्त होता है तो पदों को बंद करना
कोड सभी खुले ऑर्डरों के माध्यम से लूप करने के लिए एक for लूप का उपयोग करता है, जो OrdersTotal() फंक्शन का उपयोग करता है। लूप अंतिम ऑर्डर से शुरू होता है और पहले ऑर्डर तक जाता है। प्रत्येक ऑर्डर के लिए, संबंधित व्यापार को OrderSelect() फंक्शन का उपयोग करके चुना जाता है।
यदि चयनित व्यापार का वर्तमान चार्ट के साथ समान प्रतीक है, प्रकार OP_BUY का है, और कोड में निर्दिष्ट मैजिक नंबर के समान है, तो यह जांचता है कि व्यापार का Profit न्यूनतम लाभ के बराबर या उससे अधिक है। यदि ऐसा है, तो यह OrderClose() फंक्शन का उपयोग करके व्यापार को बिड मूल्य पर बंद कर देता है और एक संदेश प्रिंट करता है जो यह दर्शाता है कि खरीद आदेश बंद कर दिया गया है।
इसी प्रकार, यदि चयनित व्यापार का वर्तमान चार्ट के साथ समान प्रतीक है, प्रकार OP_SELL का है, और कोड में निर्दिष्ट मैजिक नंबर के समान है, तो यह जांचता है कि व्यापार का Profit न्यूनतम लाभ के बराबर या उससे अधिक है। यदि ऐसा है, तो यह OrderClose() फंक्शन का उपयोग करके व्यापार को पूछ मूल्य पर बंद कर देता है और एक संदेश प्रिंट करता है जो यह दर्शाता है कि बिक्री आदेश बंद कर दिया गया है।
for(int e = OrdersTotal() - 1; e >= 0; e--) { if(OrderSelect(e, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) // आदेश केवल तभी संशोधित किया जाता है जब मैजिक नंबर वर्तमान आदेश के मैजिक नंबर के समान हो। { if(Profit >= ProfittoMinimo) { OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()), 3); // बिड मूल्य Print("खरीद आदेश बंद कर दिया गया", Profit, " - न्यूनतम स्टॉपलॉस: ",MarketInfo(Symbol(), MODE_STOPLEVEL)); } } if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber) { if(Profit >= ProfittoMinimo) { OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()), 3); // पूछ मूल्य Print("बिक्री आदेश बंद कर दिया गया", Profit, " - न्यूनतम स्टॉपलॉस: ",MarketInfo(Symbol(), MODE_STOPLEVEL)); } } } }
…
निष्कर्ष
यह कोड सभी उन स्थिति-बंद रणनीतियों के लिए उपयोगी हो सकता है जो टेक प्रॉफिट के आधार पर हैं, लेकिन इसे वर्तमान लाभ में वृद्धि के आधार पर एक ट्रेलिंग स्टॉप के साथ भी जोड़ा जा सकता है। सिस्टम कई एक्सपर्ट एडवाइजर्स के मामले में भी उपयोगी है। यदि आप मैजिक नंबर पर if शर्त को बाहर करते हैं, तो आप सभी सक्रिय ईए से सभी खुले पदों को एक साथ नियंत्रित करने के लिए सामान्य टेक प्रॉफिट स्तर सेट कर सकते हैं।
संबंधित पोस्ट
- MetaTrader 4 के लिए विज़ुअल ऑर्डर प्रोसेसिंग - आपके ट्रेडिंग साथी
- MQL5 विजार्ड: दो EMA के क्रॉसओवर पर आधारित ट्रेड सिग्नल और इंट्राडे टाइम फ़िल्टर
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: सुबह/शाम के तारे के आधार पर ट्रेड सिग्नल + CCI के साथ एक्सपर्ट एडवाइजर