Orders Execution
0
Views
0
Downloads
0
Favorites
mylib_v3_3
//+--------------------------------------------------------------------------------------+
//| mylib_v3_3.mq4 |
//| Copyright © 2010, Korvin ® Co. |
//| http://alecask.narod.ru/ |
//+--------------------------------------------------------------------------------------+
// bool RutineCheck()
// double GetLot(int Risk)
// double GetLot(int Risk)
// int NewOrder(int Cmd,double Lot,double PR=0,double TP=0,double SL=0)
// void DelOrders(int Cmd
// void DelOrder(int tic)
// void EditOrder(int tic,double sl, double tp)
// void CloseOrder(int tic)
// string Span(int n=0)
// int ErrorFix ()
//
#property copyright "Copyright c 2010, MQL äëÿ òåáÿ."
#property link "http://mql4you.ru"
#property library
extern int TakeProfit=0;
extern int StopLoss=0;
//+--------------------------------------------------------------------------------------+
//| Ðóòèííûå ïðîâåðêè |
//+--------------------------------------------------------------------------------------+
bool RutineCheck() {
bool trade = true;
if(DayOfWeek()==0||DayOfWeek()==6) trade=false; // â âûõîäíûå
// íå ðàáîòàåì
if(!IsTradeAllowed()) trade=false; // ïðîïóñòèì òèê åñëè
// òåðìèíàë çàíÿò
return(trade);}
//+--------------------------------------------------------------------------------------+
//| Ïîëó÷åíèå ìàêñèìàëüíîãî ðàçìåðà ëîòà ïðè çàäàííîì ðèñêå |
//+--------------------------------------------------------------------------------------+
double GetLot(int Risk)
{double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
if(Lot<Min_Lot) Lot=Min_Lot;
if(Lot>Max_Lot) Lot=Max_Lot;
if(Lot*One_Lot>Free) return(0.0);
return(Lot);}
//+--------------------------------------------------------------------------------------+
//| Îòêðûòèå íîâîãî îðäåðà |
//+--------------------------------------------------------------------------------------+
int NewOrder(int Cmd, double Lot, double PR=0, double TP=0, double SL=0, int magic=0)
{
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
{PR=NormalizeDouble(Ask,Digits);
if(TP==0 && TakeProfit>0) TP=PR+TakeProfit*Point;
if(SL==0 && StopLoss>0) SL=PR-StopLoss*Point;}
if(Cmd==OP_SELL)
{PR=NormalizeDouble(Bid,Digits);
if(TP==0 && TakeProfit>0) TP=PR-TakeProfit*Point;
if(SL==0 && StopLoss>0) SL=PR+StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",magic,0,CLR_NONE);
if(tic<0) Print("Îøèáêà îòêðûòèÿ îðäåðà: ",GetLastError());
return(tic);}
//+--------------------------------------------------------------------------------------+
//| Óäàëåíèå îðäåðîâ ïî òèïó îðäåðà SELL/BUY |
//+--------------------------------------------------------------------------------------+
void DelOrders(int Cmd)
{for(int i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderType()==Cmd) DelOrder(OrderTicket());
return;}
//+--------------------------------------------------------------------------------------+
//| Óäàëåíèå îðäåðà ïî íîìåðó òèêåòà |
//+--------------------------------------------------------------------------------------+
void DelOrder(int tic)
{while(!IsTradeAllowed()) Sleep(100);
if(OrderSelect(tic,SELECT_BY_TICKET))
if(!OrderDelete(OrderTicket(),CLR_NONE))
Print("Îøèáêà óäàëåíèÿ îðäåðà: ",GetLastError());
return;}
//+--------------------------------------------------------------------------------------+
//| Èçìåíåíèå â âûáðàííîì ïî íîìåðó îðäåðå StopLoss è/èëè TakeProfit |
//+--------------------------------------------------------------------------------------+
void EditOrder(int tic,double sl, double tp)
{while(!IsTradeAllowed()) Sleep(100);
if(OrderSelect(tic,SELECT_BY_TICKET))
if(sl==0) sl=OrderStopLoss();
if(tp==0) tp=OrderTakeProfit();
if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,CLR_NONE))
Print("Îøèáêà ðåäàêòèðîâàíèÿ îðäåðà: ",GetLastError());
return;}
//+--------------------------------------------------------------------------------------+
//| Çàêðûòèå âûáðàííîãî ïî íîìåðó îðäåðà |
//+--------------------------------------------------------------------------------------+
void CloseOrder(int tic)
{double PR=0;
while(!IsTradeAllowed()) Sleep(100);
if(OrderType()==OP_BUY) PR=NormalizeDouble(Bid,Digits);
if(OrderType()==OP_SELL) PR=NormalizeDouble(Ask,Digits);
if(OrderSelect(tic,SELECT_BY_TICKET))
if(!OrderClose(OrderTicket(),OrderLots(),PR,3,CLR_NONE))
Print("Îøèáêà çàêðûòèÿ îðäåðà: ",GetLastError());
return;}
//+--------------------------------------------------------------------------------------+
//| Âûâîä â ñòðîêå n ïðîáåëîâ |
//+--------------------------------------------------------------------------------------+
string Span(int n=0) {
string s = "\n";
while (n>0) {s=s+" "; n--;}
return (s);
}
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int GetMagic(int code)
{
string str; int i=0, magic;
while (i<=StringLen(Symbol())) {
str = StringGetChar(Symbol(),i);
magic = magic+MathPow(code,i)*StrToInteger(str);
i++;}
return(magic);}
//+--------------------------------------------------------------------------------------+
//| Ôóíêöèÿ îáðàáîòêè îøèáîê |
//+--------------------------------------------------------------------------------------+
int ErrorFix(int errcode)
{
errcode=GetLastError();
//---- Êîäû îøèáîê, âîçâðàùàåìûå òîðãîâûì ñåðâåðîì:
switch (errcode) {
//--------------------------------------
// 0 - íåò îøèáîê;
// 1 - îøèáêè òðåáóþùèå âûæäàòü;
// 2 - îøèáêè, òðåáóþùèå âìåøàòåëüñòâà;
// 3 - êðèòè÷åñêèå îøèáêè;
//--------------------------------------
case 0: errcode=0; break; // "Íåò îøèáîê" - ïðîäîëæèì
case 1: errcode=1; Print("Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí"); Sleep(500); break;
case 2: errcode=1; Print("Îáùàÿ îøèáêà"); Sleep(500); break;
case 3: errcode=2; Print("Íåïðàâèëüíûå ïàðàìåòðû"); break;
case 4: errcode=1; Print("Òîðãîâûé ñåðâåð çàíÿò"); Sleep(500); break;
case 5: errcode=2; Print("Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà");
case 6: errcode=1; Print("Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì"); Sleep(500); break;
case 7: errcode=2; Print("Íåäîñòàòî÷íî ïðàâ"); break;
case 8: errcode=1; Print("Ñëèøêîì ÷àñòûå çàïðîñû"); Sleep(5000); break;
case 9: errcode=3; Print("Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà"); break;
case 64: errcode=2; Print("Ñ÷åò çàáëîêèðîâàí"); break;
case 65: errcode=2; Print("Íåïðàâèëüíûé íîìåð ñ÷åòà"); break;
case 128: errcode=1; Print("Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè"); Sleep(500); break;
case 129: errcode=2; Print("Íåïðàâèëüíàÿ öåíà"); break;
case 130: errcode=2; Print("Íåïðàâèëüíûå ñòîïû"); break;
case 131: errcode=2; Print("Íåïðàâèëüíûé îáúåì"); break;
case 132: errcode=1; Print(TimeToStr(TimeLocal(),TIME_DATE|TIME_MINUTES)," Ðûíîê çàêðûò, æä¸ì åù¸ ÷àñ."); Sleep(3600000); break;
case 133: errcode=1; Print(TimeToStr(TimeLocal(),TIME_DATE|TIME_MINUTES),"Òîðãîâëÿ çàïðåùåíà, æä¸ì 10 ìèíóò."); Sleep(600000); break;
case 134: errcode=2; Print("Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè"); break;
case 135: errcode=2; Print("Öåíà èçìåíèëàñü"); break;
case 136: errcode=1; Print("Íåò öåí"); Sleep(500); break;
case 137: errcode=1; Print("Áðîêåð çàíÿò"); Sleep(500); break;
case 138: errcode=2; Print("Íîâûå öåíû"); Sleep(500); break;
case 139: errcode=1; Print("Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ"); Sleep(5000); break;
case 140: errcode=2; Print("Ðàçðåøåíà òîëüêî ïîêóïêà"); break;
case 141: errcode=1; Print("Ñëèøêîì ìíîãî çàïðîñîâ"); Sleep(5000); break;
case 145: errcode=1; Print("Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó"); Sleep(500); break;
case 146: errcode=1; Print("Ïîäñèñòåìà òîðãîâëè çàíÿòà"); Sleep(500); break;
case 147: errcode=2; Print("Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì"); break;
case 148: errcode=2; Print("Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ\näîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì."); break;
//---- Êîäû îøèáîê âûïîëíåíèÿ MQL4-ïðîãðàììû:
case 4000: errcode=0; break;
case 4001: errcode=1; Print("Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè"); break;
case 4002: errcode=1; Print("Èíäåêñ ìàññèâà - âíå äèàïàçîíà"); break;
case 4003: errcode=1; Print("Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé"); break;
case 4004: errcode=1; Print("Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà"); break;
case 4005: errcode=1; Print("Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ"); break;
case 4006: errcode=1; Print("Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà"); break;
case 4007: errcode=1; Print("Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè"); break;
case 4008: errcode=1; Print("Íåèíèöèàëèçèðîâàííàÿ ñòðîêà"); break;
case 4009: errcode=1; Print("Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå"); break;
case 4010: errcode=1; Print("Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà"); break;
case 4011: errcode=1; Print("Ñëèøêîì äëèííàÿ ñòðîêà"); break;
case 4012: errcode=1; Print("Îñòàòîê îò äåëåíèÿ íà íîëü"); break;
case 4013: errcode=1; Print("Äåëåíèå íà íîëü"); break;
case 4014: errcode=1; Print("Íåèçâåñòíàÿ êîìàíäà"); break;
case 4015: errcode=1; Print("Íåïðàâèëüíûé ïåðåõîä"); break;
case 4016: errcode=1; Print("Íåèíèöèàëèçèðîâàííûé ìàññèâ"); break;
case 4017: errcode=1; Print("Âûçîâû DLL íå ðàçðåøåíû"); break;
case 4018: errcode=1; Print("Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó"); break;
case 4019: errcode=1; Print("Íåâîçìîæíî âûçâàòü ôóíêöèþ"); break;
case 4020: errcode=1; Print("Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû"); break;
case 4021: errcode=1; Print("Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè"); break;
case 4022: errcode=1; Print("Ñèñòåìà çàíÿòà"); break;
case 4050: errcode=1; Print("Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè"); break;
case 4051: errcode=1; Print("Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè"); break;
case 4052: errcode=1; Print("Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè"); break;
case 4053: errcode=1; Print("Îøèáêà ìàññèâà"); break;
case 4054: errcode=1; Print("Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè"); break;
case 4055: errcode=1; Print("Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà"); break;
case 4056: errcode=1; Print("Ìàññèâû íåñîâìåñòèìû"); break;
case 4057: errcode=1; Print("Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ"); break;
case 4058: errcode=1; Print("Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà"); break;
case 4059: errcode=1; Print("Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå"); break;
case 4060: errcode=1; Print("Ôóíêöèÿ íå ðàçðåøåíà"); break;
case 4061: errcode=1; Print("Îøèáêà îòïðàâêè ïî÷òû"); break;
case 4062: errcode=1; Print("Îæèäàåòñÿ ïàðàìåòð òèïà string"); break;
case 4063: errcode=1; Print("Îæèäàåòñÿ ïàðàìåòð òèïà integer"); break;
case 4064: errcode=1; Print("Îæèäàåòñÿ ïàðàìåòð òèïà double"); break;
case 4065: errcode=1; Print(" êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ"); break;
case 4066: errcode=1; Print("Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ"); break;
case 4067: errcode=1; Print("Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè"); break;
case 4099: errcode=1; Print("Êîíåö ôàéëà"); break;
case 4100: errcode=1; Print("Îøèáêà ïðè ðàáîòå ñ ôàéëîì"); break;
case 4101: errcode=1; Print("Íåïðàâèëüíîå èìÿ ôàéëà"); break;
case 4102: errcode=1; Print("Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ"); break;
case 4103: errcode=1; Print("Íåâîçìîæíî îòêðûòü ôàéë"); break;
case 4104: errcode=1; Print("Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó"); break;
case 4105: errcode=1; Print("Íè îäèí îðäåð íå âûáðàí"); break;
case 4106: errcode=1; Print("Íåèçâåñòíûé ñèìâîë"); break;
case 4107: errcode=1; Print("Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè"); break;
case 4108: errcode=1; Print("Íåâåðíûé íîìåð òèêåòà"); break;
case 4109: errcode=1; Print("Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü â ñâîéñòâàõ ýêñïåðòà."); break;
case 4110: errcode=1; Print("Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà."); break;
case 4111: errcode=1; Print("Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà."); break;
case 4200: errcode=1; Print("Îáúåêò óæå ñóùåñòâóåò"); break;
case 4201: errcode=1; Print("Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà"); break;
case 4202: errcode=1; Print("Îáúåêò íå ñóùåñòâóåò"); break;
case 4203: errcode=1; Print("Íåèçâåñòíûé òèï îáúåêòà"); break;
case 4204: errcode=1; Print("Íåò èìåíè îáúåêòà"); break;
case 4205: errcode=1; Print("Îøèáêà êîîðäèíàò îáúåêòà"); break;
case 4206: errcode=1; Print("Íå íàéäåíî óêàçàííîå ïîäîêíî"); break;
default: errcode=1; Print("Îøèáêà ïðè ðàáîòå ñ îáúåêòîì"); break;
}return(errcode);}
//+--------------------------------------------------------------------------------------+
//| Ôóíêöèÿ |
//+--------------------------------------------------------------------------------------+
//+--------------------------------------------------------------------------------------+
//||
//+--------------------------------------------------------------------------------------+
//+--------------------------------------------------------------------------------------+
//| Ê Î Í Å Ö Á È Á Ë È Î Ò Å Ê È Ï Î Ä Ï Ð Î Ã Ð À Ì Ì |
//+--------------------------------------------------------------------------------------+
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
---