Как разделить историю на различные символы в MQL4

 
Плиз помогите найти скрипт или советник что ни будь  как вообще можно разделить историю сделок на части что бы не искать отдельно нужный инструмент :)  ну то есть типо  доллар/евро  отдельно от ены/доллар и т.д.   а не все в куче :)  Я очень буду благодарен если поможете мне в этом Вопросе !!  Спасибо Всем кто поможет :) 
Рецепты MQL5 - История сделок и библиотека функций для получения свойств позиции
Рецепты MQL5 - История сделок и библиотека функций для получения свойств позиции
  • www.mql5.com
Пришло время подвести краткий итог по материалам предыдущих статей о свойствах позиции. В этой статье мы создадим несколько дополнительных функций для получения тех свойств, которые можно получить только после обращения к истории сделок. Мы также познакомимся со структурами данных, что сделает доступ к свойствам позиции и символа еще удобнее.
 
Вы про анализ и статистику по каждому символу отдельно? 
 
Artyom_117:
Плиз помогите найти скрипт или советник что ни будь  как вообще можно разделить историю сделок на части что бы не искать отдельно нужный инструмент :)  ну то есть типо  доллар/евро  отдельно от ены/доллар и т.д.   а не все в куче :)  Я очень буду благодарен если поможете мне в этом Вопросе !!  Спасибо Всем кто поможет :) 

https://www.mql5.com/ru/articles/9266#topic07

Советы профессионального программиста (Часть I): Хранение, отладка и компиляция кодов. Работа с проектами и логами
Советы профессионального программиста (Часть I): Хранение, отладка и компиляция кодов. Работа с проектами и логами
  • www.mql5.com
Советы профессионального программиста о методах, приемах и вспомогательных инструментах, облегчающих программирование.
 
Vladislav Andruschenko #:
Вы про анализ и статистику по каждому символу отдельно? 

 да ) спасибо то что нужно ) огромное спасибо 

 
Artyom_117:
Плиз помогите найти скрипт или советник что ни будь  как вообще можно разделить историю сделок на части что бы не искать отдельно нужный инструмент :)  ну то есть типо  доллар/евро  отдельно от ены/доллар и т.д.   а не все в куче :)  Я очень буду благодарен если поможете мне в этом Вопросе !!  Спасибо Всем кто поможет :) 

Вот уже разделили

Report
Report
  • www.mql5.com
Генератор отчетов
 

здесь получше - MQL4 Function pointer / function callback solution
// Orchard Function Pointer

добавьте в input Ticker и по Price я особо не вчитывалась - но вам это и не надо -- изучите код / адаптируйте

//+------------------------------------------------------------------+
//|                                                    TK_Profit.mq4 |
// https://www.youtube.com/watch?v=XUrEhoOuD9o
// MQL4 Function pointer / function callback solution
// Orchard - Function Pointer
//+------------------------------------------------------------------+
#property copyright "OrchardForex" 
#property link      "https://www.youtube.com/watch?v=XUrEhoOuD9o "
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
#property show_inputs

struct SOrderTotalSimple {
        int count;
        double profit;
        double lots;
        datetime firstOpenTime;
        datetime lastOpenTime;
        double highOpenPrice;
        double lowOpenPrice;
};

struct SOrderTotal : SOrderTotalSimple {
        int orderTicketList[];
};

// function definitions
// Condition function - 4 functions
typedef double(*TOrderValue)();
double FOpenTime() {return ((double) OrderOpenTime());}
double FCloseTime() {return ((double) OrderCloseTime());}
double FLots() {return(OrderLots());}
double FProfit() {return(OrderProfit());}

// Alternate condition functio
typedef bool(*TOrderSelect)(double, double);

// Summation Function  //*TOrderTotal - fx-ptr returns void but accepts SOrderTotal&
typedef void(*TOrderTotal)(SOrderTotal&);


// inputs - 
 datetime InpStartTime = 0; // Start date & time
 datetime InpEndTime = 0;   // End date and time
input string mySymbol ="EURUSD";

void OnStart()
  {

        SOrderTotal orderTotal;
        
        // In case of zero end time
        datetime endTime = InpEndTime==0 ? TimeCurrent() : InpEndTime;
        
        string msg = "";
        
        // Load the history data
        
         SumOrders1(mySymbol, -1, -1, InpStartTime, endTime, FCloseTime,
                                                MODE_HISTORY, FOrderTotal, orderTotal);
        
        msg = StringFormat("For history count=%i, profit=%.2f, lots=%.2f"
                                                + ", firstTime=%s, lastTime=%s"
                                                + ", lowPrice=%.2f, highPrice=%.2f",
                                                orderTotal.count, orderTotal.profit, orderTotal.lots,
                                                TimeToString(orderTotal.firstOpenTime),
                                                TimeToString(orderTotal.lastOpenTime),          
                                                orderTotal.lowOpenPrice, orderTotal.highOpenPrice);
        MessageBox(msg, "History", MB_OK);
        
        msg = "Here are the tickets: ";
        for (int i=0; i< orderTotal.count; i++) {
                msg += IntegerToString(orderTotal.orderTicketList[i]) + ", ";
        }
        MessageBox(msg, "History Tickets", MB_OK);
  }
//+------------------------------------------------------------------+

void SumOrders1(string symbol, int magic, int orderType,
        double limitLow, double limitHigh, TOrderValue fValue, /*fx from current Order*/
        int mode, TOrderTotal fOrderTotal, SOrderTotal &total, 
        bool reset=true){
                if (reset) {
                        SOrderTotalSimple tmp = {0.0};
                        total = tmp;
                }
                
                int cnt = mode == MODE_HISTORY ? OrdersHistoryTotal() : OrdersTotal();
                double orderValue;              // to return from fValue
                
                // Make enough room in the array
                ArrayResize(total.orderTicketList, total.count+cnt);
                
                for (int i=0; i<cnt; i++) {
                        if (OrderSelect(i, SELECT_BY_POS, mode)) {
                          if ((symbol=="" || OrderSymbol()==symbol)
                                && (magic<0 || OrderMagicNumber()==magic)
                                && (orderType<0 || OrderType()==orderType)
                                && OrderType()!=ORDER_TYPE_BALANCE){
                                
                                orderValue = fValue();
                                if (orderValue >= limitLow && orderValue <=limitHigh) {                         
                                   fOrderTotal(total);
                                }       
                                }
                        }
                }
                
                // In case the array is too big due to filters
                ArrayResize(total.orderTicketList, total.count);
                        
        return;
}


void FOrderTotal(SOrderTotal &total) {

   // Simple accumulators
   total.count++;
   total.profit += OrderProfit();
   total.lots += OrderLots();
   
   // Arrays
   total.orderTicketList[total.count-1] = OrderTicket();
   
   // Limit accumulators
   if (OrderOpenTime()<total.firstOpenTime || total.firstOpenTime==0) {
      total.firstOpenTime=OrderOpenTime();
   }
        if (OrderOpenTime()>total.lastOpenTime ) {
                total.lastOpenTime = OrderOpenTime();
        }
        if (OrderOpenPrice()<total.lowOpenPrice || total.lowOpenPrice ==0) {
                total.lowOpenPrice  = OrderOpenPrice();
        }
        if (OrderOpenPrice()>total.highOpenPrice ) {
                total.highOpenPrice = OrderOpenPrice();
        }       
}
 
Artyom_117:
Плиз помогите найти скрипт или советник что ни будь  как вообще можно разделить историю сделок на части что бы не искать отдельно нужный инструмент

в самом MT: Терминал (Ctrl+T)->История счёта-> в шапке нажмите поле Символ ==> получите сортировку по этому полю (в отсортированном списке удобнее будет глазам)... даже без скрипта