Мимо!!!! Хендл AD13_H создаётся для текущего символа, а нужно для другого. Я подготовил новые файлы, где использую стандартный АД. Проблема то не в том что он вызывается неправильно, проблема что он вызывается неправильно в определённый момент, когда происходит событие от третьего индикатора. Вот снова выкладываю индикаторы, дабы не путать. В них, можно исправить ошибку?
Буфер первого рпикрепленного индикатора выдает значения -1 0 1. Вернее всегда 0, а вот -1 и 1 на опредлённых барах. И когда приходит значение отличное от нуля, тогда происходит запрос на индикатор АД с других инструментов. Повторюсь. При компиляции в принте одни значения, при тестировании в принт поступают другие значения АД. Даже если учесть что начало расчёта АД разное при компиляции и теста, то разница между дувумя барами должна быть одинаковой и не зависить от начала расчёта АД.
Расчитываются три переменные v0,v1,v2. Заметил что v1 единственная которая расчитывается и при компиле и в тестере одинакомо. Думаю это связанно с месторасполождением функции в коде. Она стоит самая первая. А вот остальные считаются с ошибкой.
Итак первый индюк "Секвента" формирует сигнал или момент.
Когда сигнал поступил в индикатор Si_FORTS этот индикатор запрашивает данные АД с других символов.
Причём без сигналов от "Секвенты" всё вроде работает правильно.....
Мимо!!!! Хендл AD13_H создаётся для текущего символа, а нужно для другого. Я подготовил новые файлы, где использую стандартный АД. Проблема то не в том что он вызывается неправильно, проблема что он вызывается неправильно в определённый момент, когда происходит событие от третьего индикатора. Вот снова выкладываю индикаторы, дабы не путать. В них, можно исправить ошибку?
Буфер первого рпикрепленного индикатора выдает значения -1 0 1. Вернее всегда 0, а вот -1 и 1 на опредлённых барах. И когда приходит значение отличное от нуля, тогда происходит запрос на индикатор АД с других инструментов. Повторюсь. При компиляции в принте одни значения, при тестировании в принт поступают другие значения АД. Даже если учесть что начало расчёта АД разное при компиляции и теста, то разница между дувумя барами должна быть одинаковой и не зависить от начала расчёта АД.
Расчитываются три переменные v0,v1,v2. Заметил что v1 единственная которая расчитывается и при компиле и в тестере одинакомо. Думаю это связанно с месторасполождением функции в коде. Она стоит самая первая. А вот остальные считаются с ошибкой.
Итак первый индюк "Секвента" формирует сигнал или момент.
Когда сигнал поступил в индикатор Si_FORTS этот индикатор запрашивает данные АД с других символов.
Причём без сигналов от "Секвенты" всё вроде работает правильно.....
А какая проблема заменить _Symbol на "Si-12.17"
Я вчера проверял и вот что получилось при работе индикатора в отладчике.
int handle;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mapping
handle = iAD("Si-12.17", PERIOD_M1, VOLUME_REAL);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---double ad[];
datetime start_time = D'2017.12.08 19:30', stop_time = D'2017.12.08 19:00';
int copy = CopyBuffer(handle, 0, start_time, stop_time, ad);
int ad0 = (int)round(ad[0]), ad1 = (int)round(ad[copy-1]);
Comment(ad0, "\n"
, ad1, "\n"
, ad0-ad1);
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+
Здесь видно что тест проходит на символе EURUSD и в комментарии графика выведены значения AD символа "Si-12.17"
Это показания индикатора на графике "Si-12.17" по правой вертикальной линии, 06.12.2017
А здесь в окне данных показание индикатор на "Si-12.17" по левой линии 05.12.2017
Значения индикатора полностью совпадают.
зы. Извиняюсь, я после того как сделал скрины ещё экспериментировал на минутках и поэтому в коде время не совпадает с временем на скринах. Править не имеет смысла.
Я вчера проверял и вот что получилось при работе индикатора в отладчике.
Здесь видно что тест проходит на символе EURUSD и в комментарии графика выведены значения AD символа "Si-12.17"
Это показания индикатора на графике "Si-12.17" по правой вертикальной линии, 06.12.2017
А здесь в окне данных показание индикатор на "Si-12.17" по левой линии 05.12.2017
Значения индикатора полностью совпадают.
зы. Извиняюсь, я после того как сделал скрины ещё экспериментировал на минутках и поэтому в коде время не совпадает с временем на скринах. Править не имеет смысла.
В вашем примере не используется сигнальный индикатор. Попробуйте скачать последние выложенные мною файли и прогнать у себя. Можно поменять инструменты на форовские, главное чтоб они отличались от текущих...
1. Пришел тик по Си (сформировался бар 10:01 - распринтовался - значение 10050);
2. Пришел снова тик по Си (снова за бар 10:01 - без принта - значение 10047);
3. Пришел тик по РТС (сформировался бар 10:01, запрос данных с Си, значение 10047);
В итоге имеет разные значения.
Немного модифицировал OnInit() зависимого (добавил входной параметр используемого инструмента):
intOnInit()
{
//---if( inpSymbol == _Symbol )
{
Print( __FUNCTION__,": ОШИБКА! Символы не должны совпадать!" );
return( INIT_PARAMETERS_INCORRECT );
}
//---
AD13_H=iCustom(inpSymbol,_Period,"AD_1",VOLUME_REAL);
if(AD13_H==INVALID_HANDLE)
{
PrintFormat("Failed to create handle of the MA_handle indicator for the symbol %s/%s, error code %d",
Symbol(),EnumToString(Period()),GetLastError());
return(INIT_FAILED);
}
//---return(INIT_SUCCEEDED);
}
Лог стал таким:
2017.12.1020:23:40.6812017.12.0710:09:00 ЗАВИСИМЫЙ: -986821.634522017.12.1020:23:40.6852017.12.0710:09:00 AD_1 value = -986821.634522017.12.1020:23:41.3382017.12.0710:10:00 AD_1 value = -985365.348812017.12.1020:23:41.3402017.12.0710:10:00 ЗАВИСИМЫЙ: -985354.348812017.12.1020:23:42.0462017.12.0710:11:00 AD_1 value = -988738.828812017.12.1020:23:42.0482017.12.0710:11:00 ЗАВИСИМЫЙ: -988749.828812017.12.1020:23:42.7342017.12.0710:12:00 ЗАВИСИМЫЙ: -990243.136502017.12.1020:23:42.7382017.12.0710:12:00 AD_1 value = -990243.136502017.12.1020:25:05.9122017.12.0710:13:00 AD_1 value = -992969.536502017.12.1020:25:05.9172017.12.0710:13:00 ЗАВИСИМЫЙ: -992969.536502017.12.1020:25:06.8892017.12.0710:14:00 AD_1 value = -994720.830622017.12.1020:25:06.8912017.12.0710:14:00 ЗАВИСИМЫЙ: -994720.830622017.12.1020:25:12.0992017.12.0710:15:00 AD_1 value = -1002815.941732017.12.1020:25:12.1012017.12.0710:15:00 ЗАВИСИМЫЙ: -1002815.941732017.12.1020:25:13.2002017.12.0710:16:00 AD_1 value = -997768.683662017.12.1020:25:13.2022017.12.0710:16:00 ЗАВИСИМЫЙ: -997768.68366
Как видите, по разным символам свечи формируются не в один момент времени. Иногда свеча формируется раньше по одному символу, иногда - по другому. Соответственно и значения могут различаться, а могут и совпадать (почему, написал выше).
1. Пришел тик по Си (сформировался бар 10:01 - распринтовался - значение 10050);
2. Пришел снова тик по Си (снова за бар 10:01 - без принта - значение 10047);
3. Пришел тик по РТС (сформировался бар 10:01, запрос данных с Си, значение 10047);
В итоге имеет разные значения.
Немного модифицировал OnInit() зависимого (добавил входной параметр используемого инструмента):
Лог стал таким:
Как видите, по разным символам свечи формируются не в один момент времени. Иногда свеча формируется раньше по одному символу, иногда - по другому. Соответственно и значения могут различаться, а могут и совпадать (почему, написал выше).
Хм.... Ещё раз... У вас в ваших индикаторах всё работает потому как вы не пользуетесь сигнальным. Посмотрите пожалуйста те индикаторы что я выложил недавно. Их можно исправит????
В реальной торговле ваша ситуация понятна. При тестировании все символы подгружены это же история. НО не работает... :-(
Хм.... Ещё раз... У вас в ваших индикаторах всё работает потому как вы не пользуетесь сигнальным. Посмотрите пожалуйста те индикаторы что я выложил недавно. Их можно исправит????
В реальной торговле ваша ситуация понятна. При тестировании все символы подгружены это же история. НО не работает... :-(
Изначально вопрос стоял так:
Ребята, ктонить может объяснить внятно, почему, когда вызываю индикатор из индикатора, получаю совсем другое значени... Не то что показывает сам индикатор. Я понять не могу, там кода всего три строчки и он не работает, Ктонить может объяснить почему????
В принты выводятся значения первого бара, но они отличаются. Хотя индекс бара одинаковый. Это вообще как такое может быть???
Принт стоит в Основном и вызываемом индикатора. НО как видно на картинке в одном и томже индикатое с одинаковым индексом значения абсалютно разные.
Вызывал индикатор из индикатора. Вам не понравилось. Теперь вызов индикатора должен быть с символа другого индикатора. Хорошо, сделал. Индексы баров одинаковые, значения одинаковые. Теперь Вы говорите про какой-то сигнальный индикатор...?
Разбирать Ваши индикаторы у меня нет никакого желания. И Вам я рекомендую убрать все лишнее, и только потом искать ошибки. Удачи.
Alexey Kozitsyn: По поводу этого. Тики (в режиме тестирования по реальным тикам) появляются в соответствии с тиками реального времени (с точностью до миллисекунд).
То что Вы вызвали индикатор от индикатора ничего нового. У меня тоже всё выводит правильно и одинакого, какой смысл было это повторять?? Я привёл конкретный пример с конкретными индикаторами которые не работают, хотя по логике всё записано верно отсюда и возник вопрос, как такое может быть???? Может сигнальный индюк что косячит??? Однако сами сигналы появляются в нужном месте и не скачут, с ними проблем нет.. а вот дальше....
Спасибо! Попробую рассмотреть чуть позже Ваш вариант...
Пожалуйста. Что б понять окончательно, надо будет дождаться понедельника запустить индикатор на чарт... и через сутки сравнить данные с тестером.
Зависимый от верхнего:
Результат (правда, в тестере, режим: каждый тик на основе реальных тиков):
Код первого индикатора поместить в файл AD_1.Мимо!!!! Хендл AD13_H создаётся для текущего символа, а нужно для другого. Я подготовил новые файлы, где использую стандартный АД. Проблема то не в том что он вызывается неправильно, проблема что он вызывается неправильно в определённый момент, когда происходит событие от третьего индикатора. Вот снова выкладываю индикаторы, дабы не путать. В них, можно исправить ошибку?
Буфер первого рпикрепленного индикатора выдает значения -1 0 1. Вернее всегда 0, а вот -1 и 1 на опредлённых барах. И когда приходит значение отличное от нуля, тогда происходит запрос на индикатор АД с других инструментов. Повторюсь. При компиляции в принте одни значения, при тестировании в принт поступают другие значения АД. Даже если учесть что начало расчёта АД разное при компиляции и теста, то разница между дувумя барами должна быть одинаковой и не зависить от начала расчёта АД.
Расчитываются три переменные v0,v1,v2. Заметил что v1 единственная которая расчитывается и при компиле и в тестере одинакомо. Думаю это связанно с месторасполождением функции в коде. Она стоит самая первая. А вот остальные считаются с ошибкой.
Итак первый индюк "Секвента" формирует сигнал или момент.
Когда сигнал поступил в индикатор Si_FORTS этот индикатор запрашивает данные АД с других символов.
Причём без сигналов от "Секвенты" всё вроде работает правильно.....
Мимо!!!! Хендл AD13_H создаётся для текущего символа, а нужно для другого. Я подготовил новые файлы, где использую стандартный АД. Проблема то не в том что он вызывается неправильно, проблема что он вызывается неправильно в определённый момент, когда происходит событие от третьего индикатора. Вот снова выкладываю индикаторы, дабы не путать. В них, можно исправить ошибку?
Буфер первого рпикрепленного индикатора выдает значения -1 0 1. Вернее всегда 0, а вот -1 и 1 на опредлённых барах. И когда приходит значение отличное от нуля, тогда происходит запрос на индикатор АД с других инструментов. Повторюсь. При компиляции в принте одни значения, при тестировании в принт поступают другие значения АД. Даже если учесть что начало расчёта АД разное при компиляции и теста, то разница между дувумя барами должна быть одинаковой и не зависить от начала расчёта АД.
Расчитываются три переменные v0,v1,v2. Заметил что v1 единственная которая расчитывается и при компиле и в тестере одинакомо. Думаю это связанно с месторасполождением функции в коде. Она стоит самая первая. А вот остальные считаются с ошибкой.
Итак первый индюк "Секвента" формирует сигнал или момент.
Когда сигнал поступил в индикатор Si_FORTS этот индикатор запрашивает данные АД с других символов.
Причём без сигналов от "Секвенты" всё вроде работает правильно.....
А какая проблема заменить _Symbol на "Si-12.17"
Я вчера проверял и вот что получилось при работе индикатора в отладчике.
Здесь видно что тест проходит на символе EURUSD и в комментарии графика выведены значения AD символа "Si-12.17"
Это показания индикатора на графике "Si-12.17" по правой вертикальной линии, 06.12.2017
А здесь в окне данных показание индикатор на "Si-12.17" по левой линии 05.12.2017
Значения индикатора полностью совпадают.
зы. Извиняюсь, я после того как сделал скрины ещё экспериментировал на минутках и поэтому в коде время не совпадает с временем на скринах. Править не имеет смысла.А какая проблема заменить _Symbol на "Si-12.17"
Я вчера проверял и вот что получилось при работе индикатора в отладчике.
Здесь видно что тест проходит на символе EURUSD и в комментарии графика выведены значения AD символа "Si-12.17"
Это показания индикатора на графике "Si-12.17" по правой вертикальной линии, 06.12.2017
А здесь в окне данных показание индикатор на "Si-12.17" по левой линии 05.12.2017
Значения индикатора полностью совпадают.
зы. Извиняюсь, я после того как сделал скрины ещё экспериментировал на минутках и поэтому в коде время не совпадает с временем на скринах. Править не имеет смысла.В вашем примере не используется сигнальный индикатор. Попробуйте скачать последние выложенные мною файли и прогнать у себя. Можно поменять инструменты на форовские, главное чтоб они отличались от текущих...
Мимо!!!!
Ну... мимо, дак мимо.
Просто учитывайте, что может быть такая ситуация:
1. Пришел тик по Си (сформировался бар 10:01 - распринтовался - значение 10050);
2. Пришел снова тик по Си (снова за бар 10:01 - без принта - значение 10047);
3. Пришел тик по РТС (сформировался бар 10:01, запрос данных с Си, значение 10047);
В итоге имеет разные значения.
Немного модифицировал OnInit() зависимого (добавил входной параметр используемого инструмента):
Лог стал таким:
Как видите, по разным символам свечи формируются не в один момент времени. Иногда свеча формируется раньше по одному символу, иногда - по другому. Соответственно и значения могут различаться, а могут и совпадать (почему, написал выше).
Ну... мимо, дак мимо.
Просто учитывайте, что может быть такая ситуация:
1. Пришел тик по Си (сформировался бар 10:01 - распринтовался - значение 10050);
2. Пришел снова тик по Си (снова за бар 10:01 - без принта - значение 10047);
3. Пришел тик по РТС (сформировался бар 10:01, запрос данных с Си, значение 10047);
В итоге имеет разные значения.
Немного модифицировал OnInit() зависимого (добавил входной параметр используемого инструмента):
Лог стал таким:
Как видите, по разным символам свечи формируются не в один момент времени. Иногда свеча формируется раньше по одному символу, иногда - по другому. Соответственно и значения могут различаться, а могут и совпадать (почему, написал выше).
Хм.... Ещё раз... У вас в ваших индикаторах всё работает потому как вы не пользуетесь сигнальным. Посмотрите пожалуйста те индикаторы что я выложил недавно. Их можно исправит????
В реальной торговле ваша ситуация понятна. При тестировании все символы подгружены это же история. НО не работает... :-(
Хм.... Ещё раз... У вас в ваших индикаторах всё работает потому как вы не пользуетесь сигнальным. Посмотрите пожалуйста те индикаторы что я выложил недавно. Их можно исправит????
В реальной торговле ваша ситуация понятна. При тестировании все символы подгружены это же история. НО не работает... :-(
Изначально вопрос стоял так:
Ребята, ктонить может объяснить внятно, почему, когда вызываю индикатор из индикатора, получаю совсем другое значени... Не то что показывает сам индикатор. Я понять не могу, там кода всего три строчки и он не работает, Ктонить может объяснить почему????
В принты выводятся значения первого бара, но они отличаются. Хотя индекс бара одинаковый. Это вообще как такое может быть???
Принт стоит в Основном и вызываемом индикатора. НО как видно на картинке в одном и томже индикатое с одинаковым индексом значения абсалютно разные.
Вызывал индикатор из индикатора. Вам не понравилось. Теперь вызов индикатора должен быть с символа другого индикатора. Хорошо, сделал. Индексы баров одинаковые, значения одинаковые. Теперь Вы говорите про какой-то сигнальный индикатор...?
Разбирать Ваши индикаторы у меня нет никакого желания. И Вам я рекомендую убрать все лишнее, и только потом искать ошибки. Удачи.
При тестировании все символы подгружены это же история. НО не работает... :-(
По поводу этого. Тики (в режиме тестирования по реальным тикам) появляются в соответствии с тиками реального времени (с точностью до миллисекунд).
То что Вы вызвали индикатор от индикатора ничего нового. У меня тоже всё выводит правильно и одинакого, какой смысл было это повторять?? Я привёл конкретный пример с конкретными индикаторами которые не работают, хотя по логике всё записано верно отсюда и возник вопрос, как такое может быть???? Может сигнальный индюк что косячит??? Однако сами сигналы появляются в нужном месте и не скачут, с ними проблем нет.. а вот дальше....