Close_Percent_By_Line

Author: Copyright � 2013, ������� ��������
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself
Miscellaneous
It opens Message Boxes to the user
0 Views
0 Downloads
0 Favorites
Close_Percent_By_Line
//--------------------------------------------------------------------
#property copyright "Copyright © 2013, Õëûñòîâ Âëàäèìèð"
#property link      "cmillion@narod.ru"
#property show_inputs
#include <WinUser32.mqh>

/*
Ðàáîòà ñêðèïòà.
Ïðè ñòàðòå ñêðèïò âûñòàâëÿåò ëèíèþ, íà ðàññòîÿíèè TakeProfit îò òåêóùåé öåíû.
Ïðè äîñòèæåíèè öåíîé ýòîé ãîðèçîíòàëüíîé ëèíèè çàêðûâàþòñÿ ïðèáûëüíûå îðäåðà.
Ñêðèïò çàêðûâàåò îò êàæäîãî îðäåðà çàäàííûé ïðîöåíò, ïðè çíà÷åíèè PercentClose = 100% çàêðûâàåò îðäåðà ïîëíîñòüþ.
Äàëåå ñêðèïò çàêàí÷èâàåò ñâîþ ðàáîòó
*/
//--------------------------------------------------------------------
extern int     TakeProfit     = 30;     //ïðèáûëü çàêðûòèÿ îðäåðà â ïóíêòàõ, íà òàêîå ðàññòîÿíèå îò òåêóùåé öåíû ñòàâèì ëèíèþ Close
extern double  PercentClose   = 30;     //ïðîöåíò çàêðûòèÿ îðäåðà
extern int     Magic          = -1;     //åñëè -1 âñå, åñëè 0 ðó÷íûå, åñëè åñòü íîìåð òî ïî êîíêðåòíîìó ìàãèêó.
//--------------------------------------------------------------------
int start()
{
   double PriceLine,OP;
   int OMN,tip;
   string Obj = "Close Percent By Line";
   if (ObjectFind(Obj)==-1) 
   {
      for (int i=0; i<OrdersTotal(); i++)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         { 
            OMN = OrderMagicNumber();
            if (OrderSymbol()==Symbol() && (OMN==Magic || Magic==-1))
            { 
               tip = OrderType(); 
               if (tip==OP_BUY)             
               {
                  PriceLine = NormalizeDouble(Bid+TakeProfit*Point,Digits);
               }                                         
               if (tip==OP_SELL)        
               {
                  PriceLine = NormalizeDouble(Ask-TakeProfit*Point,Digits);
               } 
            }
         }
      }
      drawline(Obj,Gray,PriceLine);
      drawtext(Obj,PriceLine);
   }
   //---
   while(!IsStopped())
   {
      RefreshRates();
      if (!IsTradeAllowed()) 
      {
         Sleep(1000);
         continue;
      }
      Comment("Ñêðèïò ",Obj," ",TimeToStr(TimeCurrent(),TIME_SECONDS));
      if (ObjectFind(Obj)==-1) 
      {
         int ret=MessageBox("Çàêîí÷èòü ðàáîòó ñêðèïòà","Question", MB_YESNO|MB_ICONQUESTION);
         if (ret==IDYES) break;
         drawline(Obj,Gray,PriceLine);
         drawtext(Obj,PriceLine);
      }
      else 
      {
         if (PriceLine != ObjectGet(Obj,OBJPROP_PRICE1))
         {
            PriceLine = ObjectGet(Obj,OBJPROP_PRICE1);
            drawtext(Obj,PriceLine);
         }
      }
      //---
      for (i=0; i<OrdersTotal(); i++)
      {    
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         { 
            OMN = OrderMagicNumber();
            if (OrderSymbol()==Symbol() && (OMN==Magic || Magic==-1))
            { 
               tip = OrderType(); 
               OP = OrderProfit();
               if (tip==OP_BUY && OP>0)             
               {
                  if (PriceLine!=0)
                  {
                     if (Bid>=PriceLine) 
                        if (OrderClose(OrderTicket(),NormalizeDouble(OrderLots()*PercentClose/100,2), NormalizeDouble(Bid,Digits), 150, Blue))
                           {ObjectDelete(Obj);ObjectDelete(StringConcatenate(Obj,"n"));}
                  }
               }                                         
               if (tip==OP_SELL && OP>0)        
               {
                  if (PriceLine!=0)
                  {
                     if (Ask<=PriceLine) 
                        if (OrderClose(OrderTicket(), NormalizeDouble(OrderLots()*PercentClose/100,2), NormalizeDouble(Ask,Digits), 150, Red))
                           {ObjectDelete(Obj);ObjectDelete(StringConcatenate(Obj,"n"));}
                  }
               } 
            }
         }
      }
      Sleep(500);
   }
   Comment("Ñêðèïò ",Obj," çàêîí÷èë ñâîþ ðàáîòó");
   return(0);
}
//--------------------------------------------------------------------
int drawline(string NameL, color col, double Y1)
{
   ObjectCreate(NameL, OBJ_HLINE, 0,0,Y1,0,0);
   ObjectSet   (NameL, OBJPROP_COLOR, col);
   ObjectSet   (NameL, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet   (NameL, OBJPROP_WIDTH, 1);
   ObjectSet   (NameL, OBJPROP_BACK,  false);
   ObjectSet   (NameL, OBJPROP_RAY,   false);
   return;
}
//--------------------------------------------------------------------
int drawtext(string NameL, double Y1)
{
   string NameLine=StringConcatenate(NameL,"n");
   ObjectDelete (NameLine);
   ObjectCreate (NameLine, OBJ_TEXT,0,Time[WindowFirstVisibleBar()-WindowFirstVisibleBar()/4],Y1,0,0,0,0);
   ObjectSetText(NameLine, NameL ,8,"Arial");
   ObjectSet    (NameLine, OBJPROP_COLOR, ObjectGet(NameL,OBJPROP_COLOR));
}
//--------------------------------------------------------------------

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