Значения буфера iMa высчитываются неправильно - страница 2

 
Vladimir Karputov:

Прочтите внимательнее справку по ChartIndicatorAdd - особенно обратите внимание на это:

Возвращаемое значение

Возвращает true в случае успеха, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Ошибка 4114 означает, что график и добавляемый индикатор отличаются по символу или таймфрейму.


Похоже, что, да, нельзя так задавать входящие параметры таймфрейма и валютной пары:

input string symbol = "EURUSD";
input ENUM_TIMEFRAMES period = PERIOD_M15;

Вот эта строчка давала ошибку (используются глобальные переменные symbol и period):

handleMa = iMA(symbol, period, 10, 0, MODE_SMA, PRICE_CLOSE);

А если сделать, как в вашем примере:

handleMa = iMA(Symbol(), Period(), 10, 0, MODE_SMA, PRICE_CLOSE);

то все хорошо.


Надо учить матчасть :)

 
temptlon:

Похоже, что, да, нельзя так задавать входящие параметры таймфрейма и валютной пары:

Вот эта строчка давала ошибку (используются глобальные переменные symbol и period):

Не должно такого быть. Какую ошибку получаете: компиляции или времени выполнения?

 
Ihor Herasko:

Не должно такого быть. Какую ошибку получаете: компиляции или времени выполнения?

Да вот в том и дело, что ошибок никаких нет. Все работает. За исключением того, что iMa считается неправильно. Убрал эти глобальные объявления и все работает. Но как-то же задаются эти входящие параметры? Может быть они задаются только для того, что установить окружение графика. А во всех функциях уже надо использовать Symbol() ?

 
temptlon:

Да вот в том и дело, что ошибок никаких нет. Все работает. За исключением того, что iMa считается неправильно. Убрал эти глобальные объявления и все работает. Но как-то же задаются эти входящие параметры? Может быть они задаются только для того, что установить окружение графика. А во всех функциях уже надо использовать Symbol() ?

совсем не понятно зачем вы делаете ChartSetSymbolPeriod(), почти 100% что он вам вообще не нужен

если вы поставите там период отличающийся от периода на котором изначально запущен эксперт,

то гарантированно получите "неверное значение iMA" по хендлу iMA(PERIOD_CURRENT,....)

и к тому-же явно не весь код показан.

 
temptlon:

Да вот в том и дело, что ошибок никаких нет. Все работает. За исключением того, что iMa считается неправильно. Убрал эти глобальные объявления и все работает. Но как-то же задаются эти входящие параметры? Может быть они задаются только для того, что установить окружение графика. А во всех функциях уже надо использовать Symbol() ?

На каком символе и ТФ запускаете индикатор?

 
temptlon:

Да вот в том и дело, что ошибок никаких нет. Все работает. За исключением того, что iMa считается неправильно. Убрал эти глобальные объявления и все работает. Но как-то же задаются эти входящие параметры? Может быть они задаются только для того, что установить окружение графика. А во всех функциях уже надо использовать Symbol() ?

Не может быть. Если символ и таймфрем тот же, то будет один и тот же хэндл. Наверно запускаете свой код не на EUIRUSD M15.

 
temptlon #:


Тут где то косяк у Вас, что то упускаете.

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

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