नमस्कार दोस्तों! आज हम बात करेंगे ट्रेलिंग स्टॉप के बारे में, जो हमारी ट्रेडिंग को एक नया मोड़ देता है। ट्रेलिंग स्टॉप हमें अपने स्टॉप लॉस को प्रॉफिट क्षेत्र में ले जाने की सुविधा देता है, जिससे हम अपनी ट्रेड्स को सुरक्षित रख सकते हैं।
कोड की शुरुआत
आइए हम ट्रेलिंग स्टॉप पैरामीटर्स को सेट करने से शुरू करें:
input bool isTrailingStop = true; //ट्रेलिंग स्टॉप input int trailingStart = 15; //ट्रेलिंग प्रारंभ (पिप्स) input int trailingStep = 5; //ट्रेलिंग स्टेप (पिप्स) input int MagicNumber = 0; //मैजिक नंबर
ग्लोबल वेरिएबल
//ग्लोबल वेरिएबल double myPoint = 0.0;
OnInit() फंक्शन
जब हम इस EA को चलाते हैं, तो OnInit() फंक्शन पहली बार चलाया जाएगा और इस फंक्शन में हम इनपुट वेरिएबल्स को मान्य और प्रारंभ करेंगे।
int OnInit() { if (isTrailingStop && trailingStart <= 0){ Alert ("पैरामीटर्स गलत हैं"); return(INIT_PARAMETERS_INCORRECT); } myPoint = GetPipPoint(Symbol()); return(INIT_SUCCEEDED); }
OnTick() फंक्शन
हर बार जब चार्ट पर कोई प्राइस मूवमेंट (टिक) होता है, तो OnTick() फंक्शन चलाया जाएगा। इस फंक्शन के अंदर हम setTrailingStop() फंक्शन को कॉल करेंगे।
void OnTick() { //--- setTrailingStop(MagicNumber); }
setTrailingStop() फंक्शन
void setTrailingStop(int magicNumber=0){ if (isTrailingStop==false) return; int tOrder = 0; string pair = ""; double sl = 0.0, tp = 0.0; pair = Symbol(); tOrder = OrdersTotal(); for (int i=tOrder-1; i>=0; i--){ bool hrsSelect = OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderMagicNumber() == magicNumber && StringFind(OrderSymbol(), pair, 0) == 0 ){ if (OrderType() == OP_BUY){ if ( (Bid - (trailingStart * myPoint)) >= OrderOpenPrice() && (Bid - ((trailingStart+trailingStep) * myPoint) >= OrderStopLoss() ) ){ sl = NormalizeDouble(Bid - (trailingStart * myPoint), Digits()); if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, clrBlue)){ Print ("#", OrderTicket(), " अपडेट में विफल"); } } } if (OrderType() == OP_SELL){ if ( (Ask + (trailingStart * myPoint)) <= OrderOpenPrice() && ( (Ask + ((trailingStart+trailingStep) * myPoint) <= OrderStopLoss() ) || OrderStopLoss() == 0.0) ) { sl = NormalizeDouble(Ask + (trailingStart * myPoint), Digits() ); if (!OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, clrBlue)){ Print ("#", OrderTicket(), " अपडेट में विफल"); } } } } //मैजिक नंबर के अंत }//फॉर का अंत }
अन्य जरूरी फंक्शन
एक और मानक फंक्शन है GetPipPoint()
//GetPipPoint फंक्शन double GetPipPoint(string pair) { double point= 0.0; int digits = (int) MarketInfo(pair, MODE_DIGITS); if(digits == 2 || digits== 3) point= 0.01; else if(digits== 4 || digits== 5) point= 0.0001; return(point); }
अगर आपके कोई सवाल हैं, तो कृपया कमेंट्स में पूछें या हमारे ग्रुप में शामिल हों t.me/codeMQL
हम सिग्नलफॉरेक्स ऐप भी प्रदान करते हैं। आप हमारे साथ जुड़कर अपने ट्रेडिंग को और लाभदायक बना सकते हैं।
यहां क्लिक करें ऐप डाउनलोड करने के लिए