LimitNetzStop

Author: Verdi
Orders Execution
It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
LimitNetzStop
//+---------------------------------------------------------------------------------+
//|                                                               LimitNet+Stop.mq4 |
//|                                                                           Verdi |
//|                                                                 nemo811@mail.ru |
//|Ñêðèïò äëÿ èñïîëüçîâàíèÿ ñåòêè îòëîæåííûõ limit-îðäåðîâ ïîñëå ðàñêðûòèÿ çàìêà.   |
//|Âûñòàâëåíèå ïàðàìåòðà Lot limit-îðäåðîâ èä¸ò ïî àðèôìåòè÷åñêîé ïðîãðåññèè.       |
//|takeprofit ðàññ÷èòûâàåòñÿ ñ ïîïðàâêîé äëÿ âûõîäà ñåòêè â îáùèé 0.  êîíöå        |
//|Limit-ñåòêè âûñòàâëÿåòñÿ Stop-îðäåð (TP,SL,Magic = 0) äëÿ ëîêèðîâàíèÿ âñåõ       |
//|ïîçèöèé. Ïàðàìåòðû R_Lot è R_point ïîçâîëÿþò ó÷åñòü óæå îòêðûòûé (!)óáûòî÷íûé(!) |
//|ðûíî÷íûé îðäåð (ôóíêöèÿ íàïðàøèâàåòñÿ íà àâòîìàòèçàöèþ - äîïîëíÿéòå).            |
//|Ïîñëå çàêðûòèÿ ëþáîãî îðäåðà ñåòêè ðåêîìåíäóþ çàâåðøèòü îñòàâøèåñÿ ñäåëêè        |
//|è ïåðåóñòàíîâèòü âñþ ñåòü.                                                       |
//| èñõîäíèêå âûñòàâëåíû ïåðåìåííûå ñ ó÷¸òîì êðèòåðèåâ:                            |
//| - íà÷àëüíûé ðèñê 1 ïóíêòà = 1 : 10 000                                          |
//| - îáùèé ðèñê äåïî = 4%                                                          |
//| - óáûòîê ïî 1 óæå îòêðûòîìó îðäåðó îáú¸ìîì 0.1 ëîò = 37 ïï.                     |
//| - äîïóñòèìàÿ îáùàÿ ïðîñàäêà = 150 ïï.                                           |
//+---------------------------------------------------------------------------------+
#property copyright "Verdi"
#property link      "nemo811@mail.ru"
#property show_inputs
//--------------------------------------------------------------------
extern int     Magic       = 0;      //óíèêàëüíûé íîìåð îðäåðîâ ñåòêè (êðîìå Stop-îðäåðà)
extern bool    BUY         = false;  //îòêðûòü ñäåëêó BUY è ïîñòàâèòü ñåòêó BUY LIMIT
extern bool    SELL        = false;  //îòêðûòü ñäåëêó SELL è ïîñòàâèòü ñåòêó SELL LIMIT
extern double  Lot         = 0.1;    //îáú¸ì îòêðûâàåìîé ñäåëêè è ïåðâîãî limit-îðäåðà
extern int     delta       = 37;     //øàã ñåòêè
extern int     MaxOrders   = 2;      //êîë-âî limit-îðäåðîâ ñåòêè
extern int     takeprofit  = 37;     //óðîâåíü âûñòàâëåíèÿ TP, åñëè 0, òî TP âû÷èñëÿåòñÿ ïî zero_tp               
extern int     stoploss    = 0;      //óðîâåíü âûñòàâëåíèÿ SL, åñëè 0, òî SL íå âûñòàâëÿåòñÿ
extern string  corr="Êîýôôèöèåíòû ïîïðàâîê";
extern int     zero_tp     = 1;      //êîýôôèöèåíò ïîïðàâêè takeprofit äëÿ âûõîäà ñåòêè â îáùèé 0, åñëè 0,
                                     //òî takeprofit ïðèìåò ñòàíäàðòíîå çíà÷åíèå (!)Ñòàâèòü 1 èëè 0(!)
extern int     R_Lot       = 1;      //êîýôôèöèåíò ïîïðàâêè Lot äëÿ ó÷¸òà îòêðûòîãî (!)óáûòî÷íîãî(!) ðûíî÷íîãî îðäåðà, åñëè 0 -
                                     //íå ó÷èòûâàåòñÿ + âûêëþ÷àåò R_point, êðàòåí ïàðàìåòðó Lot: R_Lot*Lot=ëîò ðûíî÷íîãî îðäåðà 
extern int     R_point     = 37;     //òåêóùèé Loss ðûíî÷íîãî óáûòî÷íîãî îðäåðà â (!)ïóíêòàõ(!), åñëè 0 - íå ó÷èòûâàåòñÿ 
//--------------------------------------------------------------------
double SL,TP,Price,Sum,DeltaProfitR,DeltaProfitL;
//--------------------------------------------------------------------
int start()
{
   for (int x=1; x<=1; x++)
   {
      DeltaProfitR = (Lot*R_Lot*R_point)/(Lot+Lot*R_Lot);
      if (BUY)
      {
         if (takeprofit!=0) TP  = NormalizeDouble(Ask + (takeprofit+DeltaProfitR*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
         OPENORDER ("Buy",Price,SL,TP,x);
      }
      if (SELL)
      {  
         if (takeprofit!=0) TP = NormalizeDouble(Bid - (takeprofit+DeltaProfitR*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
         OPENORDER ("Sell",Price,SL,TP,x);
      }
   }
   double Sum=0;
   for (int i=1; i<=MaxOrders; i++)
   {
      if (BUY)
      {
         Price = NormalizeDouble(Ask-delta*i*Point,Digits);
         Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;
         DeltaProfitL = (Sum+i*delta*Lot+Lot*R_Lot*R_point+Lot*R_Lot*delta*i)/((2*Lot+Lot*(i-1))*i/2+Lot+Lot*R_Lot);
         if (takeprofit!=0) TP  = NormalizeDouble(Price + (takeprofit + DeltaProfitL*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0;     
         OPENORDER ("Buy Limit",Price,SL,TP,i);
      }
      if (SELL)
      {  
         Price = NormalizeDouble(Bid+delta*i*Point,Digits);
         Sum=Sum+delta*(2*Lot+Lot*(i-2))*(i-1)/2;
         DeltaProfitL = (Sum+i*delta*Lot+Lot*R_Lot*R_point+Lot*R_Lot*delta*i)/((2*Lot+Lot*(i-1))*i/2+Lot+Lot*R_Lot);
         if (takeprofit!=0) TP = NormalizeDouble(Price - (takeprofit + DeltaProfitL*zero_tp)*Point,Digits); else TP=0;
         if (stoploss!=0)   SL = NormalizeDouble(Price + stoploss*Point,Digits);  else SL=0;              
         OPENORDER ("Sell Limit",Price,SL,TP,i);
      }
   }
   for (int v=1; v<=1; v++)
   {
      if (BUY)
      {
         OPENORDER ("Sell Stop",Price,SL,TP,v);
      }
      if (SELL)
      {  
         OPENORDER ("Buy Stop",Price,SL,TP,v);
      }
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord,double Price,double SL,double TP,int i)
{
   int ticket = -1;
   int err;
   while (ticket<0)
   {
      if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),3,SL,TP,"Magic_" + Magic,Magic,0);
      if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),3,SL,TP,"Magic_" + Magic,Magic,0);
      if (ord=="Buy Limit") ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot*i,Price,3,SL,TP,StringConcatenate("¹"+i,"  Magic_" + Magic),Magic,0);
      if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot*i,Price,3,SL,TP,StringConcatenate("¹"+i,"  Magic_" + Magic),Magic,0);
      if (ord=="Buy Stop") ticket=OrderSend(Symbol(),OP_BUYSTOP,(2*Lot+Lot*(MaxOrders-1))*MaxOrders/2+Lot+Lot*R_Lot,NormalizeDouble(Ask+delta*(MaxOrders+1)*Point,Digits),3,0,0,"Lock, Magic_0",0,0);
      if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,(2*Lot+Lot*(MaxOrders-1))*MaxOrders/2+Lot+Lot*R_Lot,NormalizeDouble(Bid-delta*(MaxOrders+1)*Point,Digits),3,0,0,"Lock, Magic_0",0,0);
      Message(Magic);
      if (ticket==-1)
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (ticket!=-1 || 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;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------

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