Orders Execution
Miscellaneous
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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---