इस छोटे से ईए का मास्टरपीस इसकी ऑर्डर्स काउंट फ़ंक्शन है।
int OrdersCounter() { int counter=0; //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) // अगर ऑर्डर इस ईए द्वारा खोली गई है { //--- यदि ब्रेक ईवन हो चुका है /* केवल खरीद के लिए जब स्टॉपलॉस ओपन प्राइस के बराबर या ऊपर है। ध्यान दें, यह कार्यान्वयन पेंडिंग ऑर्डर्स के लिए अच्छा नहीं है। यह केवल खरीद और बिक्री के लिए उपयुक्त है */ double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); if(!XBreakeven) // अगर केवल ब्रेक ईवन और ट्रेलिंग स्टॉप नहीं हुआ है { counter++; // स्थिति की गणना करें } } return counter; }
हम केवल उन ऑर्डर्स को गिनते हैं जिनके स्टॉपलॉस ओपन प्राइस से ऊपर या बराबर नहीं हैं। सरल शब्दों में, हम सभी ऑर्डर्स की गणना करते हैं जो ब्रेक ईवन या ट्रेलिंग स्टॉप से सुरक्षित नहीं हुई हैं।
double XBreakeven = OrderType()==OP_BUY ? OrderStopLoss() >= OrderOpenPrice() : OrderStopLoss() <= OrderOpenPrice(); if(!XBreakeven) // अगर केवल ब्रेक ईवन और ट्रेलिंग स्टॉप नहीं हुआ है
इसके माध्यम से हम एक काउंटर बनाते हैं जो उस मान को लौटाता है जिसका हम अपने अधिकतम स्थिति को सीमित करने के लिए उपयोग करेंगे, जो हमारे मामले में एक समय में 1 ऑर्डर पर सेट है।
if(OrdersCounter()<MaximumOrders) तो जब भी ब्रेक ईवन होता है, यह फ़ंक्शन इसकी गिनती करने की अनदेखी करेगा। चूंकि हमारे पास इस उदाहरण में केवल एक स्थिति थी, यह शून्य लौटाएगा और बूम, हम एक और बिक्री खोलते हैं और यह प्रक्रिया जारी रहती है।
यह भी संभव नहीं होता अगर मैंने ब्रेक ईवन फ़ंक्शन नहीं बनाया होता,
void BreakEvenFunction() { //--- for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS)) if(OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) { // खरीद के लिए यदि बिड ओपन प्राइस + ब्रेक ईवन पिप्स से ऊपर है, इसके विपरीत बिक्री के लिए double xHybrid = OrderType()==OP_BUY ? (Bid>OrderOpenPrice()+BreakevenPips*_Point && OrderStopLoss()<OrderOpenPrice()) : (Ask<OrderOpenPrice()-BreakevenPips*_Point && OrderStopLoss()>OrderOpenPrice()); /* केवल खरीद के लिए जब स्टॉपलॉस ओपन प्राइस के बराबर या ऊपर है, इसके विपरीत बिक्री के लिए */ if(xHybrid) { bool modfy = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrNONE); } } }
क्या आप इसे आजमाएंगे?
संबंधित पोस्ट
- MetaTrader 4 के लिए विज़ुअल ऑर्डर प्रोसेसिंग - आपके ट्रेडिंग साथी
- JS-Chaos: MetaTrader 5 के लिए बेहतरीन ट्रेडिंग सिस्टम
- MAMACD सिस्टम ट्रेडिंग के लिए आपका साथी
- MQL5 विजार्ड: दो EMA के क्रॉसओवर पर आधारित ट्रेड सिग्नल और इंट्राडे टाइम फ़िल्टर
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल