// ----------------------------------------------- ------------------- /| كروسEMA.mq4 |/| امين احسوس |/|
https://www.mql5.com/en/users/simpletradeea|/ ----------------------------------------------- ------------------- #property copyright Amine Ahsous #property link https://www.mql5.com/en/users/simpletradeea #property version 1.00 #property صارم MagicNumber خارجي = 0 ؛ حجم اللوتات الخارجية المزدوجة = 0.01 ؛ خارجي int StopLoss = 0 ؛ خارجي int TakeProfit = 0 ؛ إغلاق منطقي خارجي AutoClose = صحيح ؛ منطقي خارجي UseTrailingStop = خطأ ؛ خارجي int TrailingStop = 0 ؛ منطقي خارجي EmailAlert = صحيح ؛ السلسلة الخارجية Mode1 ====== الوضع الأول ===== ؛ خارجي int FirstMA = 5 ؛ خارجي ENUM_MA_METHOD FirstMAmode = MODE_EMA ، خارجي int SecondMA = 100 ؛ خارجي ENUM_MA_METHOD SecondMAmode = MODE_EMA ، نقطة مزدوجة أرقام int ، Q ؛ مزدوج SL ، TP ، بيع ، شراء ، إغلاق ، نقل ؛ int ThisBarTrade = 0 ؛ منطقي NewBar ؛/ ----------------------------------------------- ------------------- /| وظيفة التهيئة الخبيرة |/ ----------------------------------------------- ------------------- int OnInit () {//--- if (Digits == 5 || Digits == 3) Q = 10؛ آخر س = 1 ؛ إذا (Digitslt؛ 4) {نقطة = 0.01 ؛ أرقام = 2 ؛ } آخر {نقطة = 0.0001 ؛ أرقام = 4 ؛ }/--- إرجاع (INIT_SUCCEEDED) ، }/ ---------------------------------------------- -------------------- /| وظيفة إزالة التهيئة الخبيرة |/ ----------------------------------------------- ------------------- void OnDeinit (const int reason) {//---}/ ------------- -------------------------------------------------- --- /| وظيفة القراد الخبير |/ ----------------------------------------------- ------------------- void OnTick () {//--- if (Bars! = ThisBarTrade) {NewBar = true؛ ThisBarTrade = أشرطة ؛ NewBar = صحيح ، } مزدوج FirstEMA2 = iMA (Symbol ()، 0، FirstMA، 0، FirstMAmode، PRICE_CLOSE، 2) ؛ مزدوج FirstEMA1 = iMA (الرمز ()، 0، FirstMA، 0، FirstMAmode، PRICE_CLOSE، 1) ؛ الثواني المزدوجة EMA2 = iMA (الرمز ()، 0، SecondMA، 0، SecondMAmode، PRICE_CLOSE، 2) ؛ الثواني المزدوجة EMA1 = iMA (الرمز ()، 0، SecondMA، 0، SecondMAmode، PRICE_CLOSE، 1) ؛ if (NewBar) {if (FirstEMA1gt؛ SecondEMA1FirstEMA2lt؛ = SecondEMA2) {if (StopLoss == 0) {SL = 0؛} else {SL = Ask-StopLoss * point؛} if (TakeProfit == 0) {TP = 0 ؛} else {TP = Ask TakeProfit * point؛} buy = OrderSend (Symbol ()، OP_BUY، LotSize، Ask، 3 * Q، SL، TP، Buy Market، MagicNumber، 0، clrBlue)؛ إذا (EmailAlert) SendMail (الرمز () ، أمر الشراء المفتوح) ؛ إذا (إغلاق تلقائي) CloseOrders (OP_SELL) ؛ } if (FirstEMA1lt؛ SecondEMA1FirstEMA2gt؛ = SecondEMA2) {if (StopLoss == 0) {SL = 0؛} else {SL = Bid ​​ StopLoss * point؛} if (TakeProfit == 0) {TP = 0؛} else { TP = Bid-TakeProfit * point ؛} بيع = إرسال الطلب (الرمز () ، OP_SELL ، حجم اللوت ، العطاء ، 3 * Q ، SL ، TP ، بيع السوق ، MagicNumber ، 0 ، clrRed) ؛ إذا (EmailAlert) SendMail (الرمز () ، أمر بيع مفتوح) ؛ إذا (إغلاق تلقائي) CloseOrders (OP_BUY) ؛ } NewBar = false ؛ }}/ --------------------------------------------- --------------------- int orderscnt () {int cnt = 0 ؛ لـ (int i = 0؛ ilt؛ OrdersTotal ()؛ i ) {if (OrderSelect (i، SELECT_BY_POS، MODE_TRADES)) if (OrderSymbol () == Symbol () MagicNumber == OrderMagicNumber ()) {cnt ؛ }} عودة (cnt) ؛ }/ /int CloseOrders (int type) {int cnt = OrdersTotal ()؛ لـ (int i = cnt-1؛ igt؛ = 0؛ i--) {if (OrderSelect (i، SELECT_BY_POS، MODE_TRADES) == true) if (OrderSymbol () == Symbol () OrderMagicNumber () == MagicNumberOrderType ( ) == type) {close = OrderClose (OrderTicket ()، OrderLots ()، OrderClosePrice ()، 3 * Q، clrWhite) ؛ }} return (0)؛ }/********* void ModifyStopLoss (double ldStop) {bool fm؛ مزدوج ldOpen = OrderOpenPrice () ، مزدوج ldTake = OrderTakeProfit () ، fm = OrderModify (OrderTicket () ، ldOpen ، ldStop ، ldTake ، 0 ، وردي) ؛ } void sub_trailingsl () {for (int i = 0؛ ilt؛ OrdersTotal ()؛ i ) {if (OrderSelect (i، SELECT_BY_POS، MODE_TRADES)) {if (OrderSymbol () == Symbol () OrderMagicNumber () == MagicNumber ) {if (OrderType () == OP_SELL) {if (OrderOpenPrice () - Askgt؛ = TrailingStop * point (OrderStopLoss () == 0 || OrderStopLoss () gt؛ = OrderOpenPrice ()) OrderStopLoss ()! = NormalizeDouble ( Ask TrailingStop * point، digits)) {ModifyStopLoss (NormalizeDouble (Ask TrailingStop * point، digits))؛ } if (OrderStopLoss ()! = 0OrderStopLoss ()! = NormalizeDouble (Ask TrailingStop * point، digits) OrderStopLoss () lt؛ OrderOpenPrice () OrderStopLoss () - Askgt؛ TrailingStop * نقطة) {ModifyStopLoss (NormalizeDouble (* Ask TrailingStopLoss (NormalizeDouble (* نقطة ، أرقام)) ؛ }} if (OrderType () == OP_BUY) {if (Bid-OrderOpenPrice () gt؛ = TrailingStop * point (OrderStopLoss () == 0 || OrderStopLoss () lt؛ = OrderOpenPrice ()) OrderStopLoss ()! = NormalizeDouble (Bid-TrailingStop * نقطة ، أرقام)) {ModifyStopLoss (NormalizeDouble (Bid-TrailingStop * point ، digits)) ؛ } if (OrderStopLoss ()! = 0OrderStopLoss ()! = NormalizeDouble (Bid-TrailingStop * نقطة ، أرقام) OrderStopLoss () gt؛ OrderOpenPrice () Bid-OrderStopLoss () gt؛ (TrailingStop * point)) {ModifyStopLoss (NormalizeDouble (Bid) -TrailingStop * نقطة ، أرقام)) ؛ }}}}}}/==========