Magic's_Profit

Author: Copyright © 2021 Aleksey Lesnikov
0 Views
0 Downloads
0 Favorites
Magic's_Profit
ÿþ//+------------------------------------------------------------------+

//|                                               Magic's_Profit.mq5 |

//|                                Copyright © 2021 Aleksey Lesnikov |

//|                                                                  |

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

#property copyright "Copyright © 2021 Aleksey Lesnikov"

#property link      ""

#property version   "1.00"

#property script_show_inputs



enum LANGUAGE

  {

   RUS=0,

   ENG=1

  };



input LANGUAGE Language    = RUS;                     ///7K: | Language

input ulong    Magic       = 12345;                   //Magic Number

input datetime Start_date  = D'2021.01.01 00:00:00';  //0G0;> ?5@8>40 | Begining of Period

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

//| Script program start function                                    |

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

void OnStart()

  {

   Profit();

  }

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

//| Profit Calculation Function                                      |

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

void Profit()

  {

   string currency = AccountInfoString(ACCOUNT_CURRENCY);



//---Variables for calculation

   HistorySelect(Start_date,TimeCurrent());      //Select the History of Deals for the Period

   uint     total         = HistoryDealsTotal(); //Total Deals in History

   ulong    ticket        = 0;                   //Deal Ticket

   ulong    magic;                               //Deal Magic Number

   double   profit        = 0.0;                 //Deal Profit

   double   commission    = 0.0;                 //Deal Commission

   double   swap          = 0.0;                 //Deal Swap

   double   Profit        = 0.0;                 //Net Profit from Deal (including Commission and Swap)

   double   gross_profit  = 0.0;                 //Gross Profit from all Deals

   double   gross_loss    = 0.0;                 //Gross Loss from all Deals

   double   profit_factor = 0.0;                 //This Magic's Profit Factor

   int      count         = 0;                   //Amount of Deals



//---Calculation

   for(uint i=0; i<total; i++)

     {

      if((ticket=HistoryDealGetTicket(i))>0)

        {

         profit      =HistoryDealGetDouble(ticket,DEAL_PROFIT);

         commission  =HistoryDealGetDouble(ticket,DEAL_COMMISSION);

         swap        =HistoryDealGetDouble(ticket,DEAL_SWAP);

         magic       =HistoryDealGetInteger(ticket,DEAL_MAGIC);

         if(magic==Magic)

           {

            if(HistoryDealGetInteger(ticket,DEAL_TYPE)!=DEAL_TYPE_BALANCE && HistoryDealGetInteger(ticket,DEAL_TYPE)!=DEAL_TYPE_BONUS)

              {

               count++;

               Profit=profit+commission+swap;



               if(Profit>=0)

                  gross_profit+=Profit;

               else

                  gross_loss+=Profit;

              }

           }

        }

     }



//---Output of Calculation Results to the Terminal in Selected Language

   if(Language==RUS)

     {

      if(gross_loss!=0)

         Print(StringFormat("==== %s ====\n0G0;> ?5@8>40: %s\n1I55 :>;-2> A45;>:: %s\n1I0O ?@81K;L: %s %s\n1I89 C1KB>:: %s %s\n'8AB0O ?@81K;L: %s %s\n@81K;L=>ABL: %s",

                            IntegerToString(Magic),TimeToString(Start_date),IntegerToString(count),DoubleToString(gross_profit,2),currency,DoubleToString(gross_loss,2),currency,DoubleToString(gross_profit+gross_loss,2),currency,DoubleToString(gross_profit/MathAbs(gross_loss),2)));

      else

         Print(StringFormat("==== %s ====\n0G0;> ?5@8>40: %s\n1I55 :>;-2> A45;>:: %s\n1I0O ?@81K;L: %s %s\n1I89 C1KB>:: %s %s\n'8AB0O ?@81K;L: %s %s",

                            IntegerToString(Magic),TimeToString(Start_date),IntegerToString(count),DoubleToString(gross_profit,2),currency,DoubleToString(gross_loss,2),currency,DoubleToString(gross_profit+gross_loss,2),currency));

     }

   if(Language==ENG)

     {

      if(gross_loss!=0)

         Print(StringFormat("==== %s ====\nTotal Deals: %s\nGross Profit: %s %s\nGross Loss: %s %s\nTotal Net Profit: %s %s\nProfit Factor: %s",

                            IntegerToString(Magic),IntegerToString(count),DoubleToString(gross_profit,2),currency,DoubleToString(gross_loss,2),currency,DoubleToString(gross_profit+gross_loss,2),currency,DoubleToString(gross_profit/MathAbs(gross_loss),2)));

      else

         Print(StringFormat("==== %s ====\nTotal Deals: %s\nGross Profit: %s %s\nGross Loss: %s %s\nTotal Net Profit: %s %s",

                            IntegerToString(Magic),IntegerToString(count),DoubleToString(gross_profit,2),currency,DoubleToString(gross_loss,2),currency,DoubleToString(gross_profit+gross_loss,2),currency));

     }

  }



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

Comments