コーディングの方法は? - ページ 337

 
at120:
こんにちは、Mladen!

iCustomの呼び出しは正しいと思うのですが、テストと通常(データのエクスポートやindiとしての使用)で

は今のところ問題なく動作しています。問題は、おっしゃるとおり、double/arrayの値だと思います。

今、私が使用するとき

double mom1[]を使っています。

mom1 = iCustom(NULL,0, "myIndi",0,i) とします。

とよりも、 -> mom(mom1,Bars,20,i);

-> "mom" - パラメータの会話は許可されていません

どのように私はこれを正しく書くのですか?

ありがとう、そしてさようなら、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); }
 

Mladenさん、こんにちは。

助けてくれてありがとうございます。

私の問題は、プログラムの他の部分がそれを必要とするため、"const "が必要なことです...。

全て "新しく "書くのは大変なので、その逆はできないか、ということです。

mom1がサブファンクションで動作するようにできますか?

ありがとうございました、そしてさようなら、AT

 
at120:
こんにちは、Mladen!

ご協力ありがとうございます。

私の問題は、プログラムの他の部分がそれを必要とするため、「const」が必要だということです...。

すべて」を新しく書くのは大変なので、その逆はできないか、ということです。

mom1がサブ関数と連動するようにできますか?

どうもありがとうございました。

mom関数は そのまま使えます(それ以外も)。

mom(mom1,Bars,20,i); mom(mom1,Bars,20,i) に変更するだけです。

 

を実行すると、エラーが表示されます。

-> "mom1" -パラメータの 会話が許可されていません。

これは厄介です...何か他のアイデアはありますか?

ありがとう、そしてバイバイ、AT

 
at120:
その後、私はエラーが表示されます。

-> "mom1" - パラメータの会話は許可されていません。

というエラーが出てしまいます。

ありがとう、そしてさようなら、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);

}

全くエラーなしでコンパイルします

 

Mladenさん、こんにちは。

多分、for {}関数が 原因ではないでしょうか?(Barsを取得するため?)それとも...。

もう一つのポイントは、mom1がカスタムインディであることです... mom1 = iCustom(NULL,0, "myIndi",0,i);

これは、私がここで呼び出したものです: mom(mom1,Bars,20,i);

あなたの助けをいただきありがとうございます

さようなら、AT

 
at120:
こんにちは、Mladen!

多分、for {}関数が原因?(Barsを取得するため?)あるいは...のためでしょう。

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);

}

また、コンパイラのエラーは全くありません。

 

こんにちは、Mladen!

多分、私のコードがもっとこのように見えるので、"エラー "があるのでしょう... :-/。

#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:
Mladenさん、こんにちは。

多分、私のコードはもっとこのように見えるので、"エラー "があります... :-/。

#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 (単純な double 変数) として定義されています。

bufferと同じように定義して、initセクションでbuffersに追加すればOKです(buffersの数を 適切に調整すること)。

 

マルデンさん、こんにちは。

応援ありがとうございます! ;-)

教えていただいたようにコードを書いても

(そうだと思うのですが...)

#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);

}

);

というわけで、"First "バージョンを使うと、値が出ません。

2番目のバージョンを使用すると、私はエラーが発生します...うーん。

mom1を呼ぶのだけはうまくいくのですが...これは正しい値ではないのですね...。

助けてくれてありがとうございます

さようなら、AT