• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【MQL4】ZigZagの天底の値の取得)

【MQL4】ZigZagの天底の値の取得

このQ&Aのポイント
  • 最近MT4の入門書を買ってMQL4の勉強を始めた者です。よろしくお願いします。
  • EAでZigZagの天底を現在レートがブレイクアウトしたところでエントリーするシステムを作りたいのですが、ZigZagの頂点(底点)の値の取得の仕方がわかりません。
  • おそらく見当違いのことをしているのだとは思います。私が知りたいことは以下の2点です。1.一つ前のZigZagの頂点(底点)の値。2.二つ前のZigZagの頂点(底点)の値。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ZigZagの場合、頂点と頂点の間は空値が入っています。 ZigZagは頂点よりもその間を繋いでいる線の部分の方が圧倒的に多いです。ですからそのEAのiCustom関数はほとんどの場合、空値を返します。 さらにZigZagのmql文の中を見てみると34行目に SetIndexEmptyValue(0,0.0); http://www.metasys-seeker.net/MQL4_Reference_ver1/11-08_SetIndexEmptyValue.html の一文が入っていることが分かりますよね。 これは空値を0.0に設定するという意味です。つまりそのiCustom関数ではほとんどの場合0が返されています。 SC11さんのEAではif文中で zig<Ask と書かれているので(以下略)。 低点の見つけ方ですが、私なら頂点を一つづつ探していき、一つ見つかったらその前後の頂点を探して、最初に見つけた頂点が次に見つけた2つの頂点の値より下回っていたら低点であるとします。 普通は見つかった順番に配列に入れておきます。こうするといくつ前の低点なのか分かりますしね。

SC11
質問者

お礼

昔の質問にまでご回答いただき本当にありがとうございます。(締め切っていないせいですが) 実は私は今はEAから離れてしまい裁量でトレードしておりまして、 かなり当時の記憶が薄れてしまっています。 ですが回答していただいたことには大変感謝しております。 ps2-arfiu4様の解説が皆様の役に立つことを願います。

その他の回答 (1)

  • agent_k
  • ベストアンサー率82% (37/45)
回答No.1

ZigZagは頂点と低点をつけた時にだけ、値を返します。 例文にある記述ですと、shift値が0では今現在の足が頂点となっている時しか、この条件式は希望どおりの動きをしないでしょう。 過去につけたピークを取得したい場合は iCustom関数の最後の引数であるshift値をfor文を使って+1ずつ変化させ、値が現れたら変数にいれる。という形を私は取っています。 複数取得したい場合は、1つ目のピークを付けたshift値+1から再開し、また値が現れたら別の変数に入れればOKです。この辺のやり方はいろんな方法があると思いますので、考えてみてください。

SC11
質問者

補足

ご回答ありがとうございます。アドバイスをもとにやり方を考えたみましたがどうもうまくいきません。 私はfor文を使うのはこれがはじめてというくらいの素人なので、ちょっとやろうとしていることのハードルが高いのかもしれません。私が書いたプログラムを載せておきます。このプログラムですと全く意図していない所でエントリーしてしまいます。やはり見当違いのことをしているのだとは思います。もしよろしければヒントを頂けないでしょうか? double zig; double ZigNo1; int a; int b = 0; for (a=1; a<100; a++) { zig = iCustom(NULL,0,"ZigZag",12,5,13,0,b); b++; if(zig>0) { ZigNo1 = zig; a = 100; } } if(High[1]<ZigNo1 && ZigNo1<High[0]) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Blue); }

関連するQ&A