[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 191

 
eddy:

неправильная цена 1.37197000.

правильная - 1.37197 или 1.3719, в зависимости от того какой дц.

чтоб задать количество цифр после запятой используется NormalizeDouble()


Добавил NormalizeDouble()  к цене в OrderSend(), сейчас ошибка не возникает, спасибо!
 
artmedia70:

Проще некуда:

Сами функции располагайте за пределами ф-ции start(), можете вообще в самом конце всего кода.



Спасибо!
 
eddy:

мне нужно на первом первом тике после запуска индикатора запомнить GetTickCount, а код ниже не работает - терминал зависает. может в init() вообще RefreshRates не работает..?

while(true){ if(RefreshRates()) { tik=GetTickCount(); break; } Sleep(1); }

у кого есть идеи, как реализовать? хочу именно в init, потомушт если сделать флаг в старте - он каждый раз проверяться будет
 
eddy:
у кого есть идеи, как реализовать? хочу именно в init, потомушт если сделать флаг в старте - он каждый раз проверяться будет
Глобальной переменной при объявлении присваивайте значение, в старте его сбрасываете. Тогда она будет иметь первоначальное значение только на первом тике, до присвоения, при всех последующих - присвоенное в старте. Тогда можно перенести в старт все действия, которые производятся однократно при пуске советника.
 
eddy:

подскажите плиз как программно загрузить индикатор на график?

тут есть функция bool ServiceLoadCustomIndicator(int hwndChart, ...); //hwndChart - Системный дескриптор окна графика, куда загружается индикатор.

но я не знаю как у знать дескриптор окна графика.

мне просто нужно на первом первом тике после запуска индикатора запомнить GetTickCount, а код ниже не работает - терминал зависает. может в init() вообще RefreshRates не работает..?

https://docs.mql4.com/ru/windows/WindowHandle
 
granit77:
Глобальной переменной при объявлении присваивайте значение, в старте его сбрасываете. Тогда она будет иметь первоначальное значение только на первом тике, до присвоения, при всех последующих - присвоенное в старте. Тогда можно перенести в старт все действия, которые производятся однократно при пуске советника.

мне не нужно этой переменной ничего присваивать в старте. только однократно, чтоб запомнить тик.

я пока решил сделать отдельный индикатор, чтоб запомнить тики в глобальной переменной, значение которой при запуске узнает основной индикатор

Zhunko, а что если есть несколько окон с одинаковым тф и инструментом?

 
eddy:

мне не нужно этой переменной ничего присваивать в старте. только однократно, чтоб запомнить тик.

я пока решил сделать отдельный индикатор, чтоб запомнить тики в глобальной переменной, значение которой при запуске узнает основной индикатор

Zhunko, а что если есть несколько окон с одинаковым тф и инструментом?

Проверял давно (Вы тоже можете это сделать) возвращает последнее или активное.
 
Zhunko: возвращает последнее или активное.

т.е. если не активно ни одно то возвращает последнее?

впрочем, не столь важно, думаю при добавлении всё равно всегда активно то, куда нужно добавить

 
eddy:

впрочем, не столь важно, думаю при добавлении всё равно всегда активно всегда то, куда нужно добавить

Да. Точно. У меня есть функция, которая возвращает дескрипторы всех одинаковых окон графиков в порядке Z. В библиотеку не включал её. Но она особо не поможет.
 
eddy:

мне не нужно этой переменной ничего присваивать в старте. только однократно, чтоб запомнить тик.

я пока решил сделать отдельный индикатор, чтоб запомнить тики в глобальной переменной, значение которой при запуске узнает основной индикатор

Я имел в виду вот что:
bool FirstStart=true;

int start(){

    if(FirstStart){
      if(RefreshRates()) tik=GetTickCount();
      FirstStart=false;
    } 
}
Причина обращения: