Author: Copyright c 2010, MQL ��� ����.
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt Closes Orders by itself
0 Views
0 Downloads
0 Favorites
mylib
//+------------------------------------------------------------------+
//|                                                        MyLib.mq4 |
//|                                  Copyright c 2010, MQL äëÿ òåáÿ. |
//|                                                http://mql4you.ru |
//+------------------------------------------------------------------+
#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)
{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,"",0,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 = "";
    while (n>0) {s=s+" "; n--;}
    return (s);
    }
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|     Ê Î Í Å Ö   Á È Á Ë È Î Ò Å Ê È   Ï Î Ä Ï Ð Î Ã Ð À Ì Ì      |
//+------------------------------------------------------------------+

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 ---