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

 
Alexey Viktorov #:

Кто сказал что без тика?

Я ж пишу - не понимаю, так как проблему вижу в запаздывании тика на верхнем ТФ относительно текущего ТФ, на котором размещён индикатор.

Просто пока не понимаю суть обхода этой проблемы.

 
Aleksey Vyazmikin #:

Я ж пишу - не понимаю, так как проблему вижу в запаздывании тика на верхнем ТФ относительно текущего ТФ, на котором размещён индикатор.

Просто пока не понимаю суть обхода этой проблемы.

А нет проблемы. Если есть тик по инструменту, то он есть независимо от периода. Тик по инструменту и всё. А наступил-ли новый бар на интересующем нас периоде это совсем другое. Вот смотрите на снимках предыдущего сообщения. В индикаторе копируются ДВА последних тика и в комментарий отображается время этих двух тиков. Смотрите внимательно…

 
Aleksey Vyazmikin #:

Не знаю, как понимать Ваше утверждение.

Я написал выше, как было бы правильно и полезно для подписчика.

Понимайте непосредственно так, как оно написано.

Нет, Вы пишите как было бы полезно для поставщика.
 
Sergey Gridnev #:
Понимайте непосредственно так, как оно написано.

Нет, Вы пишите как было бы полезно для поставщика.

Обоснуйте.

 
Aleksey Vyazmikin #:

Обоснуйте.

В момент, когда подписчик подпишется на сигнал, могут быть открыты позиции и эквити может находиться на максимуме. Поэтому и просадки надо считать по эквити.
 
Vasiliy Pushkaryov #:

Опять картинки и без кода. Кроме вас никому не понятно, что вы там делаете.

Вы столько времени потратили на обсуждение со мной этой темы, сколько может занять время в тестовых индикаторах на 5-10 строк логики, чтобы привести их в порядок? Или выложить так. Обещаю, стилистику кода и выход за пределы массива не обсуждать и не комментировать.

Василий, сделайте без циклов, без переворота массивов, запись и получение только одного значения. Хотите ещё одну картинку?

Индикатор на М5 с проверкой нового бара М30.

2024.06.21 19:30:01.407 Test_MTF.ex5::test-R (EURUSD,M5)         ***** Test-R 2024.06.21 19:30:00
2024.06.21 19:30:01.407 Test_MTF (EURUSD,M5)     ***** 2024.06.21 19:30:00
2024.06.21 20:00:01.960 Test_MTF.ex5::test-R (EURUSD,M5)         ***** Test-R 2024.06.21 20:00:00
2024.06.21 20:00:01.960 Test_MTF (EURUSD,M5)     ***** 2024.06.21 20:00:00
2024.06.21 20:30:00.970 Test_MTF.ex5::test-R (EURUSD,M5)         ***** Test-R 2024.06.21 20:30:00
2024.06.21 20:30:00.970 Test_MTF (EURUSD,M5)     ***** 2024.06.21 20:30:00
2024.06.21 21:00:01.379 Test_MTF.ex5::test-R (EURUSD,M5)         ***** Test-R 2024.06.21 21:00:00
2024.06.21 21:00:01.379 Test_MTF (EURUSD,M5)     ***** 2024.06.21 21:00:00
2024.06.21 21:30:01.035 Test_MTF.ex5::test-R (EURUSD,M5)         ***** Test-R 2024.06.21 21:30:00
2024.06.21 21:30:01.035 Test_MTF (EURUSD,M5)     ***** 2024.06.21 21:30:00
2024.06.21 22:00:01.544 Test_MTF.ex5::test-R (EURUSD,M5)         ***** Test-R 2024.06.21 22:00:00
2024.06.21 22:00:01.544 Test_MTF (EURUSD,M5)     ***** 2024.06.21 22:00:00

Я смотрю вы нисколько не меняете свой код. Нисколько не хотите вникнуть в логику. Не хотите, не надо.

Кстати обнаружилась проблема в том, что нежданно негаданно выскакивает ошибка 4401 на строке

datetime currTime = iTime(_Symbol, inpTF, 0);
 
Alexey Viktorov #:

Эксперименты показали, что нет разницы на каком ТФ будет работать индикатор, главное чтобы контроль нового бара был одинаковым на обоих индикаторах.

Вот запустил на М15 при контроле нового бара М2

Вот на минутке с контролем М5 

Печать идёт, нечётная строка это из ресурсного индикатора, а чётная строка из рабочего, значение получает 

Что значит с контролем М5? Вы на минутке сделали обработку нового бара с жесткой привязкой PERIOD_M5 или как?

2024.06.21 17:30:00.527 Test_MTF.ex5::test-R (EURUSD,M1)         ***** Test-R 2024.06.21 17:30:00
2024.06.21 17:30:00.527 Test_MTF (EURUSD,M1)     ***** 2024.06.21 17:30:00
2024.06.21 17:35:00.643 Test_MTF.ex5::test-R (EURUSD,M1)         ***** Test-R 2024.06.21 17:35:00
2024.06.21 17:35:00.643 Test_MTF (EURUSD,M1)     ***** 2024.06.21 17:35:00

Почему у вас в этом логе во всех строках везде EURUSD_M1?

Что у вас в iCustom()? 

Почему у меня вызов ресурсного индикатора со старшего ТФ показывает в логах старший ТФ, а у вас нет?

Мало-мальский код давно бы закончил нашу дискуссию.

А у вас опять картинки и без кода. Кроме вас никому не понятно, что вы там делаете.

Вы столько времени потратили на обсуждение со мной этой темы, сколько может занять время в тестовых индикаторах на 5-10 строк логики, чтобы привести их в порядок? Или выложить так. Обещаю, стилистику кода и выход за пределы массива не обсуждать и не комментировать.

 
Vasiliy Pushkaryov #:

Что значит с контролем М5? Вы на минутке сделали обработку нового бара с жесткой привязкой PERIOD_M5 или как?

ДА. Именно так.

Почему у вас в этом логе во всех строках везде EURUSD_M1?

Потому, что индикатор установлен на графике М1

Что у вас в iCustom()? 

input ENUM_TIMEFRAMES   inpTF    = PERIOD_M2;           // TimeFrame
datetime lastTime;
MqlTick mqlTick[];
int handleInd;
/*************Custom indicator initialization function***************/
int OnInit()
 {
  handleInd = iCustom(_Symbol, PERIOD_CURRENT, "::test-R.ex5", inpTF);
  return(INIT_SUCCEEDED);
 }/*****************************************************************/

Не знаю на сколько это правильно. Если в других вариантах будут проблемы можно будет экспериментировать.

 
Alexey Viktorov #:

ДА. Именно так.

Потому, что индикатор установлен на графике М1

Не знаю на сколько это правильно. Если в других вариантах будут проблемы можно будет экспериментировать.

Наконец-то.

Но это не то. У вас и вызывающий и ресурсный индикатор работают на одном ТФ.

Вот из справки:

Мне нужны данные буфера индикатора старшего ТФ. Если я запускаюсь с М1 и передал в iCustom(М2), то мне нужны в буфере данные М2. Что в вашем случае вернет CopyBuffer(PERIOD_CURRENT), если в ресурсном индикаторе происходит работа с массивами open[1], close[2], high[150] и куча производных вычислений от них?

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

 
Vasiliy Pushkaryov #:

Наконец-то.

Но это не то. У вас и вызывающий и ресурсный индикатор работают на одном ТФ.

Вот из справки:

Мне нужны данные буфера индикатора старшего ТФ. Если я запускаюсь с М1 и передал в iCustom(М2), то мне нужны в буфере данные М2. Что в вашем случае вернет CopyBuffer(PERIOD_CURRENT), если в ресурсном индикаторе происходит работа с массивами open[1], close[2], high[150] и куча производных вычислений от них?

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

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

Поймите наконец-то, что тик по ТФ не бывает. Только тик по инструменту. В понедельник я поменяю строку 

  handleInd = iCustom(_Symbol, PERIOD_CURRENT, "::test-R.ex5", inpTF);

на 

  handleInd = iCustom(_Symbol, inpTF, "::test-R.ex5", inpTF);

Вы можете считать и ошибки, и некомпетентность разработчиков, и всё что угодно, но другого не будет.