Как кодировать? - страница 337

 
at120:
Привет Младен!

Я думаю, что вызов моего iCustom правильный, потому что в тестовом и обычном режиме (экспорт данных или использование в качестве инди)

он работает нормально до сих пор. Я думаю, что проблема в том, что вы упомянули значение double/array.

Когда я сейчас использую

double mom1[];

mom1 = iCustom(NULL,0, "myIndi",0,i);

и чем -> mom(mom1,Bars,20,i);

-> "mom" - параметр conversation not allowed

Как мне правильно это написать?

Большое спасибо и до свидания, AT

Попробуйте вот так:

mom(mom1,Bars,20,i);[/PHP]

Also, change the mom function to be like this :

[PHP]double Mom(double& series[], int period, int totcount, int index) { if (totcount<1 || period<1) return (EMPTY_VALUE); if (indextotcount-1) return (EMPTY_VALUE); return (series-series); }
 

Привет, Младен!

Спасибо за помощь!

Моя проблема в том, что мне нужен "const", потому что он нужен другим частям программы...

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

чтобы mom1 работала с подфункцией?

Большое спасибо и до свидания, AT

 
at120:
Привет, Младен!

Спасибо за помощь!

Моя проблема в том, что мне нужен "const", потому что он нужен другим частям программы...

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

чтобы функция mom1 работала с подфункцией?

Большое спасибо и до свидания, AT

Вы можете использовать функцию mom как есть (и все остальное).

Просто замените mom(mom1,Bars,20,i); на mom(mom1,Bars,20,i);

 

затем я получаю ошибку:

-> "мама1" - параметр conversation not allowed

блин, это сложно... есть еще идеи?

Спасибо и пока, AT

 
at120:
затем я получаю ошибку:

-> "мама1" - параметр разговор не разрешен

блин, это сложно... есть еще идеи?

Спасибо и пока, AT

Я не получаю эту ошибку

Смотрите пример:

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

double mom = Mom(buffer,10,50,0);

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

Компилируется без ошибок

 

Привет, Младен!

Может быть, это из-за функции for {}? (чтобы получить Bars?) или из-за...

другой момент: mom1 - это пользовательский инди... mom1 = iCustom(NULL,0, "myIndi",0,i);

который я вызываю здесь: mom(mom1,Bars,20,i);

Спасибо за помощь!!!

Пока, AT

 
at120:
Привет, Младен!

Может быть, это из-за функции for {}? (чтобы получить Bars?) или из-за...

другой момент: mom1 - это пользовательский инди... mom1 = iCustom(NULL,0, "myIndi",0,i);

который я вызываю здесь: mom(mom1,Bars,20,i);

Спасибо за помощь!!!

Пока, AT

Нет, это не может быть причиной.

Смотрите этот пример:

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

buffer = iCustom(NULL,0,"custom name",0,i);

double mom = Mom(buffer,10,50,i);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

Также нет ошибок компилятора

 

Привет, Младен!

Возможно, потому что мой код выглядит примерно так, и есть "ошибка"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

double mom1;

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Спасибо и до свидания, AT

 
at120:
Привет, Младен!

Может быть, потому что мой код выглядит примерно так, и есть "ошибка"... :-/

#property indicator_chart_window

double buffer[];

int init() { SetIndexBuffer(0,buffer); return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

double mom1;

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);
Спасибо и до свидания, AT

at120

В вашем коде mom1 определяется как double (простая двойная переменная), а не как массив или буфер.

Определите ее так же, как определяется "буфер", добавьте ее в секции init к буферам, и все будет в порядке (не забудьте соответствующим образом настроить количество буферов ).

 

Привет, Мальден!

Спасибо за поддержку! ;-)

Даже, когда я напишу код, как ты мне сказал:

(я так думаю...)

#property indicator_chart_window

double buffer[];

double mom1[];

int init() { SetIndexBuffer(0,buffer); SetIndexBuffer(1,mom1);return(0); }

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(int i = limit; i>=0; i--)

{

mom1 = iCustom(NULL,0,"custom name",0,i);

buffer = (

Mom(mom1,10,Bars,i);

//doesn't work - no value in indi

// Mom(mom1,10,Bars,i); //error: parameter conversation not allowed

// mom1 // this works

);

}

return(0);

}

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

);

Итак, когда я использую "Первую" версию, я не получаю никакого значения...

Когда я использую вторую версию, я получаю ошибку... хммм...

Работает только вызов mom1... но это не то значение...

Спасибо за помощь!

Пока, AT

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