Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
OpenOrderM
#property copyright "Copyright © 2010 - 2011, Õëûñòîâ Âëàäèìèð, â ðåäàêöèè AMRo"
#property link "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Èíîãäà òðåáóåòñÿ ïîìî÷ü ñîâåòíèêó äîáàâèòü îðäåð, íî ÷òîáû ñîâåòíèê åãî ïðèíÿë çà ñâîé
íåîáõîäèì Magic íîìåð. Äëÿ âûñòàâëåíèÿ îðäåðà ñ òàêèì íîìåðîì è ïðåäíàçíà÷åí ýòîò ñêðèïò.
Âîçìîæíà îäíîâðåìåííàÿ óñòàíîâêà äî 6 òèïîâ îðäåðîâ. Ïðè ñáîÿõ ñâÿçè èëè ðåçêîì äâèæåíèè öåíû
áóäåò âûïîëíåíî 10 ïîïûòîê âûñòàâëåíèÿ îðäåðà, ïîñëå ÷åãî ñêðèïò çàêîí÷èò ðàáîòó.
*/
//--------------------------------------------------------------------
extern int MAGIC = 0; //óíèêàëüíûé íîìåð îðäåðà
extern string t1=" Âûêëþ÷àòåëè ðûíî÷íûõ îðäåðîâ ";
extern bool BUY = false; //îòêðûòü îðäåð BUY
extern bool SELL = false; //îòêðûòü îðäåð SELL
extern string t2=" Âûêëþ÷àòåëè îòëîæåííûõ îðäåðîâ ";
extern bool BUY_STOP = false; //ïîñòàâèòü îðäåð BUY STOP
extern bool BUY_LIMIT = false; //ïîñòàâèòü îðäåð BUY LIMIT
extern bool SELL_STOP = false; //ïîñòàâèòü îðäåð SELL STOP
extern bool SELL_LIMIT = false; //ïîñòàâèòü îðäåð SELL LIMIT
extern string t3=" Ïàðàìåòðû ðûíî÷íûõ è îòëîæåííûõ îðäåðîâ ";
extern double Lot = 0.1; //îáúåì îðäåðà
extern int takeprofit = 0; //óðîâåíü âûñòàâëåíèÿ TP, åñëè 0, òî TP íå âûñòàâëÿåòñÿ
extern int stoploss = 0; //óðîâåíü âûñòàâëåíèÿ SL, åñëè 0, òî SL íå âûñòàâëÿåòñÿ
extern int DistanceSet = 35; //ðàññòîÿíèå îò ðûíêà äëÿ îòëîæåííèêà
extern int Proskalz = 3; //ìàêñèìàëüíî äîïóñòèìîå îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy");
BUY=false;
}
if (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell");
SELL=false;
}
if (BUY_STOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy Stop");
BUY_STOP=false;
}
if (SELL_STOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell Stop");
SELL_STOP=false;
}
if (BUY_LIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy Limit");
BUY_LIMIT=false;
}
if (SELL_LIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell Limit");
SELL_LIMIT=false;
}
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
int ticket = -1;
int err;
while (ticket<0)
{
if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),Proskalz,SL,TP,"MAGIC_" + MAGIC,MAGIC,0);
if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Proskalz,SL,TP,"MAGIC_" + MAGIC,MAGIC,0);
if (ord=="Buy Stop") ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),Proskalz,SL,TP,"MAGIC_" + MAGIC,MAGIC,0);
if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),Proskalz,SL,TP,"MAGIC_" + MAGIC,MAGIC,0);
if (ord=="Buy Limit") ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),Proskalz,SL,TP,"MAGIC_" + MAGIC,MAGIC,0);
if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),Proskalz,SL,TP,"MAGIC_" + MAGIC,MAGIC,0);
Message(MAGIC);
if (ticket==-1) //íåóäà÷íàÿ ïîïûòêà
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
if (ticket || err >10) return;
}
return;
}
//--------------------------------------------------------------------
void Message(string MAGIC) {
Comment("MAGIC_" + MAGIC);
Print("MAGIC_" + MAGIC);
}
//--------------------------------------------------------------------
void ShowERROR()
{
int err=GetLastError();
switch ( err )
{
case 1: return;
case 2: Alert("Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì ",Symbol());return;
case 3: Alert("Error íåïðàâèëüíûå ïàðàìåòðû ",Symbol());return;
case 130: Alert("Error áëèçêèå ñòîïû Ticket ",Symbol());return;
case 134: Alert("Íåäîñòàòî÷íî äåíåã ",Symbol());return;
case 146: Alert("Error Ïîäñèñòåìà òîðãîâëè çàíÿòà ",Symbol());return;
case 129: Alert("Error Íåïðàâèëüíàÿ öåíà ",Symbol());return;
case 131: Alert("Error Íåïðàâèëüíûé îáúåì ",Symbol());return;
case 4200:Alert("Error Îáúåêò óæå ñóùåñòâóåò ",Symbol());return;
default: Alert("Error " ,err," ",Symbol());return;
}
}
//--------------------------------------------------------------------
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
---