Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 625

 
Igor Makanu:

поэкспериментируйте с таким кодом, в журнале эксперта читайте сообщение (переключайте ТФ, вводите переменную, перезагрузите терминал не закрывая эксперта...)

и второй вариант описать на глобальном уровне видимости переменную с модификатором static

Поправочка о которой сразу забыл сказать во первых это mql4.

А вторых мне нужно чтобы при изменении переменных эксперта запускался  OnInit().

Вот и все о чем я прошу помощи!

Да перезагрузка терминала и смена тф помогает но при изменении переменных OnInit() не срабатывает и из-за этого у меня косяки все лезут!!!!

 
Игорь:

Поправочка о которой сразу забыл сказать во первых это mql4.

А вторых мне нужно чтобы при изменении переменных эксперта запускался  OnInit().

Вот и все о чем я прошу помощи!

Да перезагрузка терминала и смена тф помогает но при изменении переменных OnInit() не срабатывает и из-за этого у меня косяки все лезут!!!!

Можно поступить так. При 1-м запуске советника OnInit() копирует переменные. On Calc...() или, как там его в МТ4, проверяет идентичность переменных их копиям. Если переменные не совпадают, силком запускаем  OnInit(), и если надо, то перед этим что-то еще, чтобы обресетить советник. Ну, и return напоследок.

 
Игорь:

Поправочка о которой сразу забыл сказать во первых это mql4.

А вторых мне нужно чтобы при изменении переменных эксперта запускался  OnInit().

Вот и все о чем я прошу помощи!

Да перезагрузка терминала и смена тф помогает но при изменении переменных OnInit() не срабатывает и из-за этого у меня косяки все лезут!!!!

а Вы смотрели код который я Вам дал? это и был МТ4 и все там работает как Вы просите

тогда читайте документацию https://docs.mql4.com/ru/runtime/event_fire

вот запустил у себя предложенный мной код, изменяю внешнюю переменную var 2 раза, вот журнал экспертов:

0       15:36:39.736    Compiling 'test'
0       15:37:37.573    Expert test EURUSD,H1: loaded successfully
0       15:37:39.101    test EURUSD,H1 inputs: var1=1; 
0       15:37:39.130    test EURUSD,H1: Вызов OnInit(), var1=1
0       15:37:39.130    test EURUSD,H1: initialized
0       15:37:51.341    test EURUSD,H1: uninit reason 5
0       15:37:51.343    test EURUSD,H1: Вызов OnInit(), var1=34567
0       15:37:51.343    test EURUSD,H1: initialized
0       15:37:51.366    test EURUSD,H1 inputs: var1=34567; 
0       15:38:04.124    test EURUSD,H1: uninit reason 5
0       15:38:04.126    test EURUSD,H1: Вызов OnInit(), var1=-9999
0       15:38:04.126    test EURUSD,H1: initialized
0       15:38:04.149    test EURUSD,H1 inputs: var1=-9999; 

код давайте где "косяки лезут"

ну а так, из любого места MQL-программы можно вызвать любую функцию, ф-ция инициализации эксперта это тоже ф-ция, Вы можете вызвать OnInit() принудительно, но обычно этого не требуется, терминал сам вызывает OnInit()

События клиентского терминала - Программы MQL4 - Справочник MQL4
События клиентского терминала - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации глобальных переменных, будет послано событие Init, которое обрабатывается функцией OnInit(), если она есть. Это событие также генерируется после смены финансового инструмента и/или периода графика, после...
 
Igor Makanu:

там в коде ошибок много, в 

нужно цены нормализовать то будет работать то будет ошибку сервера выдавать "неправильные цены", желательно выше нормализовать StopLoss_SELL

и скорее всего нужно еще стоплосс проверить не равен ли он нулю, да и не желательно вещественные числа сравнивать на равенство, нужно стараться вещественные числа сравнивать на > или  <

Если много ошибок, не сочтёте за труд указать их все?

 
Igor Makanu:

а Вы смотрели код который я Вам дал? это и был МТ4 и все там работает как Вы просите

тогда читайте документацию https://docs.mql4.com/ru/runtime/event_fire

вот запустил у себя предложенный мной код, изменяю внешнюю переменную var 2 раза, вот журнал экспертов:

код давайте где "косяки лезут"

ну а так, из любого места MQL-программы можно вызвать любую функцию, ф-ция инициализации эксперта это тоже ф-ция, Вы можете вызвать OnInit() принудительно, но обычно этого не требуется, терминал сам вызывает OnInit()

Спасибо огроменное благодаря вашему коду ошибки нашел !!!!!!!!! УДАЧИ ВАМ !!!! И СПАСИБО ЗА ПОМОЩЬ !!!!!!

 
Подскажите, пожалуйста. Как сделать чтобы стандартный индикатор МА отображался не на всю историю, а на заданное количество свечей? Спасибо. 
 
prom18:
Подскажите, пожалуйста. Как сделать чтобы стандартный индикатор МА отображался не на всю историю, а на заданное количество свечей? Спасибо. 
Написать свой индикатор МА с заданием глубины истории!
 

Как для тестирования советника вручную задавать котировки? 

Наверняка есть решение, но не удалось нагуглить

 
Galim_V:

  А чем вас F12 после паузы не устраивает?

Я имел ввиду именно движение цены задавать

 
Andrey Sokolov:

Как для тестирования советника вручную задавать котировки? 

Наверняка есть решение, но не удалось нагуглить

Написать свои тики и подставить в тестер стратегий.

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