Как обновить индикаторы для Build 600+? - страница 4

 
qjol:
Вы шутите, конечно, все работает


Да, теперь все работает.

Я использовал последнюю версию со всеми 10 параметрами, и теперь все работает.

Спасибо.

BTW, я все еще не понимаю, почему более старая версия с 7 параметрами не работала!

Как на изображении выше, этот индикатор имеет 8 внешних параметров. Здесь 'TimeFrame' был определен как '0' перед строкой "xpMA".

Затем я объявил остальные 7 параметров, как показано ниже:

double  signal = iCustom(NULL,0,"xpMA",MA_Period,MA_Type,MA_Applied ,T3MA_VolumeFactor,JMA_Phase,Step_Period,DebugMode,3,0); 

Так где я допустил ошибку, пожалуйста, укажите.

С уважением

 
deysmacro:

Он должен учиться на распространенных ошибках.

Спасибо за поддержку и понимание :)
 
Arav007:


BTW, я все еще не понимаю, почему более старая версия с 7 параметрами не работала!

Как показано на рисунке выше, этот индикатор имеет 8 внешних параметров. Здесь 'TimeFrame' был определен как '0' перед строкой "xpMA".

Затем я объявил остальные 7 параметров, как показано ниже:

Так где я допустил ошибку, пожалуйста, укажите.


Позвольте мне сказать еще раз, используя iCustom , вы должны передавать параметры, соответствующие порядку объявления.


Передаваемые параметры и их порядок должны соответствовать порядку объявления и типу внешних переменных пользовательского индикатора. Если значения входных параметров не указаны, будут использованы значения по умолчанию.

Вы НЕ МОЖЕТЕ пропустить параметр

например, если пользовательский индикатор имеет 5 параметров, вы можете использовать его следующим образом:

double x = iCustom (Symbol(), Period(), "Name", Param1, Param2, Param3, mode, shift);

но вы не можете использовать его таким образом:

double x = iCustom (Symbol(), Period(), "Name", Param2, Param3, Param4, mode, shift);
 
qjol:


повторюсь, используя iCustom , вы должны передавать параметры, соответствующие порядку объявления

вы НЕ можете пропустить какой-либо параметр

например, если пользовательский индикатор имеет 5 параметров, вы можете использовать его следующим образом:

Но вы не можете использовать его таким образом:



Вот что я делаю неправильно и не могу определить.

Хорошо, вот как я назначал параметры:

Param1=MA_Period

Param2=MA_Type

Param3=MA_Applied

Param4=T3MA_VolumeFactor

Param5=JMA_Phase

Param6=Step_Period

Параметр7=Режим отладки

Теперь какой из них неверен?

С уважением,

 

вы пропустили первый "TimeFrame".



 
qjol:


вы пропустили первый параметр "TimeFrame".




Ооо, тогда это тот самый случай.

Если я пропущу любой из внешних параметров, то он не будет работать.

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

iCustom(Null, 0, Param1,...)

Поэтому я подумал, что нет необходимости определять его снова как 'TimeFrame'.

Спасибо за исправление.

 
Arav007:


Ооо, тогда так и есть.

Если я пропущу какой-либо из внешних параметров, он не будет работать.

Нет, вы можете пропустить, но вы не можете пропустить, т.е. если есть 5 параметров и вы оставляете последние 2, то нет проблем.

но вы не можете пропустить 1 и использовать 2 3 4 5

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

iCustom(Null, 0, Param1,...)

Да, но терминал не знает, что содержит этот параметр, он может содержать что угодно (не обязательно таймфрейм)

Вот почему я подумал, что нет необходимости определять его снова как 'TimeFrame'.

Не думай, а действуй! ;-)

Спасибо за исправление.