error on tester

 

i'm having some trouble with the tester terminal, i've searched for it and cant find what exactly is happening

i keep getting, over and over, this error

genetic pass (10, 511) tested with error "critical runtime error 517 in OnInit function (module -1 exception 0xc0000005)" in 0:00:00.181

can anyone help me identify what this error means, so that i can correct the situation?

 
scur :

i'm having some trouble with the tester terminal, i've searched for it and cant find what exactly is happening

i keep getting, over and over, this error

can anyone help me identify what this error means, so that i can correct the situation?

Can you see the OnInit () code?

 

the OnInit function is mainly the base template

got a few extras for testing purposes but none of the changes had any negative effect in previous versions of code

//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
   TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(), Period(), Expert_EveryTick, Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__ + ": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal = new CExpertSignal;
   if(signal == NULL)
     {
      //--- failed
      printf(__FUNCTION__ + ": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);

//--- Creating filter CSignalAC
   if(Signal_AC_Weight != 0)
     {
      CSignalAC *filter0 = new CSignalAC;
      if(filter0 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter0");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter0);
      //--- Set filter parameters
      filter0.Weight(Signal_AC_Weight);
     }

//--- Creating filter CSignalAO
   if(Signal_AO_Weight != 0)
     {
      CSignalAO *filter1 = new CSignalAO;
      if(filter1 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter1");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter1);
      //--- Set filter parameters
      filter1.Weight(Signal_AO_Weight);
     }

//--- Creating filter CSignalCCI
   if(Signal_CCI_Weight != 0)
     {
      if(Signal_CCI_Weight != 0)
        {
         CSignalCCI *filter2 = new CSignalCCI;
         if(filter2 == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating filter2");
            ExtExpert.Deinit();
            return(INIT_FAILED);
           }
         signal.AddFilter(filter2);
         //--- Set filter parameters
         filter2.PeriodCCI(Signal_CCI_PeriodCCI);
         filter2.Applied(Signal_CCI_Applied);
         filter2.Weight(Signal_CCI_Weight);
        }
     }

//--- Creating filter CSignalMACD
   if(Signal_MACD_Weight != 0)
     {
      CSignalMACD *filter3 = new CSignalMACD;
      if(filter3 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter3");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter3);
      //--- Set filter parameters
      if(Signal_MACD_PeriodSlow > Signal_MACD_PeriodFast)
        {
         filter3.PeriodFast(Signal_MACD_PeriodFast);
         filter3.PeriodSlow(Signal_MACD_PeriodSlow);
        }
      else
         if(Signal_MACD_PeriodSlow < Signal_MACD_PeriodFast)
           {
            filter3.PeriodFast(Signal_MACD_PeriodSlow);
            filter3.PeriodSlow(Signal_MACD_PeriodFast);
           }
         else
            if(Signal_MACD_PeriodSlow == Signal_MACD_PeriodFast)
              {
               filter3.PeriodFast(Signal_MACD_PeriodFast);
               filter3.PeriodSlow(Signal_MACD_PeriodSlow + 1);
              }
      filter3.PeriodSignal(Signal_MACD_PeriodSignal);
      filter3.Applied(Signal_MACD_Applied);
      filter3.Weight(Signal_MACD_Weight);
     }

//--- Creating filter CSignalRSI
   if(Signal_RSI_Weight != 0)
     {
      CSignalRSI *filter4 = new CSignalRSI;
      if(filter4 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter4");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter4);
      //--- Set filter parameters
      filter4.PeriodRSI(Signal_RSI_PeriodRSI);
      filter4.Applied(Signal_RSI_Applied);
      filter4.Weight(Signal_RSI_Weight);
     }

//--- Creating filter CSignalRVI
   if(Signal_RVI_Weight != 0)
     {
      CSignalRVI *filter5 = new CSignalRVI;
      if(filter5 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter5");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter5);
      //--- Set filter parameters
      filter5.PeriodRVI(Signal_RVI_PeriodRVI);
      filter5.Weight(Signal_RVI_Weight);
     }

//--- Creating filter CSignalStoch
   if(Signal_Stoch_Weight != 0)
     {
      CSignalStoch *filter6 = new CSignalStoch;
      if(filter6 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter6");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter6);
      //--- Set filter parameters
      filter6.PeriodK(Signal_Stoch_PeriodK);
      filter6.PeriodD(Signal_Stoch_PeriodD);
      filter6.PeriodSlow(Signal_Stoch_PeriodSlow);
      filter6.Applied(Signal_Stoch_Applied);
      filter6.Weight(Signal_Stoch_Weight);
     }

//--- Creating filter CSignalTriX
   if(Signal_TriX_Weight != 0)
     {
      CSignalTriX *filter7 = new CSignalTriX;
      if(filter7 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter7");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter7);
      //--- Set filter parameters
      filter7.PeriodTriX(Signal_TriX_PeriodTriX);
      filter7.Applied(Signal_TriX_Applied);
      filter7.Weight(Signal_TriX_Weight);
     }

//--- Creating filter CSignalBands
   if(Signal_Bands_Weight != 0)
     {
      CSignalBands *filter8 = new CSignalBands;
      if(filter8 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter8");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter8);
      //--- Set filter parameters
      filter8.PeriodBands(Signal_Bands_PeriodBands);
      filter8.Shift(Signal_Bands_Shift);
      filter8.Deviation(Signal_Bands_Deviation);
      filter8.Applied(Signal_Bands_Applied);
      filter8.Weight(Signal_Bands_Weight);
     }

//--- Creating filter CSignalFrAMA
   if(Signal_FraMA_Weight != 0)
     {
      CSignalFrAMA *filter9 = new CSignalFrAMA;
      if(filter9 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter9");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter9);
      //--- Set filter parameters
      filter9.PeriodMA(Signal_FraMA_PeriodMA);
      filter9.Shift(Signal_FraMA_Shift);
      filter9.Applied(Signal_FraMA_Applied);
      filter9.Weight(Signal_FraMA_Weight);
     }

//--- Creating filter CSignalSAR
   if(Signal_SAR_Weight != 0)
     {
      CSignalSAR *filter10 = new CSignalSAR;
      if(filter10 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter10");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter10);
      //--- Set filter parameters
      filter10.Step(Signal_SAR_Step);
      filter10.Maximum(Signal_SAR_Maximum);
      filter10.Weight(Signal_SAR_Weight);
     }

//--- Creating filter CSignalTEMA
   if(Signal_TEMA_Weight != 0)
     {
      CSignalTEMA *filter11 = new CSignalTEMA;
      if(filter11 == NULL)
        {
         //--- failed
         printf(__FUNCTION__ + ": error creating filter11");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter11);
      //--- Set filter parameters
      filter11.PeriodMA(Signal_TEMA_PeriodMA);
      filter11.Shift(Signal_TEMA_Shift);
      filter11.Applied(Signal_TEMA_Applied);
      filter11.Weight(Signal_TEMA_Weight);
     }

//--- Creating filter CSignalITF
   if(Signal_ITF_Weight != 0)
     {
      CSignalITF *filter12=new CSignalITF;
      if(filter12==NULL)
        {
         //--- failed
         printf(__FUNCTION__+": error creating filter0");
         ExtExpert.Deinit();
         return(INIT_FAILED);
        }
      signal.AddFilter(filter12);
      //--- Set filter parameters
      filter12.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
      filter12.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
      filter12.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
      filter12.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
      filter12.Weight(Signal_ITF_Weight);
     }
//+------------------------------------------------------------------+
//| onInit trail                                                     |
//+------------------------------------------------------------------+
   switch(ttype)
     {
      case  0:    //None:
        {
         CTrailingNone *trailingN = new CTrailingNone;
         if(trailingN == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating trailing");
            ExtExpert.Deinit();
            return(32);
           }
         //--- Add trailing to expert (will be deleted automatically))
         if(!ExtExpert.InitTrailing(trailingN))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing trailing");
            ExtExpert.Deinit();
            return(33);
           }
         break;
        }

      case 1:     //Fixed:
        {
         CTrailingFixedPips *trailingF = new CTrailingFixedPips;
         if(trailingF == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating trailing");
            ExtExpert.Deinit();
            return(34);
           }
         //--- Add trailing to expert (will be deleted automatically))
         if(!ExtExpert.InitTrailing(trailingF))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing trailing");
            ExtExpert.Deinit();
            return(35);
           }
         //--- Set trailing parameters
         trailingF.StopLevel(Trailing_FixedPips_StopLevel);
         trailingF.ProfitLevel(Trailing_FixedPips_ProfitLevel);
         break;
        }

      case 2:  // MA
        {
         CTrailingMA *trailingMA = new CTrailingMA;
         if(trailingMA == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating trailing");
            ExtExpert.Deinit();
            return(36);
           }
         //--- Add trailing to expert (will be deleted automatically))
         if(!ExtExpert.InitTrailing(trailingMA))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing trailing");
            ExtExpert.Deinit();
            return(37);
           }
         //--- Set trailing parameters
         trailingMA.Period(Trailing_MA_Period);
         trailingMA.Shift(Trailing_MA_Shift);
         trailingMA.Method(Trailing_MA_Method);
         trailingMA.Applied(Trailing_MA_Applied);
         break;
        }

      case 3:     //ParabolicSAR:
        {
         CTrailingPSAR *trailingPS = new CTrailingPSAR;
         if(trailingPS == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating trailing");
            ExtExpert.Deinit();
            return(38);
           }
         //--- Add trailing to expert (will be deleted automatically))
         if(!ExtExpert.InitTrailing(trailingPS))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing trailing");
            ExtExpert.Deinit();
            return(39);
           }
         //--- Set trailing parameters
         trailingPS.Step(Trailing_ParabolicSAR_Step);
         trailingPS.Maximum(Trailing_ParabolicSAR_Maximum);
         break;
        }
      case 4:     //PersonalMA:
        {
         Etrailing = new TS_Trail;
         if(Etrailing == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating trailing");
            ExtExpert.Deinit();
            return(40);
           }
         //--- Add trailing to expert (will be deleted automatically))
         if(!ExtExpert.InitTrailing(Etrailing))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing trailing");
            ExtExpert.Deinit();
            return(41);
           }

         Etrailing.Type(Trailing_trailapply);
         Etrailing.Period(Trailing_TS_period);
         Etrailing.Shift(Trailing_TS_shift);
         Etrailing.Method(Trailing_TS_method);
         Etrailing.Applied_Price(Trailing_TS_applied);
         Etrailing.PeriodCMO(Trailing_TS_periodcmo);
         Etrailing.PeriodEMA(Trailing_TS_periodema);
         Etrailing.FastEMA(Trailing_TS_fastema);
         Etrailing.SlowEMA(Trailing_TS_slowema);
         Etrailing.MABarsTrail(Trailing_MA_bars_trail);
         Etrailing.TrailBehindMA(Trailing_trail_behind_MA);
         Etrailing.TrailOnLine(Trailing_trail_line);
         Etrailing.TrailOnPrice(Trailing_trail_price);
         Etrailing.TrailStep(Trailing_trail_step);
         Etrailing.Show(Trailing_show);
         if(!ExtExpert.ValidationSettings())
           {
            //--- failed
            printf(__FUNCTION__ + ": error in settings validation");
            ExtExpert.Deinit();
            return(41);
           }
        }
     }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| onInit money                                                     |
//+------------------------------------------------------------------+
   switch(mtype)
     {
      case  FixedVolume:
        {
         CMoneyFixedLot *moneyFV = new CMoneyFixedLot;
         if(moneyFV == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating money");
            ExtExpert.Deinit();
            return(42);
           }
         //--- Add money to expert (will be deleted automatically))
         if(!ExtExpert.InitMoney(moneyFV))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing money");
            ExtExpert.Deinit();
            return(43);
           }
         //--- Set money parameters
         moneyFV.Percent(Money_FixLot_Percent);
         moneyFV.Lots(Money_FixLot_Lots);
         if(!ExtExpert.ValidationSettings())
           {
            //--- failed
            printf(__FUNCTION__ + ": error in settings validation");
            ExtExpert.Deinit();
            return(43);
           }
         break;
        }

      case FixedMargin:
        {
         CMoneyFixedMargin *moneyFM = new CMoneyFixedMargin;
         if(moneyFM == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating money");
            ExtExpert.Deinit();
            return(44);
           }
         //--- Add money to expert (will be deleted automatically))
         if(!ExtExpert.InitMoney(moneyFM))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing money");
            ExtExpert.Deinit();
            return(45);
           }
         //--- Set money parameters
         moneyFM.Percent(Money_FixMargin_Percent);
         if(!ExtExpert.ValidationSettings())
           {
            //--- failed
            printf(__FUNCTION__ + ": error in settings validation");
            ExtExpert.Deinit();
            return(45);
           }

         break;
        }
      case FixedRisk:
        {
         CMoneyFixedRisk *moneyR = new CMoneyFixedRisk;
         if(moneyR == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating money");
            ExtExpert.Deinit();
            return(46);
           }
         //--- Add money to expert (will be deleted automatically))
         if(!ExtExpert.InitMoney(moneyR))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing money");
            ExtExpert.Deinit();
            return(47);
           }
         //--- Set money parameters
         moneyR.Percent(Money_FixRisk_Percent);
         if(!ExtExpert.ValidationSettings())
           {
            //--- failed
            printf(__FUNCTION__ + ": error in settings validation");
            ExtExpert.Deinit();
            return(47);
           }
         break;
        }

      case Minimum:
        {
         CMoneyNone *moneyM = new CMoneyNone;
         if(moneyM == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating money");
            ExtExpert.Deinit();
            return(48);
           }
         //--- Add money to expert (will be deleted automatically))
         if(!ExtExpert.InitMoney(moneyM))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing money");
            ExtExpert.Deinit();
            return(49);
           }
         if(!ExtExpert.ValidationSettings())
           {
            //--- failed
            printf(__FUNCTION__ + ": error in settings validation");
            ExtExpert.Deinit();
            return(49);
           }
         break;
        }

      case Optimized:
        {
         CMoneySizeOptimized *moneyO = new CMoneySizeOptimized;
         if(moneyO == NULL)
           {
            //--- failed
            printf(__FUNCTION__ + ": error creating money");
            ExtExpert.Deinit();
            return(50);
           }
         //--- Add money to expert (will be deleted automatically))
         if(!ExtExpert.InitMoney(moneyO))
           {
            //--- failed
            printf(__FUNCTION__ + ": error initializing money");
            ExtExpert.Deinit();
            return(51);
           }
         //--- Set money parameters
         moneyO.DecreaseFactor(Money_SizeOptimized_DecreaseFactor);
         moneyO.Percent(Money_SizeOptimized_Percent);
         if(!ExtExpert.ValidationSettings())
           {
            //--- failed
            printf(__FUNCTION__ + ": error in settings validation");
            ExtExpert.Deinit();
            return(51);
           }
         break;
        }
     }

//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__ + ": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }

my usual sequence of optimization goes from optimizing signals, then trail, then money

the personal MA trail part is a library created by me, and used with success, and no errors, in other project

the error is appearing during the indicator signal optimization, it starts ok and then starts giving the error

and one thing that keeps me scraching my head is that some runs it goes flawlessly and others, with the same exact paramethers, spam the error

i might need to do some filtering somewhere, like the MACD code changes, but cant find what is wrong

 
scur :

the OnInit function is mainly the base template

got a few extras for testing purposes but none of the changes had any negative effect in previous versions of code

my usual sequence of optimization goes from optimizing signals, then trail, then money

the personal MA trail part is a library created by me, and used with success, and no errors, in other project

the error is appearing during the indicator signal optimization, it starts ok and then starts giving the error

and one thing that keeps me scraching my head is that some runs it goes flawlessly and others, with the same exact paramethers, spam the error

i might need to do some filtering somewhere, like the MACD code changes, but cant find what is wrong

To understand, you need a detailed description: on what symbol, on what timeframe, ... - in general, you need data from two tabs of the tester:

You also need a complete code and a detailed description of the reproducible actions.

Reason: