Как сделать панель статистики?

 

Доброго времени, коллеги!

Есть у кого наработки, или советы по алгоритму как реализовать в индикаторе панель статистики по касаниями СЛ и ТП.

Например как тут.


В советнике проще проанализировав историю позиций. Но у меня планируется индикатор.

 
вот например, накидала как это должно выглядить. функция всё считает.
double на прямую сравнивать конечно не корректно, но с учётом более значимой погрешности на спреде, пёс с ними
панель сам допиши.
void indicator_result_panel(double & buffer_buy[], double& buffer_sell[], int stop_loss, int take_profit) {
   // variables for counting
   int count_signals_total = 0;
   int count_signals_win   = 0;
   // spread for calculations
   double spread = Ask - Bid;
   // cycle for checking signal one by one
   for(int i=ArraySize(buffer_buy); i>0; i--) {
      // buy signal
      if(buffer_buy[i]!=EMPTY_VALUE) {
         // order open price
         double open_price = iOpen(NULL,0,i-1) + spread;
         // check result
         for(int b=i-1;b>=0;b--) {
            // reach take profit
            if(iHigh(NULL,0,b) >= open_price + take_profit*_Point) {
               count_signals_total++;
               count_signals_win ++;
               break;
            }
            // reach stop loss
            if(iLow(NULL,0,b) <= open_price - stop_loss*_Point) {
               count_signals_total++;
               break;
            }
         }
      }
      // sell signal
      if(buffer_sell[i]!=EMPTY_VALUE) {
         // order open price
         double open_price = iOpen(NULL,0,i-1);
         // check result
         for(int b=i-1;b>=0;b--) {
            // reach take profit
            if(iLow(NULL,0,b) + spread <= open_price - take_profit*_Point) {
               count_signals_total++;
               count_signals_win ++;
               break;
            }
            // reach stop loss
            if(iHigh(NULL,0,b) + spread >= open_price + stop_loss*_Point) {
               count_signals_total++;
               break;
            }
         }
      }
   }
   // draw panel
   // ....

}
 
Alena Lysenkova #:
вот например, накидала как это должно выглядить. функция всё считает.
double на прямую сравнивать конечно не корректно, но с учётом более значимой погрешности на спреде, пёс с ними
панель сам допиши.


спасибо!

Причина обращения: