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

//|                                                     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()

{

/*void OnStart()

   while (!IsStopped())

   {*/

      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,Time[0],OOP,StringConcatenate(" E ",DoubleToStr(Profit,2)),"Arial",8,Profit<0?clrRed:clrGreen,0,ANCHOR_CENTER);

                  TextCreate(0,name,0,Time[0]+Period()*60,OOP,"X","Arial black",with,clrRed,0,ANCHOR_CENTER);

               }

               if (OT==OP_SELL)

               {

                  TextCreate(0,name,0,Time[0]+Period()*60,OOP,"X","Arial black",with,clrRed,0,ANCHOR_CENTER);

               }

            }

         }

      }

      /*Sleep(500);

      RefreshRates();

   }*/

}

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

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

  } 

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

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

                  const string            name="Button",            // 8<O :=>?:8

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

                  const long               x=0,                      // :>>@48=0B0 ?> >A8 X

                  const long               y=0,                      // :>>@48=0B0 ?> >A8 Y

                  const int               width=50,                 // H8@8=0 :=>?:8

                  const int               height=18,                // 2KA>B0 :=>?:8

                  const string            text="Button",            // B5:AB

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

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

                  const color             clr=clrRed,               // F25B B5:AB0

                  const color             clrfon=clrBlack,          // F25B D>=0

                  const color             border_clr=clrNONE,       // F25B 3@0=8FK

                  const bool              state=false,

                  const ENUM_BASE_CORNER  CORNER=CORNER_RIGHT_LOWER)

  {

   if (ObjectFind(chart_ID,name)==-1)

   {

      ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);

      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER);

      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,1);

      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,1);

      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);

   }

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,clrfon);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);

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