Build 1580 CExpertBase::Init: attempt of re-initialization

 

Стала выскакивать такая ошибка.

Что делаю: в уже запущенном на графике советнике меняю входной параметр. После нажатия на "Ок" советник вылетает с ошибкой "CExpertBase::Init: attempt of re-initialization".

 

Подозрение на:

#include <Expert\Money\MoneyFixedMargin.mqh>

class CMoneyFixedMargin : public CExpertMoney -> class CExpertMoney : public CExpertBase ->

//+------------------------------------------------------------------+
//| Initialization of object.                                        |
//+------------------------------------------------------------------+
bool CExpertBase::Init(CSymbolInfo *symbol,ENUM_TIMEFRAMES period,double point)
  {
//--- check the initialization phase
   if(m_init_phase!=INIT_PHASE_FIRST)
     {
      Print(__FUNCTION__+": attempt of re-initialization");
      return(false);
     }
//--- check of pointer
 

Пример кода:

//+------------------------------------------------------------------+
//|                                 attempt of re-initialization.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
#property description "Build 1580. Error: CExpertBase::Init: attempt of re-initialization"
#include <Trade\SymbolInfo.mqh>  
#include <Expert\Money\MoneyFixedMargin.mqh>
CSymbolInfo       m_symbol;                     // symbol info object
CMoneyFixedMargin m_money;
//---
input double   Risk=5;              // Risk in percent for a deal from a free margin
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   m_symbol.Name(Symbol());                  // sets symbol name
   m_symbol.Refresh();
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(m_symbol.Digits()==3 || m_symbol.Digits()==5)
      digits_adjust=10;
//---
   if(!m_money.Init(GetPointer(m_symbol),Period(),m_symbol.Point()*digits_adjust))
      return(INIT_FAILED);
   m_money.Percent(Risk);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+