[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 307

 
hoz:

Это уже не подгонъ, это типа автоподгонъ :)

ПодгонЪ и без твёрдого знака подгон.

А главные параметры, до того, чтобы работали без сбоя, их ещё определить нужно, думая, пробуя, проверяя на тестере, на демо, на реале, и так всё время, пока не осенит тебя что-нибудь новое, что покажется лучше. И всё без подгонов, а по логике, теории и практике!

 
Zhunko:
Любая переменная должна быть сначала объявлена, прежде чем быть использована. Можно в параметрах, можно на глобальном уровне библиотеки.


  Мало того, она должна быть еще и инициированна явно.
 
hoz:

Так вот же функция с библиотеки:

Вадим, про функции в цикле  Вы имеете ввиду, то что возвращает оператор switch машку? Но я же не получаю значения по всему количеству переменных цикла. Там лишь сравнивается тип получаемой машки (входной переменная функции) и потом рассчитывается значение машки. Выходит, что дополнительных расчётов то нет. Тока выбор типа машки и всё! Хочу понять, что Вы имеете в виду, под:

  Можно пояснить?
Это предположил, что Вы будете делать с этой функцией. Такой функцией обычно бегают по истории.
FAQ:

  Мало того, она должна быть еще и инициированна явно.
Желательно для порядка, но в MQL4 они при объявлении сами инициализируются по умолчанию нулями.
 
Тут вот намедни столкнулся с проблемой: как узнать, что индюк, которого используем в советнике через iCustom() уже инициализирован и с него можно брать данные? А то бывают ситуации когда он не успевает вывести на график свои объекты, а советник уже пытается брать некоторые данные с его буферов. В итоге иногда всплывают нулевые значения. Я конечно сделал проверку на ненулевые значения и только после этого разрешаю советнику работать дальше, но ... может есть более изящное решение?
 

И ещё: столкнулся со странным (для меня) поведением UninitializeReason(). В ините проверяю его значение и, если был сменён таймфрейм и есть открытые позиции, то нужно выдать запрос на их закрытие. Если изначально запустили советник на М5, потом переключили на другой ТФ, то запроса нет никакого. При возвращении на первоначальный ТФ (М5) появляется запрос. Это по-моему ненормально. Мне нужно при любой смене ТФ выдавать запрос.

Кто-нибудь пояснит?

 
artmedia70:

И ещё: столкнулся со странным (для меня) поведением UninitializeReason(). В ините проверяю его значение и, если был сменён таймфрейм и есть открытые позиции, то нужно выдать запрос на их закрытие. Если изначально запустили советник на М5, потом переключили на другой ТФ, то запроса нет никакого. При возвращении на первоначальный ТФ (М5) появляется запрос. Это по-моему ненормально. Мне нужно при любой смене ТФ выдавать запрос.

Кто-нибудь пояснит?

Сделайте так, работает, DeinitReason глобальная переменная

int deinit()
  {
//----
   DeinitReason = UninitializeReason( );
   Print("DeinitReason ",DeinitReason);
//----
   return(0);
  }
 
Mislaid:

Сделайте так, работает, DeinitReason глобальная переменная

 

Именно. Глобальная переменная Reason получает значение, но получает она его не в deinit(), а в init(), чтобы можно было видеть при запуске init() причину последней деинициализации и, исходя из значения, выполнять то или иное действие. Но не работает как положено.
 

Доброго дня.Возник новый вопрос.Помогите пожалуйста.Для знающих там  минутное дело,а вот для новичков сложновато.Гуглил ничего не помогает,но может кто сталкивался.

В журнале пишет

(2013.04.23 10:06:30 2013.04.01 00:00 xrust EURUSD,M1: 2 parameter for SetIndexBuffer function must be array).Как его починить?

https://forum.mql4.com/ru/55137#786974

 
palomnik:

Доброго дня.Возник новый вопрос.Помогите пожалуйста.Для знающих там  минутное дело,а вот для новичков сложновато.Гуглил ничего не помогает,но может кто сталкивался.

В журнале пишет

(2013.04.23 10:06:30 2013.04.01 00:00 xrust EURUSD,M1: 2 parameter for SetIndexBuffer function must be array).Как его починить?

https://forum.mql4.com/ru/55137#786974


Написано что в функции SetIndexBuffer второй параметр должен быть массивом. То есть не double znach1, а double znach1[]
 
Как запустить только, что отредактированный скрипт не перезапуская mt4?
Причина обращения: