CloseOrdersBySymbol

Author: Copyright © 2017, Nikolay Kositsin
Orders Execution
Checks for the total of open ordersIt automatically opens orders when conditions are reached
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
CloseOrdersBySymbol
ÿþ//+------------------------------------------------------------------+

//|                                          CloseOrdersBySymbol.mq5 |

//|                               Copyright © 2017, Nikolay Kositsin | 

//|                              Khabarovsk,   farria@mail.redcom.ru | 

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

#property copyright "Copyright © 2017, Nikolay Kositsin"

#property link "farria@mail.redcom.ru" 

//---- =><5@ 25@A88 A:@8?B0

#property version   "1.10" 

//---- ?>:07K20BL 2E>4=K5 ?0@0<5B@K

#property script_show_inputs

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

//| %+  " + ! "                    |

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

input uint RTOTAL=4;        // '8A;> ?>2B>@>2 ?@8 =5C40G=KE A45;:0E

input uint SLEEPTIME=1;     // @5<O ?0C7K <564C ?>2B>@0<8 2 A5:C=40E

input uint  Deviation_=10;  // B:;>=5=85 F5=K

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

//| start function                                                   |

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

void OnStart()

  {

//----   

   for(uint count=0; count<=RTOTAL && !IsStopped(); count++)

     {

      //---- 70:@K205< 2A5 2KAB02;5==K5 >@45@0 ?> B5:CI5<C A8<2>;C

      int total=OrdersTotal();

      if(!total) return; // 2A5 >@45@0 70:@KBK

      for(int pos=total-1; pos>=0; pos--)

        {

         ulong ticket=ulong(OrderGetTicket(pos));

         if(!OrderSelect(ticket)) continue;

         string symbol=OrderGetString(ORDER_SYMBOL);

         if(symbol!=Symbol()) continue;

         bool _Close=true;

         OrderCloseByTicket(_Close,symbol,ticket,Deviation_);

        }

      if(!OrdersTotal()) break;

      Sleep(SLEEPTIME*1000);

     }

//----

  }

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

//| 0:@K205< 4;8==CN ?>78F8N                                        |

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

bool OrderCloseByTicket

(

 bool &Signal,         // D;03 @07@5H5=8O =0 A45;:C

 const string symbol,  // B>@3>20O ?0@0 A45;:8

 ulong ticket,         // B8:5B

 uint deviation        // A;8??06

 )

  {

//----

   if(!Signal) return(true);



//---- 1JO2;5=85 AB@C:BC@ B>@3>2>3> 70?@>A0 8 @57C;LB0B0 B>@3>2>3> 70?@>A0

   MqlTradeRequest request;

   MqlTradeResult result;

//---- 1JO2;5=85 AB@C:BC@K @57C;LB0B0 ?@>25@:8 B>@3>2>3> 70?@>A0 

   MqlTradeCheckResult check;



//---- >1=C;5=85 AB@C:BC@

   ZeroMemory(request);

   ZeroMemory(result);

   ZeroMemory(check);



//---- =8F80;870F8O AB@C:BC@K B>@3>2>3> 70?@>A0 MqlTradeRequest 4;O C40;5=8O >B;>65==>3> >@45@0

   request.action=TRADE_ACTION_REMOVE; 

   request.deviation=deviation;

   request.order=ticket;

//----     

   string comment="";

   string ordertype=EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER_TYPE)));

   StringConcatenate(comment,"<<< ============ ",__FUNCTION__,"(): #40;O5< >B;>65==K9 ",ordertype," >@45@ ?> ",symbol," A B8:5B>< ",string(ticket)," ============ >>>");

   Print(comment);



//---- B?@02:0 ?@8:070 =0 70:@K20=85 ?>78F88 =0 B>@3>2K9 A5@25@

   if(!OrderSend(request,result) || result.retcode!=TRADE_RETCODE_DONE)

     {

      Print(__FUNCTION__,"(): 52>7<>6=> C40;8BL ",ordertype," >@45@ A B8:5B>< ",string(ticket),"!");

      Print(__FUNCTION__,"(): OrderSend(): ",ResultRetcodeDescription(result.retcode));

      return(false);

     }

   else

   if(result.retcode==TRADE_RETCODE_DONE)

     {

      Signal=false;

      comment="";

      StringConcatenate(comment,"<<< ============ ",__FUNCTION__,"(): B;>65==K9 ",ordertype," >@45@ ?> ",symbol," A B8:5B>< ",string(ticket)," C40;Q= ============ >>>");

      Print(comment);

      PlaySound("ok.wav");

     }

   else

     {

      Print(__FUNCTION__,"(): 52>7<>6=> C40;8BL ",ordertype," >@45@ A B8:5B>< ",string(ticket),"!");

      Print(__FUNCTION__,"(): OrderSend(): ",ResultRetcodeDescription(result.retcode));

      return(false);

     }

//----

   return(true);

  }

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

//| 2>72@0B AB@8=3>2>3> @57C;LB0B0 B>@3>2>9 >?5@0F88 ?> 53> :>4C     |

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

string ResultRetcodeDescription(int retcode)

  {

   string str;

//----

   switch(retcode)

     {

      case TRADE_RETCODE_REQUOTE: str=" 5:2>B0"; break;

      case TRADE_RETCODE_REJECT: str="0?@>A >B25@3=CB"; break;

      case TRADE_RETCODE_CANCEL: str="0?@>A >B<5=5= B@5945@><"; break;

      case TRADE_RETCODE_PLACED: str="@45@ @07<5I5="; break;

      case TRADE_RETCODE_DONE: str="0O2:0 2K?>;=5=0"; break;

      case TRADE_RETCODE_DONE_PARTIAL: str="0O2:0 2K?>;=5=0 G0AB8G=>"; break;

      case TRADE_RETCODE_ERROR: str="H81:0 >1@01>B:8 70?@>A0"; break;

      case TRADE_RETCODE_TIMEOUT: str="0?@>A >B<5=5= ?> 8AB5G5=8N 2@5<5=8";break;

      case TRADE_RETCODE_INVALID: str="5?@028;L=K9 70?@>A"; break;

      case TRADE_RETCODE_INVALID_VOLUME: str="5?@028;L=K9 >1J5< 2 70?@>A5"; break;

      case TRADE_RETCODE_INVALID_PRICE: str="5?@028;L=0O F5=0 2 70?@>A5"; break;

      case TRADE_RETCODE_INVALID_STOPS: str="5?@028;L=K5 AB>?K 2 70?@>A5"; break;

      case TRADE_RETCODE_TRADE_DISABLED: str="">@3>2;O 70?@5I5=0"; break;

      case TRADE_RETCODE_MARKET_CLOSED: str=" K=>: 70:@KB"; break;

      case TRADE_RETCODE_NO_MONEY: str="5B 4>AB0B>G=KE 45=56=KE A@54AB2 4;O 2K?>;=5=8O 70?@>A0"; break;

      case TRADE_RETCODE_PRICE_CHANGED: str="&5=K 87<5=8;8AL"; break;

      case TRADE_RETCODE_PRICE_OFF: str="BACBAB2CNB :>B8@>2:8 4;O >1@01>B:8 70?@>A0"; break;

      case TRADE_RETCODE_INVALID_EXPIRATION: str="525@=0O 40B0 8AB5G5=8O >@45@0 2 70?@>A5"; break;

      case TRADE_RETCODE_ORDER_CHANGED: str="!>AB>O=85 >@45@0 87<5=8;>AL"; break;

      case TRADE_RETCODE_TOO_MANY_REQUESTS: str="!;8H:>< G0ABK5 70?@>AK"; break;

      case TRADE_RETCODE_NO_CHANGES: str=" 70?@>A5 =5B 87<5=5=89"; break;

      case TRADE_RETCODE_SERVER_DISABLES_AT: str="2B>B@5948=3 70?@5I5= A5@25@><"; break;

      case TRADE_RETCODE_CLIENT_DISABLES_AT: str="2B>B@5948=3 70?@5I5= :;85=BA:8< B5@<8=0;><"; break;

      case TRADE_RETCODE_LOCKED: str="0?@>A 701;>:8@>20= 4;O >1@01>B:8"; break;

      case TRADE_RETCODE_FROZEN: str="@45@ 8;8 ?>78F8O 70<>@>65=K"; break;

      case TRADE_RETCODE_INVALID_FILL: str="#:070= =5?>445@68205<K9 B8? 8A?>;=5=8O >@45@0 ?> >AB0B:C"; break;

      case TRADE_RETCODE_CONNECTION: str="5B A>548=5=8O A B>@3>2K< A5@25@><"; break;

      case TRADE_RETCODE_ONLY_REAL: str="?5@0F8O @07@5H5=0 B>;L:> 4;O @50;L=KE AG5B>2"; break;

      case TRADE_RETCODE_LIMIT_ORDERS: str=">AB83=CB ;8<8B =0 :>;8G5AB2> >B;>65==KE >@45@>2"; break;

      case TRADE_RETCODE_LIMIT_VOLUME: str=">AB83=CB ;8<8B =0 >1J5< >@45@>2 8 ?>78F89 4;O 40==>3> A8<2>;0"; break;

      case TRADE_RETCODE_INVALID_ORDER: str="525@=K9 8;8 70?@5IQ==K9 B8? >@45@0"; break;

      case TRADE_RETCODE_POSITION_CLOSED: str=">78F8O A C:070==K< POSITION_IDENTIFIER C65 70:@KB0"; break;

      case TRADE_RETCODE_INVALID_CLOSE_VOLUME: str="0:@K205<K9 >1J5< ?@52KH05B B5:CI89 >1J5< ?>78F88"; break;

      case TRADE_RETCODE_CLOSE_ORDER_EXIST: str=";O C:070==>9 ?>78F88 C65 5ABL >@45@ =0 70:@KB85"; break;

      case TRADE_RETCODE_LIMIT_POSITIONS: str=">;8G5AB2> >B:@KBKE ?>78F89, :>B>@>5 <>6=> >4=>2@5<5==> 8<5BL =0 AG5B5, <>65B 1KBL >3@0=8G5=> =0AB@>9:0<8 A5@25@0"; break;

      //case : str=""; break;

      //case : str=""; break;

      //case : str=""; break;

      //case : str=""; break;

      default: str="58725AB=K9 @57C;LB0B";

     }

//----

   return(str);

  }

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

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