नमस्कार दोस्तों! आज हम बात करेंगे ट्रेलिंग स्टॉप के बारे में, जो हमारी ट्रेडिंग को एक नया मोड़ देता है। ट्रेलिंग स्टॉप हमें अपने स्टॉप लॉस को प्रॉफिट क्षेत्र में ले जाने की सुविधा देता है, जिससे हम अपनी ट्रेड्स को सुरक्षित रख सकते हैं।
कोड की शुरुआत
आइए हम ट्रेलिंग स्टॉप पैरामीटर्स को सेट करने से शुरू करें:
input bool isTrailingStop = true; //ट्रेलिंग स्टॉपinput int trailingStart = 15; //ट्रेलिंग प्रारंभ (पिप्स)input int trailingStep = 5; //ट्रेलिंग स्टेप (पिप्स)input int MagicNumber = 0; //मैजिक नंबर
ग्लोबल वेरिएबल
//ग्लोबल वेरिएबलdouble myPoint = 0.0;
OnInit() फंक्शन
जब हम इस EA को चलाते हैं, तो OnInit() फंक्शन पहली बार चलाया जाएगा और इस फंक्शन में हम इनपुट वेरिएबल्स को मान्य और प्रारंभ करेंगे।
intOnInit() { if (isTrailingStop && trailingStart <= 0){ Alert ("पैरामीटर्स गलत हैं"); return(INIT_PARAMETERS_INCORRECT); } myPoint = GetPipPoint(Symbol()); return(INIT_SUCCEEDED); }
OnTick() फंक्शन
हर बार जब चार्ट पर कोई प्राइस मूवमेंट (टिक) होता है, तो OnTick() फंक्शन चलाया जाएगा। इस फंक्शन के अंदर हम setTrailingStop() फंक्शन को कॉल करेंगे।
voidOnTick() { //--- 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; elseif(digits== 4 || digits== 5) point= 0.0001; return(point); }
अगर आपके कोई सवाल हैं, तो कृपया कमेंट्स में पूछें या हमारे ग्रुप में शामिल हों t.me/codeMQL
हम सिग्नलफॉरेक्स ऐप भी प्रदान करते हैं। आप हमारे साथ जुड़कर अपने ट्रेडिंग को और लाभदायक बना सकते हैं।

टिप्पणी 0