[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 661

 
artmedia70:

まだ使えません...。となり、ちょうどAC

ログを見ると、再計算がうまくいかず、AC1 = 0、AC2 = 0 のように、0 > 0 にならないことがあるようです。

print(AC1,AC2) ;
if (BB>0 && OsMA>0 && AC1>AC2) return(1);

 
IgorM:

ログを見ると、再計算がうまくいかず、AC1=0、AC2=0となり、0>0にならないことがあるようです。

print(AC1,AC2) ;
if (BB>0 && OsMA>0 && AC1>AC2) return(1);

を下回る。

else return(0);

 

イゴールさん、ありがとうございます。そこに犬が埋まっていると思うのですが...。:)

Comment()では、AC1=0.001008, AC2=0.001020と出力されますが、データウィンドウでは 同じAC1とAC2=0.01と出力されます。
桁の容量を増やすにはどうしたらいいですか?まあ、些細な1000倍以外の、そんな感じでしょうか?

 
IgorM:

うん、しばらくやってみるしかないかな......最初のスパイクまではそうだけど、その後は......。- 解らないんです。


完了しました。その成果がこちらです。

コードはそれほど複雑ではないので、必要に応じてアレンジすることも問題ないでしょう。

スクリプトは投稿に添付しています。

ファイル:
0.mq4  4 kb
 

このようなエントリーは正しいのでしょうか。

double AC1=NormalizeDouble(iAC(sy,tf,1),8);
 
artmedia70:

今のところうまくいっていない...。で、ACです。

唯一の解決策は、変数にどんな値が入っているかを正確に調べることだ。そうすれば、プログラムされた条件がなぜ機能しないのかがわかる。

0.01まで自動的に丸められるなら、UsdJpyのような商品でテストに合格する可能性が高いです。それから、文字列変数を通して作業するオプションもあります (本当にそのような遠い小数点以下の桁数が必要な場合)

 
drknn:
唯一の解決策は、変数にどんな値が入っているかを正確に調べることだ。そうすれば、プログラムされた条件がなぜ機能しないのかがわかる。
ウラジミールさん、ありがとうございます!理由がわかりました。2つ上の質問...
 
drknn:


完了しました。その成果がこちらです。


ありがとうございます、大丈夫です。トレンドフラグを入力する方法がわからなくて、配列のソートの ようなものだと思っていました
 
artmedia70:

このようなエントリーは正しいのでしょうか。


1番目のパラメータは数値を返し、2番目のパラメータは許容範囲内の整数値なので、正しい。問題は、具体的に何が変数に入るかだ。このままプリントして、この作りを試してみてください。

double AC1=NormalizeDouble(iAC(sy,tf,1),8);
string str=AC1;
Print("str = ",str);
 
IgorM:

ありがとうございます、大丈夫です。トレンドフラグの入力方法がわからなくて、配列ソートをする必要があるのかと思いました


配列を扱うときに困るのは、配列の列挙の関数が与えられた値に遭遇したとき、その値を含むセルの番号を返すことである。そして、この値が配列の他のセルにも存在することが、まさに複雑な問題を引き起こすのです。そのため、配列全体を使い切るまで、値を繰り返し表示し続けなければならないのです。そして、正しい値に出会ったらすぐに、そのセルインデックスを先に作った配列に入れるか、行を縫い合わせるのです。

この問題の複雑さは、ピーク/トラフを探さなければならないことです。それを見つけるには、極限をスキップする必要があり、そうして初めて、コードは実際にそれをスキップしたことを認識するのです。だからこそ、一歩戻って極限点とそれがあるセルを思い出す必要があるのです。