SendOrderMultiLock

Author: Copyright � 2004, MetaQuotes Software Corp.
Orders Execution
It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
SendOrderMultiLock
//+------------------------------------------------------------------+
//|                                           SendOrderMultiLock.mq4 |
//|                                                           Kordan |
//|    http://www.leprecontrading.com/client/register.php?ref=103264 |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.leprecontrading.com/client/register.php?ref=103264" // Ìîÿ ïàðòíåðêà
#property show_inputs

/*
 1. Ñîçäåíèå 30.01.2012
 Ìóëüòèâàëþòíûé ñêðèïò îòêðûòèÿ äâóõ ïðîòèâîïîëîæíîíàïðàâëåííûõ îðäåðîâ .
 Àâòîìàòè÷åñêîå îïðåäåëåíèå íàïðàâëåíèÿ îòêðûòèÿ îðäåðîâ. Åñëè ïðè íàêèäûâàíèè ñêðèïòà íà ãðàôèê, âàëþòà êîòîðîãî ñîâïàäàåò ñ èíñòðóìåíòîì
 Symbol_1 èëè Symbol_2, òî áóäåò îòêðûò â BUY ñîâïàäàþùèé èíñòðóìåíò. Åñëè æå âàëþòà ãðàôèêà îòëè÷íàÿ îò òîðãóåìûõ èíñòðóìåíòîâ, 
 òî â Buy îòêðîåòñÿ Symbol_1 .
 Àâòîìàòè÷åñêîå îïðåäåëåíèå ïÿòèçíàêà .
 
 2. 04.02.2012 Ðåñòàéëèíã. Áîëåå íàäåæíîå ñðàáàòûâàíèå îðäåðîâ è êîððåêòíàÿ îáðàáîòêà îøèáîê .
*/

//--------------------------------------------------------------------

extern string  Symbol_1    = "EURUSD",    // Èíñòðóìåíò 1
               Symbol_2    = "GBPUSD";    // Èíñòðóìåíò 2                    
extern double  Lot         =      0.1;    // Îáúåì îðäåðîâ
extern int     StopLoss    =       40,    // Óðîâåíü âûñòàâëåíèÿ SL, åñëè 0, òî SL íå âûñòàâëÿåòñÿ
               TakeProfit  =       10;    // Óðîâåíü âûñòàâëåíèÿ TP, åñëè 0, òî TP íå âûñòàâëÿåòñÿ           
extern int     Slippage    =        3,    // Ìàêñèìàëüíî äîïóñòèìîå îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ
               MagicNumber =        0;    // Óíèêàëüíûé íîìåð îðäåðîâ

//--------------------------------------------------------------------

int      Dig_BUY, Dig_SELL;
double   SL_BUY, TP_BUY, TP_SELL, SL_SELL, point_BUY, point_SELL;
string   Symb_BUY, Symb_SELL;  

//--------------------------------------------------------------------

int start()
{

//--------------------------------------------------------------------

int      Dig_1 = MarketInfo(Symbol_1,MODE_DIGITS);
int      Dig_2 = MarketInfo(Symbol_2,MODE_DIGITS);
double point_1 = MarketInfo(Symbol_1,MODE_POINT) ;
double point_2 = MarketInfo(Symbol_2,MODE_POINT) ;
   if (Dig_1 == 5 || Dig_2 == 3 || Dig_2 == 5 || Dig_1 == 3)
      {
      StopLoss   *= 10;
      TakeProfit *= 10;
      Slippage   *= 10;
      }
   
//--------------------------------------------------------------------

if (Symbol_2 == Symbol())
   {
   Symb_BUY   = Symbol_2;
   Symb_SELL  = Symbol_1;
   Dig_BUY    = Dig_2   ;
   Dig_SELL   = Dig_1   ;
   point_BUY  = point_2 ;
   point_SELL = point_1 ;
   }
      else
   {
   Symb_BUY   = Symbol_1;
   Symb_SELL  = Symbol_2;
   Dig_BUY    = Dig_1   ;
   Dig_SELL   = Dig_2   ;
   point_BUY  = point_1 ;
   point_SELL = point_2 ;
   }   

//--------------------------------------------------------------------

while(!IsTradeAllowed()) Sleep(100); RefreshRates()    ;
   double ASK_BUY  = MarketInfo(Symb_BUY, MODE_ASK)    ;
   double ASK      = NormalizeDouble(ASK_BUY, Dig_BUY );
      TP_BUY  = IIFd(TakeProfit == 0, 0, NormalizeDouble(ASK_BUY  + TakeProfit*point_BUY,  Dig_BUY ));
      SL_BUY  = IIFd(StopLoss   == 0, 0, NormalizeDouble(ASK_BUY  - StopLoss  *point_BUY,  Dig_BUY )); 
         Print("Îòêðûòèå îðäåðà BUY" ); OPENORDER ("Buy", ASK, TP_BUY, SL_BUY)                       ;
         
while(!IsTradeAllowed()) Sleep(100); RefreshRates()    ;
   double BID_SELL = MarketInfo(Symb_SELL,MODE_BID)    ;
   double BID      = NormalizeDouble(BID_SELL,Dig_SELL);
      TP_SELL = IIFd(TakeProfit == 0, 0, NormalizeDouble(BID_SELL - TakeProfit*point_SELL, Dig_SELL));
      SL_SELL = IIFd(StopLoss   == 0, 0, NormalizeDouble(BID_SELL + StopLoss  *point_SELL, Dig_SELL));
         Print("Îòêðûòèå îðäåðà SELL"); OPENORDER ("Sell", BID, TP_SELL, SL_SELL)                    ;
         
//--------------------------------------------------------------------
         
return(0);
}

//--------------------------------------------------------------------

void OPENORDER(string ord, double price, double tp, double sl)
{
int errorBuy=0, errorSell=0, err;
   while (true)
      {  
      if (ord=="Buy" ) errorBuy =OrderSend(Symb_BUY , OP_BUY , Lot, price, Slippage, sl, tp, "Script BUY" , MagicNumber, 0,Blue);
      if (ord=="Sell") errorSell=OrderSend(Symb_SELL, OP_SELL, Lot, price, Slippage, sl, tp, "Script SELL", MagicNumber, 0, Red);     
         if (errorBuy ==-1) { Print("Íåóäà÷íîå îòêðûòèå Buy" ); ShowERROR(Symb_BUY ); }         
         if (errorSell==-1) { Print("Íåóäà÷íîå îòêðûòèå SELL"); ShowERROR(Symb_SELL); }
            err++; Sleep(2000); RefreshRates();          
         if (errorBuy || errorSell || err > 10) 
      return;
      }
return;
}     

//--------------------------------------------------------------------

void ShowERROR(string symb)
   {
   int err=GetLastError();
   switch (err)
      {    
      case 1   :                                                      return;
      case 2   :  Alert("Îáùàÿ îøèáêà "                         )   ; return;
      case 3   :  Alert("Íåïðàâèëüíûå ïàðàìåòðû "        ,  symb)   ; return;
      case 4   :  Alert("Òîðãîâûé ñåðâåð çàíÿò "                )   ; return;
      case 6   :  Alert("Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì"         )   ; return;
      case 129 :  Alert("Íåïðàâèëüíàÿ öåíà "             ,  symb)   ; return;
      case 130 :  Alert("Áëèçêèå ñòîïû  "                ,  symb)   ; return;
      case 131 :  Alert("Íåïðàâèëüíûé îáúåì "            ,  symb)   ; return;
      case 132 :  Alert("Ðûíîê çàêðûò "                         )   ; return;
      case 133 :  Alert("Òîðãîâëÿ çàïðåùåíà "                   )   ; return;
      case 134 :  Alert("Íåäîñòàòî÷íî äåíåã   "                 )   ; return;
      case 135 :  Alert("Öåíà èçìåíèëàñü "               ,  symb)   ; return;
      case 136 :  Alert("Íåò öåí "                       ,  symb)   ; return;
      case 137 :  Alert("Áðîêåð çàíÿò "                         )   ; return;
      case 138 :  Alert("Íîâûå öåíû, Ðåêâîò "            ,  symb)   ; return;
      case 146 :  Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà "           )   ; return;  
      default  :  Alert("Îøèáêà  " ,err," "              ,  symb)   ; return;
      }
   }

//--------------------------------------------------------------------

double IIFd(bool condition, double ifTrue, double ifFalse) 
{ if (condition) return(ifTrue); else return(ifFalse); }

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---