keg of money

Author: Волноблог
Orders Execution
Checks for the total of open orders
Miscellaneous
It opens Message Boxes to the user
0 Views
0 Downloads
0 Favorites
keg of money
ÿþ//+------------------------------------------------------------------+

//|                                >G>=>: 45=53/Keg of money.mq4    |

//|                                             http://wave.ucoz.com |

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

#property copyright ">;=>1;>3"

#property link      "http://wave.ucoz.com"

#property version   "1.00"

#property strict

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

//|                                                                  |

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

class CLibArray

  {

private:

   // @>25@:0 ACI5AB2>20=8O 2 <0AA825 M;5<5=B0 A 7040==K< 7=0G5=85<

   int Find(string &aArray[],string aValue)

     {

      for(int i=0; i<ArraySize(aArray); i++)

        {

         if(aArray[i]==aValue)

           {

            return(i); // -;5<5=B ACI5AB2C5B, 2>72@0I05< 8=45:A M;5<5=B0

           }

        }

      return(-1);  // 5B B0:>3> M;5<5=B0, 2>72@0I05< -1

     }

public:

   // >102:0 2 :>=5F <0AA820

   void AddToEnd(string &aArray[],string aValue)

     {

      int m_size=ArraySize(aArray);

      ArrayResize(aArray,m_size+1);

      aArray[m_size]=aValue;

     }

   // >102:0 2 :>=5F <0AA820 ?@8 CA;>288 >BACBAB28O 2 <0AA825 B0:>3> 7=0G5=8O

   void AddToEndIfNotExistss(string &aArray[],string aValue)

     {

      if(Find(aArray,aValue)==-1)

        {

         AddToEnd(aArray,aValue);

        }

     }

  };

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

//|                                                                  |

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

void OnStart()

  {

   CLibArray ar;

   double lots,levloss,income;

   int i=0,j=0,k=0,size=0,nonTP,nonSL;

   int Total=OrdersTotal();

   string NameGrup[]; //<0AA82 A =0720=8O<8 3@C??

   string msg,

   msg1,msg2,msg3,msg4,msg5,usd=AccountCurrency();



//---

   for(i=0; i<Total; i++) //0=>A8< 2 <0AA82 A?8A>: B>@3C5<KE 8=AB@C<5=B>2

     {

      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

      ar.AddToEndIfNotExistss(NameGrup,OrderSymbol());

     }



   size=ArraySize(NameGrup);



   msg+="B>@3C5<KE 8=AB@C<5B>2: "+IntegerToString(size)+"\n";



   for(j=0; j<size; j++)

     {

      nonTP=0;

      nonSL=0;

      lots=0;

      levloss=0;

      income=0;

      for(k=0; k<Total; k++)

        {

         if(!OrderSelect(k,SELECT_BY_POS,MODE_TRADES)) continue;

         if(OrderSymbol()==NameGrup[j])

           {

            if((OrderType()==OP_BUY))lots=lots+OrderLots();

            if((OrderType()==OP_SELL))lots=lots-OrderLots();

            if((OrderType()==OP_BUY) && (OrderStopLoss()>0)){levloss=levloss-(OrderLots()*(((OrderOpenPrice()-OrderStopLoss())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

            if((OrderType()==OP_BUY)&&(OrderTakeProfit()>0)){ income=income+(OrderLots()*(((OrderTakeProfit()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

            if((OrderType()==OP_SELL) &&(OrderStopLoss()>0)){levloss=levloss-(OrderLots()*(((OrderStopLoss()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

            if((OrderType()==OP_SELL) && (OrderTakeProfit()>0)){income=income+(OrderLots()*(((OrderOpenPrice()-OrderTakeProfit())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

            if(OrderTakeProfit()<=0) nonTP++;

            if(OrderStopLoss()==0) nonSL++;

           }

        }



      if(lots>0)msg5="  |  >B>2: ‘! "+DoubleToStr(lots,2);

      if(lots<0)msg5="  |  >B>2: “! "+DoubleToStr(-lots,2);

      if(levloss<0){ msg1=" | >7<. C1.: "+DoubleToStr(-levloss,2)+" "+usd+" | @8A: "+DoubleToStr((-100*levloss/AccountBalance()),2)+"% |";}

      if(levloss>=0){ msg1=" | /#: "+DoubleToStr(levloss,2)+" "+usd+" | 4>E>4 "+DoubleToStr(((100*levloss/AccountBalance())),2)+"% |";}

      //if(levloss==0){ msg1="";}

      if(income>0 && (OrderTakeProfit()>0)){ msg1=" | >7<>6=K9 4>E>4: "+DoubleToStr(income,2)+" "+usd;}

      if(income==0){ msg2="";}

      if(nonSL>0){ msg3="  |  5BC SL: "+IntegerToString(nonSL);}else{msg3="";};

      if(nonTP>0){ msg4="  |  5BC TP: "+IntegerToString(nonTP);}else{msg4="";};//5A;8 7=0G5=85 nonTP=0, B> B59: ?@>D8BK 2KAB2;5=K







      msg += NameGrup[j];

      msg += msg5;

      msg += msg3;

      msg += msg4;

      msg += msg1;

      msg += msg2+"\n";



     }





//>1I85 ?> 2A5<C AG5BC

   nonTP=0;

   nonSL=0;

   lots=0;

   levloss=0;

   income=0;



   for(k=0; k<Total; k++)

     {

      if(!OrderSelect(k,SELECT_BY_POS,MODE_TRADES)) continue;

      if((OrderType()==OP_BUY) && (OrderStopLoss()>0)){levloss=levloss-(OrderLots()*(((OrderOpenPrice()-OrderStopLoss())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

      if((OrderType()==OP_BUY)&&(OrderTakeProfit()>0)){ income=income+(OrderLots()*(((OrderTakeProfit()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

      if((OrderType()==OP_SELL) &&(OrderStopLoss()>0)){levloss=levloss-(OrderLots()*(((OrderStopLoss()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

      if((OrderType()==OP_SELL) && (OrderTakeProfit()>0)){income=income+(OrderLots()*(((OrderOpenPrice()-OrderTakeProfit())/MarketInfo(OrderSymbol(),MODE_POINT))*MarketInfo(OrderSymbol(),MODE_TICKVALUE)));}

     }



   msg +="______________________________________________________________________________________\n";

   msg +=msg1="0@0=B. 10;0=A: "+DoubleToStr((AccountBalance()+levloss),1)+" "+usd;

   if(levloss<0){ msg2=" | >7<>6=K9 C1KB>:: "+DoubleToStr(-levloss,2)+" "+usd+" | @8A: "+DoubleToStr((100*levloss/AccountBalance()),1)+"% |";}

   if(levloss>0){ msg2=" | /#: "+DoubleToStr(levloss,2)+" "+usd+" | 4>E>4 "+DoubleToStr((100*levloss/AccountBalance()),1)+"% |";}

   msg+=msg2;



   MessageBox(msg,">G>=>: 45=53");

  }



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

Comments