Returning an array of data from a frame

 

Hi Guys

See code snippet below, i'm trying to get statistics for a tester run in the optimizer. No problems getting the changing value of dummy_var and WriteStatsStructure() is working in a single tester run however no  array data is returned from the frame in the optimizer.

I know i can do this by reading/writing files after each tester run but hoping to avoid that....

Hope i'm not posting in the wrong section or asking a stupid question!


input int dummy_var=0;
double statsdata[50];

//+------------------------------------------------------------------+
//| Handle Tester Events                                             |
//+------------------------------------------------------------------+
double OnTester()
  {
   string name="";
   long   id=0;
   double data[];
   
   FrameAdd(name,0,dummy_var,statsdata);
   
   return 0;
  }
//+------------------------------------------------------------------+
//| Handle Tester Events                                             |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
   //DebugBreak();      
   ulong  pass=0;
   string name="";
   long   id=0;
   double value=0.0;
   double data[];

   while(FrameNext(pass,name,id,value,data))
     {
      Sleep(100);
      Print(data[0]);
      Print(pass," ",name," ",id," ",value);
      //DebugBreak();
     }
  }

//+------------------------------------------------------------------+
//| Handle Tester Events                                             |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
  Print("Start!!");
  }

//+------------------------------------------------------------------+
//| Handle Tester Events                                             |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
  Print("End!!");
  }

//+------------------------------------------------------------------+
//| Get Statistical Info
//+------------------------------------------------------------------+
void WriteStatsStructure()
   {
   //DebugBreak();
   //ArrayResize(statsdata,50);
   statsdata[0]=TesterStatistics(STAT_INITIAL_DEPOSIT);
   statsdata[1]=TesterStatistics(STAT_WITHDRAWAL);
   statsdata[2]=TesterStatistics(STAT_PROFIT);
   statsdata[3]=TesterStatistics(STAT_GROSS_PROFIT);
   statsdata[4]=TesterStatistics(STAT_GROSS_LOSS);
   statsdata[5]=TesterStatistics(STAT_MAX_PROFITTRADE);
   statsdata[6]=TesterStatistics(STAT_MAX_LOSSTRADE);
   statsdata[7]=TesterStatistics(STAT_CONPROFITMAX);
   statsdata[8]=TesterStatistics(STAT_CONPROFITMAX_TRADES);
   statsdata[9]=TesterStatistics(STAT_MAX_CONWINS);
   statsdata[10]=TesterStatistics(STAT_MAX_CONPROFIT_TRADES);
   statsdata[11]=TesterStatistics(STAT_CONLOSSMAX);
   statsdata[12]=TesterStatistics(STAT_CONLOSSMAX_TRADES);
   statsdata[13]=TesterStatistics(STAT_MAX_CONLOSSES);
   statsdata[14]=TesterStatistics(STAT_MAX_CONLOSS_TRADES);
   statsdata[15]=TesterStatistics(STAT_BALANCEMIN);
   statsdata[16]=TesterStatistics(STAT_BALANCE_DD);
   statsdata[17]=TesterStatistics(STAT_BALANCEDD_PERCENT);
   statsdata[18]=TesterStatistics(STAT_BALANCE_DDREL_PERCENT);
   statsdata[19]=TesterStatistics(STAT_BALANCE_DD_RELATIVE);
   statsdata[20]=TesterStatistics(STAT_EQUITYMIN);
   statsdata[21]=TesterStatistics(STAT_EQUITY_DD);
   statsdata[22]=TesterStatistics(STAT_EQUITYDD_PERCENT);
   statsdata[23]=TesterStatistics(STAT_EQUITY_DDREL_PERCENT);
   statsdata[24]=TesterStatistics(STAT_EQUITY_DD_RELATIVE);
   statsdata[25]=TesterStatistics(STAT_EXPECTED_PAYOFF);
   statsdata[26]=TesterStatistics(STAT_PROFIT_FACTOR);
   statsdata[27]=TesterStatistics(STAT_RECOVERY_FACTOR);
   statsdata[28]=TesterStatistics(STAT_SHARPE_RATIO);
   statsdata[29]=TesterStatistics(STAT_MIN_MARGINLEVEL);
   statsdata[30]=TesterStatistics(STAT_CUSTOM_ONTESTER);
   statsdata[31]=TesterStatistics(STAT_DEALS);
   statsdata[32]=TesterStatistics(STAT_TRADES);
   statsdata[33]=TesterStatistics(STAT_PROFIT_TRADES);
   statsdata[34]=TesterStatistics(STAT_LOSS_TRADES);
   statsdata[35]=TesterStatistics(STAT_SHORT_TRADES);
   statsdata[36]=TesterStatistics(STAT_LONG_TRADES);
   statsdata[37]=TesterStatistics(STAT_PROFIT_SHORTTRADES);
   statsdata[38]=TesterStatistics(STAT_PROFIT_LONGTRADES);
   statsdata[39]=TesterStatistics(STAT_PROFITTRADES_AVGCON);
   statsdata[40]=TesterStatistics(STAT_LOSSTRADES_AVGCON);
   //DebugBreak();
   }
 
double OnTester ()
  {
   string name= "" ;
   long    id= 0 ;
   double data[];
   
   WriteStatsStructure();
   FrameAdd (name, 0 ,dummy_var,statsdata);
   
   return 0 ;
  }
 
fxsaber:
Thanks @fxsaber!! works like a charm!!! If only actually making money was like programming... :)