Ошибки, баги, вопросы - страница 2996

 
Artyom Trishkin:

То было давно. Проблема давно решена. Нужно не менее раза в две минуты обращаться к данным неродного таймфрейма/символа. В главном цикле, если данных с запрашиваемого таймфрейма ещё нет, нужно выходить из цикла - просто возвращать ноль, чтобы ждать следующего тика, и при этом индикатор знал, что исторические данные ещё не просчитаны.

Так они просчитываются, просто значения присылаются неверные. Только на минутках правильно работает.

 
Francuz:

Так они просчитываются, просто значения присылаются неверные. Только на минутках правильно работает.

Направления индексации массивов совпадают?

 
Artyom Trishkin:

Направления индексации массивов совпадают?

Копирую одно значение. Вы думаете если перевернуть массив что-то изменится? Но на всякий случай проверил и убедился что от переворачивания нумерации массива единственное значение не поменялось. :)

 
Francuz:

Копирую одно значение. Вы думаете если перевернуть массив что-то изменится? Но на всякий случай проверил и убедился что от переворачивания нумерации массива единственное значение не поменялось. :)

Ну я ж не знаю что, как и куда вы там копируете.

 
Artyom Trishkin:

Ну я ж не знаю что, как и куда вы там копируете.

0_о

В приведённом коде индикатора всё было показано:

::CopyBuffer(handle, 0, a, 1, Buffer);
 
Francuz:

Вы не поняли сути вопроса. Код и должен сработать только один раз. Его задача наглядно показать что вызываемый индикатор не работает. Проблема в том что в любых вариациях написания вызываемый индикатор не будет работать, если у него (и вызывающего) отличается TimeFrame от минутного. И как я выяснил это косяк MetaTrader`а, который можно обойти только костылями. И эта проблема уже довольно давняя. С подробностями можно ознакомится "Не получается брать данные индикатора со старшего ТФ 123".

Выделенное, это о чём? Ведь в коде задан текущий период

   handle = iCustom(_Symbol, PERIOD_CURRENT, "Examples\\ATR.ex5", 14);

Вы хоть что-то показали-бы, с какими параметрами запустили, что получили и что ожидали получить. И не плохо было-бы увидеть что печатает эта строка

   ::Print(__FUNCTION__ + "| PERIOD_CURRENT = ", EnumToString(_Period));
 
Alexey Viktorov:

Выделенное, это о чём? Ведь в коде задан текущий период

Вы хоть что-то показали-бы, с какими параметрами запустили, что получили и что ожидали получить. И не плохо было-бы увидеть что печатает эта строка

1. Запустить приведённый код на TimeFrame отличного от минуты.

2. Запустить ATR на таком же Symbol и таком же TimeFrame.

3. Сравнить получаемые значения ATR через код и напрямую из индикатора.

4. Убедиться что значения не совпадают.

Пример

BS - это полученное значение ATR.

 
Francuz:

1. Запустить приведённый код на TimeFrame отличного от минуты.

2. Запустить ATR на таком же Symbol и таком же TimeFrame.

3. Сравнить получаемые значения ATR через код и напрямую из индикатора.

4. Убедиться что значения не совпадают.

Вы пробовали вставить тот код, который я выделил жёлтым цветом и запустить индикатор?

 
Francuz:

1. Запустить приведённый код на TimeFrame отличного от минуты.

2. Запустить ATR на таком же Symbol и таком же TimeFrame.

3. Сравнить получаемые значения ATR через код и напрямую из индикатора.

4. Убедиться что значения не совпадают.

BS - это полученное значение ATR.

Может лыжи плохие?


и ещё RTS-6.21


 
Nikolai Semko:
Вы пробовали вставить тот код, который я выделил жёлтым цветом и запустить индикатор?

Да, пробовал. Результат не изменился.

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