vav_openlimitorder_manually

Author: vav
Orders Execution
It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
vav_openlimitorder_manually
//+------------------------------------------------------------------+
//|                                  vav_openlimitorder_manually.mq4 |
//|                                                              vav |
//|                                                              vav |
//+------------------------------------------------------------------+
#property copyright "vav"
#property link      "vav"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      Ident=123;        //Èäåíòèôèêàòîð îðäåðà
input string   coment="";        //Êîììåíòàðèé
input int      PrSk=3;           //Ïðîñêàëüçûâàíèå
input double   CenaOp=0;         //Price
input double   Stop=0;           //StopLoss
input double   Tk=0;             //TakeProfit
input double   PrDepo=1;         //Äîïóñòèìûé óáûòîê â % îò äåïîçèòà

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   int      nZn      = Digits;                                          //Êîë-âî çíàêîâ
   string   SymB     = Symbol();                                        //Ñèìâîë
   double   Lo;                                                         //Îáúåì ëîòà
   double   minLot   = MarketInfo(SymB, MODE_MINLOT);
   int      ti;
   double   Take=Tk;
      if(CenaOp<Ask)
      {
         if(Stop<CenaOp)
         {
            if(Take<=CenaOp || Take==0)
            {
               Take=0;
               Alert("TakeProfit íå óñòàíîâëåí");
            }
            Lo=Lot(SymB,(int)((CenaOp-Stop)*MathPow(10,nZn)),PrDepo);
            if(Lo<minLot)
            {
               Alert("Íåäîñòàòî÷íî ñðåäñòâ äåïîçèòà");
            }
            else
            {
               Lo=NormalizeDouble(Lo,2);
               ti=OrderSend(SymB,OP_BUYLIMIT,Lo,CenaOp,PrSk,Stop,Take,coment,Ident,0,clrNONE);
         if(ti!=-1)
               {
                  Alert("Óñòàíîâëåí îðäåð",ti,"BuyStop");
               }
               else
                  Alert("Îðäåð íå óñòàíîâëåí");
             }
          }
          else
          {
            Alert("Íåäîïóñòèìîå çíà÷åíèå StopLoss");
          }
      }
      if(CenaOp>Bid)
      {
         if(Stop>CenaOp)
         {
            if(Take>=CenaOp || Take==0)
            {
               Take=0;
               Alert("TakeProfit íå óñòàíîâëåí");
            }
            Lo=Lot(SymB,(int)((Stop-CenaOp)*MathPow(10,nZn)),PrDepo);
            if(Lo<minLot)
            {
               Alert("Íåäîñòàòî÷íî ñðåäñòâ äåïîçèòà");
            }
            else
            {
               Lo=NormalizeDouble(Lo,2);
               ti=OrderSend(SymB,OP_SELLLIMIT,Lo,CenaOp,PrSk,Stop,Take,coment,Ident,0,clrNONE);
               if(ti!=-1)
               {
               Alert("Óñòàíîâëåí îðäåð",ti,"SellStop");
               }
               else
               Alert("Îðäåð íå óñòàíîâëåí");
               }
            }
      }
      if(Bid<=CenaOp && CenaOp<=Ask)Alert("Íåäîïóñòèìàÿ öåíà îòêðûòèÿ");
   }
//+------------------------------------------------------------------+
//Ôóíêöèÿ íàõîæäåíèÿ ëîòà îò äåïîçèòà
double Lot(string Sym,int Pn,double pD)
{
   double L=(AccountBalance()/100*pD)/(MarketInfo(Sym, MODE_TICKVALUE)*(Pn));
return(L);
}

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