Ошибка Моланиса Кто-нибудь? - страница 4

 
WHRoeder:

НЕПРАВДА Вы хоть потрудились прочитать ссылку, которую вы разместили(https://book.mql4.com/variables/types), там сказано: "Глобальные переменные инициализируются только один раз перед тем, как задать выполнение специальных функций."

Глобальные и статические переменные устанавливаются при ЗАГРУЗКЕ советника, а не во время цикла deinit/init.

Добавьте оператор print сразу после Slippage = Slippage * 10 и запустите его, измените графики или таймфреймы и посмотрите в лог, если вы не хотите верить нашей документации.

Slippage - это extern int, значение которого инициализируется при каждом init().

PipMultiplier - это Global int, во всем советнике Molanis это значение не меняется, поэтому значение PipMultiplier не будет меняться при изменении TF, символа или открытии свойства советника.

Советник нажимает F7 снова и снова

extern int Extern=3;

int Intern = 1;
bool Do_Once;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  Alert ("Extern init = ",Extern);
  Alert ("Intern init = ",Intern);
  Do_Once = False;
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
   if (Do_Once == false)
      {
      Do_Once = true;
      Extern = Extern*2;
      Intern = Intern*2;
      Alert ("Extern start = ",Extern);
      Alert ("Intern start = ",Intern);
      }
   
   return(0);
  }
//+------------------------------------------------------------------+
 
onewithzachy:

Slippage - extern int, значение которого инициализируется при каждом init().

PipMultiplier - Global int, во всем советнике Моланиса это значение не меняется, поэтому значение PipMultiplier не будет меняться при изменении TF, Symbol или открытии свойств советника.

Советник нажимает F7 снова и снова


Демонстрирует ли ваш советник, что код работает так, как задумано? Если я правильно вас понял, Slippage возвращается к моим входным данным при каждом init(). PipMultiplier = 1 в globals, но внутри init() если FiveDigits = true, то PipMultiplier = 10... при каждом init(). Учитывая Slippage = 3 и FiveDigits = true, PipMultiplier всегда равен 10? 30 очков, 30 очков, 30 очков?
 
RJo:

Демонстрирует ли ваш советник, что код работает так, как задумано? Если я правильно вас понял, Slippage возвращается к моим входным данным при каждом init(). PipMultiplier = 1 в globals, но в init() если FiveDigits = true, то PipMultiplier = 10... при каждом init(). Учитывая Slippage = 3 и FiveDigits = true, PipMultiplier всегда равен 10? 30 очков, 30 очков, 30 очков?

В коде Моланиса значение PipMultiplier остается неизменным, оно никогда не меняется, будь то пятизначное число или нет - не беспокойтесь об этом. Я думаю, что вам нужно знать значение Slippage - и я проверил его перед ответом WHRoeder - оно не меняется.

Измените это в init(), подключите советника Моланиса, нажимайте F7 сколько угодно, и значение Slippage останется прежним.

   //if(FiveDigits)
   //  {
      PipMultiplier=10;
   //  }
   Slippage=Slippage*PipMultiplier;
   Alert ("Slippage ",Slippage);

:D

 
onewithzachy:

В коде Моланиса значение PipMultiplier остается неизменным, оно никогда не меняется, будь то пятизначное число или нет - не беспокойтесь об этом. Я думаю, что вам нужно знать значение Slippage - и я проверил его перед ответом WHRoeder - оно не меняется.

Измените это в init(), подключите советника Моланиса, нажимайте F7 сколько угодно, и значение Slippage останется прежним.

:D


Спасибо, onewithzachy, за прекращение моей охоты за дикими гусями.
 

Здравствуйте. Помогите пожалуйста, хочу построить советник по двойной скользящей средней для MT4 ECN счета.

первая МА период 14 сдвиг -7

вторая МА период 14 сдвиг -11

покупать и продавать и закрывать каждый крест скользящей средней.

Я прочитал много инструкций в интернете, но все еще не могу понять, как создать свой собственный советник с полной настройкой и успешной функцией покупки/продажи и закрытия.

Я прошу помощи у тех, кто уже профессионал, как я могу установить правильные настройки этого советника.

Кто-нибудь может помочь шаг за шагом... Я буду благодарен.