Сортировка по валютным парам в ордерах

 

Написал скрипт сортировки валютных пар

Смысл в том, что среди множества открытых ордеров валютных пар бывает не больше нескольких.

И для того чтобы не искать глазами в списке и видеть какие пары в данный момент торгуются  советником, написал скрипт.

//Сортировка ордеров по парам 
  int total,k,i,t,sort;
  string ArrayOrderSymbol[],ArrayOrderSort[];
 
  void OnStart()
  {
  
//  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  --- 1 
   for( i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         total++;ArrayResize(ArrayOrderSort,total+1);ArrayOrderSort[total]=OrderSymbol(); //--- все найденые ордера  занести в масив
      
     }
//  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  --- 1

//  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  --- 2
         //совпадающие пары
   for(k=0; k < i ;k++)
   {for(sort=0;sort<k;sort++)
    { if(OrderSelect(sort,SELECT_BY_POS ,MODE_TRADES))  
        if(ArrayOrderSort[sort]!=ArrayOrderSort[k])continue;
         else {t++;ArrayResize(ArrayOrderSymbol,t+1);ArrayOrderSymbol[t]=OrderSymbol();}    //--- сортировка совпадающих пар
    }
   }  
   

         //несовпадающие пары
   for(k=0;k < i ;k++)
   {for(sort=0;sort<k;sort++)
    { if(OrderSelect(k,SELECT_BY_POS ,MODE_TRADES))  
        if(ArrayOrderSort[sort]!=ArrayOrderSort[k])continue;                      
         else {t++;ArrayResize(ArrayOrderSymbol,t+1);ArrayOrderSymbol[t]=OrderSymbol();}    //--- сортировка несовпадающих пар
    }
   }  
               
//  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  --- 2      

       Alert(" *************** "); 
       for(k=1; k<= t ;k++) 
       {Alert(k+": "+ArrayOrderSymbol[k]);  
       } 
       Alert("");
       Alert(" Валютных пар: "+t+"  / всего ордеров: "+ OrdersTotal());
       Alert(" *************** ");  
    }
  
  
  
 
   

Скрипт работает! Но написал его, так сказать методом тыка, не все понимая. Есть чуйка, что можно код сильно сократить. Если есть желающие помогите...

 
KopH:

Написал скрипт сортировки валютных пар

Смысл в том, что среди множества открытых ордеров валютных пар бывает не больше нескольких.

И для того чтобы не искать глазами в списке и видеть какие пары в данный момент торгуются  советником, написал скрипт.

Скрипт работает! Но написал его, так сказать методом тыка, не все понимая. Есть чуйка, что можно код сильно сократить. Если есть желающие помогите...

//+------------------------------------------------------------------+
//|                                                          115.mq4 |
//|                      Copyright © 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

int total = 0;
string ArrayOrderSymbol = "";
 
void OnStart()
{
   string Pair; 
//  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  --- 1 
   for( i = 0; i < OrdersTotal(); i++)
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES) )
      {
         Pair = OrderSymbol();
         if ( StringFind( ArrayOrderSymbol, Pair, 0 ) < 0 ) // new pair
         {
            total++;
            ArrayOrderSymbol = ArrayOrderSymbol + Pair + " ";
         }
      }
      
//  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  ---  --- 2      
   Alert(" *************** "); 
   Alert( ArrayOrderSymbol );  
   Alert("");
   Alert(" Валютных пар: " + total + " / всего ордеров: " + OrdersTotal() );
   Alert(" *************** ");  
}
Не проверял. Но, должно работать.
 
отлично работает. Большое спасибо.