Alert Position Open

Author: Copyright © 2019, Vladimir Karputov
Miscellaneous
It issuies visual alerts to the screenIt plays sound alerts
0 Views
0 Downloads
0 Favorites
Alert Position Open
ÿþ//+------------------------------------------------------------------+

//|                                          Alert Position Open.mq5 |

//|                              Copyright © 2019, Vladimir Karputov |

//|                                           http://wmua.ru/slesar/ |

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

#property copyright "Copyright © 2019, Vladimir Karputov"

#property link      "http://wmua.ru/slesar/"

#property version   "1.00"

//--- input parameters

input bool     InpAlert    = false;          // Alert

input string   InpSound    = "expert.wav";   // Play Sound ("" -> off)

input bool     InpExperts  = false;          // Tab Experts

input bool     InpComment  = true;           // Comment on Chart

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

//| Expert initialization function                                   |

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

int OnInit()

  {

//---



//---

   return(INIT_SUCCEEDED);

  }

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

//| Expert deinitialization function                                 |

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

void OnDeinit(const int reason)

  {

//---



  }

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

//| Expert tick function                                             |

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

void OnTick()

  {

//---



  }

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

//| TradeTransaction function                                        |

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

void OnTradeTransaction(const MqlTradeTransaction &trans,

                        const MqlTradeRequest &request,

                        const MqlTradeResult &result)

  {

//--- get transaction type as enumeration value

   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;

//--- if transaction is result of addition of the transaction in history

   if(type==TRADE_TRANSACTION_DEAL_ADD)

     {

      long     deal_ticket       =0;

      long     deal_order        =0;

      long     deal_time         =0;

      long     deal_time_msc     =0;

      long     deal_type         =-1;

      long     deal_entry        =-1;

      long     deal_magic        =0;

      long     deal_reason       =-1;

      long     deal_position_id  =0;

      double   deal_volume       =0.0;

      double   deal_price        =0.0;

      double   deal_commission   =0.0;

      double   deal_swap         =0.0;

      double   deal_profit       =0.0;

      string   deal_symbol       ="";

      string   deal_comment      ="";

      string   deal_external_id  ="";

      //---

      long     o_ticket          =0;

      long     o_time_setup      =0;

      long     o_type            =-1;

      long     o_state           =-1;

      long     o_time_expiration =0;

      long     o_time_done       =0;

      long     o_time_setup_msc  =0;

      long     o_time_done_msc   =0;

      long     o_type_filling    =-1;

      long     o_type_time       =-1;

      long     o_magic           =0;

      long     o_reason          =-1;

      long     o_position_id     =0;

      long     o_position_by_id  =0;



      double   o_volume_initial  =0.0;

      double   o_volume_current  =0.0;

      double   o_open_price      =0.0;

      double   o_sl              =0.0;

      double   o_tp              =0.0;

      double   o_price_current   =0.0;

      double   o_price_stoplimit =0.0;



      string   o_symbol          ="";

      string   o_comment         ="";

      string   o_extarnal_id     ="";



      string str_o_time_setup       =TimeToString((datetime)o_time_setup,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

      string str_o_type             =EnumToString((ENUM_ORDER_TYPE)o_type);

      string str_o_state            =EnumToString((ENUM_ORDER_STATE)o_state);

      string str_o_time_expiration  =TimeToString((datetime)o_time_expiration,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

      string str_o_time_done        =TimeToString((datetime)o_time_done,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

      string str_o_type_filling     =EnumToString((ENUM_ORDER_TYPE_FILLING)o_type_filling);

      string str_o_type_time        =TimeToString((datetime)o_type_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

      string str_o_reason           =EnumToString((ENUM_ORDER_REASON)o_reason);

      if(HistoryDealSelect(trans.deal))

        {

         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);

         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);

         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);

         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);

         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);

         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);

         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);

         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);

         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);



         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);

         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);

         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);

         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);

         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);



         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);

         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);

         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);

         //--- try to get oeders ticket_history_order

         if(HistoryOrderSelect(deal_order))

           {

            o_ticket          =HistoryOrderGetInteger(deal_order,ORDER_TICKET);

            o_time_setup      =HistoryOrderGetInteger(deal_order,ORDER_TIME_SETUP);

            o_type            =HistoryOrderGetInteger(deal_order,ORDER_TYPE);

            o_state           =HistoryOrderGetInteger(deal_order,ORDER_STATE);

            o_time_expiration =HistoryOrderGetInteger(deal_order,ORDER_TIME_EXPIRATION);

            o_time_done       =HistoryOrderGetInteger(deal_order,ORDER_TIME_DONE);

            o_time_setup_msc  =HistoryOrderGetInteger(deal_order,ORDER_TIME_SETUP_MSC);

            o_time_done_msc   =HistoryOrderGetInteger(deal_order,ORDER_TIME_DONE_MSC);

            o_type_filling    =HistoryOrderGetInteger(deal_order,ORDER_TYPE_FILLING);

            o_type_time       =HistoryOrderGetInteger(deal_order,ORDER_TYPE_TIME);

            o_magic           =HistoryOrderGetInteger(deal_order,ORDER_MAGIC);

            o_reason          =HistoryOrderGetInteger(deal_order,ORDER_REASON);

            o_position_id     =HistoryOrderGetInteger(deal_order,ORDER_POSITION_ID);

            o_position_by_id  =HistoryOrderGetInteger(deal_order,ORDER_POSITION_BY_ID);



            o_volume_initial  =HistoryOrderGetDouble(deal_order,ORDER_VOLUME_INITIAL);

            o_volume_current  =HistoryOrderGetDouble(deal_order,ORDER_VOLUME_CURRENT);

            o_open_price      =HistoryOrderGetDouble(deal_order,ORDER_PRICE_OPEN);

            o_sl              =HistoryOrderGetDouble(deal_order,ORDER_SL);

            o_tp              =HistoryOrderGetDouble(deal_order,ORDER_TP);

            o_price_current   =HistoryOrderGetDouble(deal_order,ORDER_PRICE_CURRENT);

            o_price_stoplimit =HistoryOrderGetDouble(deal_order,ORDER_PRICE_STOPLIMIT);



            o_symbol          =HistoryOrderGetString(deal_order,ORDER_SYMBOL);

            o_comment         =HistoryOrderGetString(deal_order,ORDER_COMMENT);

            o_extarnal_id     =HistoryOrderGetString(deal_order,ORDER_EXTERNAL_ID);



            str_o_time_setup       =TimeToString((datetime)o_time_setup,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

            str_o_type             =EnumToString((ENUM_ORDER_TYPE)o_type);

            str_o_state            =EnumToString((ENUM_ORDER_STATE)o_state);

            str_o_time_expiration  =TimeToString((datetime)o_time_expiration,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

            str_o_time_done        =TimeToString((datetime)o_time_done,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

            str_o_type_filling     =EnumToString((ENUM_ORDER_TYPE_FILLING)o_type_filling);

            str_o_type_time        =TimeToString((datetime)o_type_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);

            str_o_reason           =EnumToString((ENUM_ORDER_REASON)o_reason);

           }

         else

            return;

        }

      else

         return;

      ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry;

      if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)

         if(deal_entry==DEAL_ENTRY_IN)

           {

            string deal=(deal_type==DEAL_TYPE_BUY)?"buy":"sell";

            int digits=(int)SymbolInfoInteger(deal_symbol,SYMBOL_DIGITS);

            string text="deal #"+

                        IntegerToString(deal_ticket)+" "+

                        deal+" "+

                        DoubleToString(deal_volume,digits)+" "+

                        deal_symbol+" "+"at"+" "+

                        DoubleToString(deal_price,digits)+" ";

            if((deal_type==DEAL_TYPE_BUY && o_type!=ORDER_TYPE_BUY) ||(deal_type==DEAL_TYPE_SELL && o_type!=ORDER_TYPE_SELL))

              {

               string order="";

               if(o_type==ORDER_TYPE_BUY)

                  order="buy";

               if(o_type==ORDER_TYPE_SELL)

                  order="sell";

               if(o_type==ORDER_TYPE_BUY_LIMIT)

                  order="buy limit";

               if(o_type==ORDER_TYPE_SELL_LIMIT)

                  order="sell limit";

               if(o_type==ORDER_TYPE_BUY_STOP)

                  order="buy stop";

               if(o_type==ORDER_TYPE_SELL_STOP)

                  order="sell stop";

               if(o_type==ORDER_TYPE_BUY_STOP_LIMIT)

                  order="buy stop limit";

               if(o_type==ORDER_TYPE_SELL_STOP_LIMIT)

                  order="sell stop limit";

               if(o_type==ORDER_TYPE_CLOSE_BY)

                  order="close by";



               text=text+" "+"[#"+IntegerToString(o_ticket)+" "+order+"]";

              }

            if(InpAlert)

               Alert(text);

            if(InpSound!="")

               PlaySound(InpSound);

            if(InpExperts)

               Print(text);

            if(InpComment)

               Comment(text);

           }

     }

  }

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

Comments