こんにちは。
私は、過去データ(ピークとボトム)を掘り起こすエキスパートを開発し、私のメインエキスパートに使用しようとしています。ジグザグはシンプルで簡単に高値・安値がわかるので、使ってみることにしました。
問題は、iCustom()関数を使ってZigZag.ex4を呼び出すと、正しい高値と安値が取得できないことです。再描画を避けるために、iCustom()のインジケータのインデックス20を再描画の基本的な保護として使用しました。
ZigZagのコードには2つのバッファがあります(metaquotesのバージョンを使用 https://www.mql5.com/en/code/7796 )。高値と安値を逆に取ることもありますが、今のところあまり関係ありません。
ある値はコードと一致し、ある値は一致せず、ジャーナルでは、同じ列に高い値と低い値の両方を見ることができますが、これは不可能です。
私のコードは以下の通りです。
ジグザグインジケーターの使い方が間違っているのか、それともコードを間違えたのでしょうか?問題が見つからないので、私の問題を特定するためにあなたの助けを親切にお願いします。
ありがとうございます。
あなたは、そのEAがどのように動作するかのコードMACDサンプルを読んで伝えることができますか?
私にはあなたが試したことがないように見える....
あなたが書いたものは、私が何かを行うようなものです......何が起こるかわからない あなたは私が何をしたか教えてもらえますか?
Every tick loop あなたのすべてのティックループは何ですか?
これですか?
if (tmp!= Time[0]) { tmp = Time[0]; double zh=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,1,20); double zl=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,0,20); Zig_high[cnt]=zh; Zig_low[cnt]=zl; cnt=cnt+1; Alert(" Zig zh=",zh," zl=",zl," cnt=",cnt-1); } // Every tick loop
yes then where is the loop ?
いいえ、それからあなたのコードが何を意味するか行ごとに説明してください...
はい、私はそれがすべてのバッファの要素を埋めることはありません知っています。私はゼロ(HighとLowがない場合)とHighとLowの値も含めてすべてのデータを配列に入れたいと思っています。その理由は、deinit()の内部で別の処理を行い、その配列を使って高値と安値のティック差を計算させたいからです。つまり、2つの高値の間に何ティック経過しているか、高値と安値の差はどれくらいか、ということです。しかし、私はまだその段階に到達していません。
なぜ、画像にあるように、高値と安値の両方を同時に返してしまうのでしょうか?これが私の主な問題です...
ありがとうございます。
MACD Sampleのコードを読んで、そのEAがどのように動作するか教えてもらえますか?
私にはあなたが試したことがないように見えます....
あなたが書いたものは、私が何かをするようなものです......何が起こるかわからない 私が何をしたか教えてもらえますか?
Every tick loop あなたのすべてのティックループは何ですか?
これですか?
yes then where is the loop ?
いいえ、それからあなたのコードが意味するものを一行ずつ説明してください....
ループの問題はないと思います。ループは機能して結果をプリントアウトします。15分ごとにどのように動作しているか、緑色の長方形で確認してください。Start()関数自体がループなんですよね?
Start()関数そのものがループであることは正しいのですが
しかし、そのループはどこで始まり、どこでStart()関数が終わるのでしょうか?
それは別の場所です.
出力されたメッセージは、tickごとに繰り返されるわけではありません.
では、何をやっているのでしょう・・・・・・?
あなたのコードの行を説明してみてください......あなたができる限り
うまく説明できなかったらごめんなさい。
このエキスパートはバックテストに 使用するもので、私の目的は15Mチャートで過去の高値と安値を見つけることです。そして、その高値と安値のデータを再処理して、グラフの位相と振幅を計算しようと思っています。
高値と安値を格納するために2つの配列、ティックをカウントするために1つのカウンターを使用しました。配列のサイズは1000で、最大で2日間動作させます(1日あたり1440/15=96ティック)。
int cnt=0; double Zig_high[1000]; double Zig_low[1000];
init()関数で、配列にゼロを入力しています。
start()関数の中で、新しいティックがトリガーされたかどうかを以下のコードでチェックしています。
if (tmp!= Time[0]) { tmp = Time[0]; // the code here runs every 15M. }
つまり、start()関数はバックテスト(2日間)が終了するまで連続的にループしているのです。
私の主な問題は、ZigZagの呼び出しだと思います。以下、ジグザグインジケーターを呼び出しています。通常、高値や安値があれば、ゼロ以外の値で返すはずです。しかし、私の場合、時々、低値と高値の両方が同じ値で返されることがあり、これは不可能です。
double zh=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,1,20); double zl=iCustom(Symbol(),0,"ZigZag.ex4",6,5,3,0,20); Zig_high[cnt]=zh; Zig_low[cnt]=zl; cnt=cnt+1;
多分、私はMetaquotesのオリジナルのジグザグ・インジケータ(下記参照)で使用されている配列を理解していなかったのでしょう。私の理解では、これらは高値と安値を保存するために使用されます。
//---- indicator buffers double ExtMapBuffer[]; double ExtMapBuffer2[];
ありがとうございます。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは。
私は、過去データ(ピークとボトム)を掘り起こすエキスパートを開発し、私のメインエキスパートに使用しようとしています。ジグザグはシンプルで簡単に高値・安値がわかるので、使ってみることにしました。
問題は、iCustom()関数を使ってZigZag.ex4を呼び出すと、正しい高値と安値が取得できないことです。再描画を避けるために、iCustom()のインジケータのインデックス20を再描画の基本的な保護として使用しました。
ZigZagのコードには2つのバッファがあります(metaquotesのバージョンを使用 https://www.mql5.com/en/code/7796 )。高値と安値を逆に取ることもありますが、今のところあまり関係ありません。
ある値はコードと一致し、ある値は一致せず、ジャーナルでは、同じ列に高い値と低い値の両方を見ることができますが、これは不可能です。
私のコードは以下の通りです。
ジグザグインジケーターの使い方が間違っているのか、それともコードを間違えたのでしょうか?問題が見つからないので、私の問題を特定するためにあなたの助けを親切にお願いします。
ありがとうございます。