Orders Execution
It Closes Orders by itself Checks for the total of open orders
2 Views
0 Downloads
0 Favorites
cm close X
ÿþ//+------------------------------------------------------------------+

//|                                                     cm close.mq4 |

//|                             Copyright © 2018, http://cmillion.ru |

//|                                                cmillion@narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2018, http://cmillion.ru"

#property link      "cmillion@narod.ru"

#property version   "1.00"

#property strict

extern int with = 10;

//+------------------------------------------------------------------+

#property description "!>25B=8: @8AC5B =0 :064>9 >B:@KB>9 ?>78F88 :@5AB8: 8 ?@8 =060B88 =0 =53> ?>78F8O 70:@K205BAO."

//+------------------------------------------------------------------+

void OnChartEvent(const int id, 

                  const long &lparam, 

                  const double &dparam, 

                  const string &name) 

{ 

   if(id==CHARTEVENT_OBJECT_CLICK) 

   { 

      if(StringFind(name,"cmx",0)!=-1) 

      { 

         int tiket=StrToInteger(StringSubstr(name,3));

         if (OrderSelect(tiket,SELECT_BY_TICKET))

         { 

            if (OrderType()==OP_BUY)             

            {  

               if (OrderClose(tiket,OrderLots(),NormalizeDouble(Bid,Digits),100,clrNONE))

                  ObjectDelete(0,name);

            }

            else             

            {  

               if (OrderClose(tiket,OrderLots(),NormalizeDouble(Ask,Digits),100,clrNONE))

                  ObjectDelete(0,name);

            }

         } 

      }

   }

} 

//+------------------------------------------------------------------+ 

void OnTick()

{

   datetime t=Time[0]+Period()*60;

   double price;

   int sub_window,result=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0)-10;

   ChartXYToTimePrice(0,result,1,sub_window,t,price);

   for (int i=OrdersTotal()-1; i>=0; i--)

   {                                               

      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

      {

         if (OrderSymbol() == Symbol())

         {

            int OT = OrderType();

            double OOP = OrderOpenPrice();

            string name=StringConcatenate("cmx",OrderTicket());

            double Profit=OrderProfit()+OrderSwap()+OrderCommission();

            if (OT==OP_BUY)

            {

               TextCreate(0,name,0,t,OOP,"X","Arial black",with,clrRed,0,ANCHOR_CENTER);

            }

            if (OT==OP_SELL)

            {

               TextCreate(0,name,0,t,OOP,"X","Arial black",with,clrRed,0,ANCHOR_CENTER);

            }

         }

      }

   }

}

//+------------------------------------------------------------------+

bool TextCreate(const long              chart_ID=0,               // ID 3@0D8:0 

                const string            name="Text",              // 8<O >1J5:B0 

                const int               sub_window=0,             // =><5@ ?>4>:=0 

                datetime                time=0,                   // 2@5<O B>G:8 ?@82O7:8 

                double                  price=0,                  // F5=0 B>G:8 ?@82O7:8 

                const string            text="Text",              // A0< B5:AB 

                const string            font="Arial",             // H@8DB 

                const int               font_size=10,             // @07<5@ H@8DB0 

                const color             clr=clrRed,               // F25B 

                const double            angle=90.0,                // =0:;>= B5:AB0 

                const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT, // A?>A>1 ?@82O7:8 

                const bool              back=false,               // =0 704=5< ?;0=5 

                const bool              selection=false,          // 2K45;8BL 4;O ?5@5<5I5=89 

                const bool              hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2 

                const long              z_order=0)                // ?@8>@8B5B =0 =060B85 <KHLN 

  { 

   if (ObjectFind(name)==-1)

   {

      if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price)) 

        { 

         return(false); 

        } 

   }

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 

   ObjectSetInteger(chart_ID,name,OBJPROP_TIME,time); 

   ObjectSetDouble(chart_ID,name,OBJPROP_PRICE,price); 

   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); 

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

   return(true); 

  } 

//+------------------------------------------------------------------+ 

void OnDeinit(const int reason)

{

   ObjectsDeleteAll(0,"cmx");

}

//+------------------------------------------------------------------+

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