यह कोड ब्लॉक तब भी काम करेगा जब आप स्टॉप लॉस का उपयोग करें या न करें।
आवश्यकताएँ
- आपको "Trade.mqh" को शामिल करना होगा ताकि CTrade क्लास तक पहुँच मिल सके, जो आपको पोजिशन और ऑर्डर के साथ काम करने की अनुमति देता है।
#include <Trade\Trade.mqh> // <<------------------------------------------ इस "Trade.mqh" को शामिल करें ताकि CTrade क्लास तक पहुँच मिल सके
- आपको ट्रेलिंग दूरी को समायोजित करने के लिए एक इनपुट पैरामीटर सेट करना होगा। यह आवश्यक नहीं है, लेकिन सुविधा के लिए अच्छा है।
input double Traling_Step = 3.0;
- आपको CTrade क्लास के लिए एक उदाहरण परिभाषित करना होगा। नाम कुछ भी हो सकता है। इसे OnInit इवेंट हैंडलर के बाद परिभाषित करना बेहतर होगा।
- फिर आपको यह जाँचने के लिए एक if स्टेटमेंट बनाना होगा कि क्या वर्तमान में कोई पोजिशन चल रही है। यह स्टेटमेंट हर टिक के लिए Check_TrailingStop(); फंक्शन को कॉल करता है। यह महत्वपूर्ण है क्योंकि EA को इसे तेज और स्मूद ट्रेल करना चाहिए। इस स्टेटमेंट को OnTick इवेंट हैंडलर के शीर्ष पर रखना याद रखें ताकि सही तरीके से काम कर सके।
//+------------------------------------------------------------------+ //| एक्सपर्ट इनिशियलाइजेशन फंक्शन | //+------------------------------------------------------------------+ int OnInit() { //--- टाइमर बनाएं EventSetTimer(60); //--- return(INIT_SUCCEEDED); } CTrade trade; // <<------------------------------------------ "CTrade" क्लास घोषित करें। आप "trade" को किसी भी नाम से बदल सकते हैं
void OnTick() { if(PositionsTotal() > 0) // यदि कोई पोजिशन चल रही है, तो हर टिक के लिए ट्रेलिंग स्टॉप फंक्शन को कॉल करें। { Check_TralingStop(); } }
- आपको Check_TrailingStop(); नामक एक कस्टम फंक्शन घोषित करना होगा (इस मामले में) ताकि बाकी का काम किया जा सके। आप कोई भी नाम उपयोग कर सकते हैं।
- यह कस्टम फंक्शन सभी खोली गई पोजिशनों के माध्यम से लूप करता है और उन्हें आपकी आवश्यक दूरी के अनुसार ट्रेल करता है।
void Check_TralingStop() { int totalPositions = PositionsTotal(); for(int count =0; count < totalPositions; count++) { ulong TicketNo = PositionGetTicket(count); // पोजिशन टिकट नंबर प्राप्त करें if(PositionSelectByTicket(TicketNo)) // टिकट नंबर का उपयोग करके पोजिशन का चयन करें { if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) // पोजिशन प्रकार की जाँच करें। { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); // वर्तमान स्टॉप लॉस प्राप्त करें double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol,SYMBOL_BID); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()),_Digits); if(stopLoss < openPrice) // यदि स्टॉप लॉस सही है। { if(bidPrice > openPrice && trailingLevel > openPrice) // प्रत्येक पोजिशन के लिए एक बार चलता है। पहले SL सेट करें। trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" का उपयोग करके ट्रेलिंग स्टॉप संशोधित करें } if(bidPrice > openPrice && trailingLevel > stopLoss) // पिछले स्तर से ऊपर ट्रेलिंग स्तर की जाँच करें। { trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" का उपयोग करके ट्रेलिंग स्टॉप संशोधित करें } } if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double stopLoss = PositionGetDouble(POSITION_SL); double takeProfit = PositionGetDouble(POSITION_TP); double bidPrice = SymbolInfoDouble(_Symbol,SYMBOL_BID); double askPrice = SymbolInfoDouble(_Symbol,SYMBOL_ASK); ulong ticket = PositionGetTicket(count); double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()),_Digits); if(stopLoss < openPrice) // यदि स्टॉप लॉस सही है। { if(askPrice < openPrice && trailingLevel < openPrice) // प्रत्येक पोजिशन के लिए एक बार चलता है। पहले SL सेट करें। trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" का उपयोग करके ट्रेलिंग स्टॉप संशोधित करें } if(askPrice < openPrice && trailingLevel < stopLoss) // पिछले स्तर से ऊपर ट्रेलिंग स्तर की जाँच करें। { trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade" का उपयोग करके ट्रेलिंग स्टॉप संशोधित करें } } } } }
संबंधित पोस्ट
- MetaTrader 4 के लिए विज़ुअल ऑर्डर प्रोसेसिंग - आपके ट्रेडिंग साथी
- MQL5 विजार्ड: मॉर्निंग/ईवनिंग स्टार पैटर्न और स्टोकास्टिक पर आधारित ट्रेड सिग्नल
- MQL5 विजार्ड: मॉर्निंग/इविनिंग स्टार और RSI पर आधारित ट्रेड सिग्नल
- MQL5 विज़ार्ड: हैमर/हैंगिंग मैन पैटर्न पर आधारित ट्रेड सिग्नल्स - MetaTrader 5 के लिए
- MQL5 विजार्ड: बुलिश और बेयरिश एंगुल्फिंग पैटर्न पर आधारित ट्रेड सिग्नल