乾燥肌、冬の肌トラブルに本気の対策 >>

最近MT4の入門書を買ってMQL4の勉強を始めた者です。よろしくお願いします。

EAでZigZagの天底を現在レートがブレイクアウトしたところでエントリーするシステムを作りたいのですが、ZigZagの頂点(底点)の値の取得の仕方がわかりません。

iCustomで標準搭載のZigZagを呼び出して条件式を書いてみましたが売買できませんでした。
(以下のような文です)

double zig = iCustom(NULL, 0,"ZigZag",12,5,3,0,0);

if(zig <Ask)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Blue);
}

おそらく見当違いのことをしているのだとは思います。
私が知りたいことは以下の2点です。

1.一つ前のZigZagの頂点(底点)の値。
2.二つ前のZigZagの頂点(底点)の値。

どうかよろしくお願い致します。

このQ&Aに関連する最新のQ&A

EA 意味」に関するQ&A: メモリの 2EAの意味

A 回答 (2件)

ZigZagの場合、頂点と頂点の間は空値が入っています。


ZigZagは頂点よりもその間を繋いでいる線の部分の方が圧倒的に多いです。ですからそのEAのiCustom関数はほとんどの場合、空値を返します。

さらにZigZagのmql文の中を見てみると34行目に
SetIndexEmptyValue(0,0.0);
http://www.metasys-seeker.net/MQL4_Reference_ver …
の一文が入っていることが分かりますよね。

これは空値を0.0に設定するという意味です。つまりそのiCustom関数ではほとんどの場合0が返されています。

SC11さんのEAではif文中で zig<Ask と書かれているので(以下略)。


低点の見つけ方ですが、私なら頂点を一つづつ探していき、一つ見つかったらその前後の頂点を探して、最初に見つけた頂点が次に見つけた2つの頂点の値より下回っていたら低点であるとします。
普通は見つかった順番に配列に入れておきます。こうするといくつ前の低点なのか分かりますしね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/12/10 16:54

ZigZagは頂点と低点をつけた時にだけ、値を返します。


例文にある記述ですと、shift値が0では今現在の足が頂点となっている時しか、この条件式は希望どおりの動きをしないでしょう。

過去につけたピークを取得したい場合は
iCustom関数の最後の引数であるshift値をfor文を使って+1ずつ変化させ、値が現れたら変数にいれる。という形を私は取っています。

複数取得したい場合は、1つ目のピークを付けたshift値+1から再開し、また値が現れたら別の変数に入れればOKです。この辺のやり方はいろんな方法があると思いますので、考えてみてください。

この回答への補足

ご回答ありがとうございます。アドバイスをもとにやり方を考えたみましたがどうもうまくいきません。
私は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);
}

補足日時:2011/05/28 22:53
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QFX:指定した時間の高値・安値を返すプログラムを教えてください。(MT4)

指定した時間の高値・安値を返すプログラムを教えてください。

具体的に言うと、、21時から23時の間の高値・安値です。

少し調べたところ、iHighest,iLowestやiBarSHiftの関数で値を出せると思ったのですが、
この関数では、指定の期間が、”現在から何本前の足から何本分の期間”といったように時刻で指定できないみたいで困っております。

※MT4を使用しております。

Aベストアンサー

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在が23時台であれば、
{
H=High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,1)];
L=Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,1)];
}

ちなみに、TimeHour()関数については、以下のサイトで詳しく解説されておりました。

http://jidoubaibai.com/index.html

また、私は、ごく最近MT4の勉強をはじめたばかりで、質問者の方と同様、いろいろ苦労しております。

ちょっと自信ありませんが、とりあえず作ってみました。
今、手元に、MT4がないので、コンパイルその他の実験をしておりません。エラー等ありましたら、どうかご容赦を。

double H=0; // 最高値を変数として宣言
double L=0; // 最安値を変数として宣言
int T = TimeHour(CurTime()); // 現在の時刻を変数として宣言

if(T!=23) // もしも現在が23時台でなければ、
{
H= High[iHighest(NULL,PERIOD_H1,MODE_HIGH,2,T+2)];
L= Low[iLowest(NULL,PERIOD_H1,MODE_LOW,2,T+2)];
}
else // もしも現在...続きを読む

QMT4で時間を指定するにはどのようにすれば良いでしょうか。

MT4で時間を指定するにはどのようにすれば良いでしょうか。

例えば、取引を日本時間で午前9時から午後3時の間に指定して、午後3時の時点で建て玉があった場合は手仕舞いできるようにしたいのです。

MT4付属EAの、MACD Sampleで時間指定する場合は、どのようなプログラムをどの位置に書けば良いのでしょうか。

時間指定をいろいろ変えてバックテストを行ってみたいと思っています。

プログラムは、トレードスタジアムで少しやった程度ですので、MT4のプログラムは初心者のレベルです。よろしくお願いします。

Aベストアンサー

回答が大変遅くなってごめんなさい。

実は、私も悩んでいました。

MACDのサンプルプログラムを下の方までよく読んでみると、マジックナンバーが16384となっているので、これに統一しなければ決済されません。

よって、私が書いた最初の部分で、

# define MAGIC 0001

という部分を、

# define MAGIC 16384

としていただければ、うまくいくかと思います。

一時やってみてください。

QMT4を使い、トレンドラインで売買する方法

メタトレのEA作成について質問させてください。

自分で描画したトレンドラインに、現在値が達したら建玉又は決済するという方法を教えて下さい。

色んなサイト(海外も含め)を調べたのですが、わかりませんでした。
FX自体は5年やっておりますが、メタトレは最近口座開設したばかりの初心者です。
まだ、プログラム言語の勉強中なので、関数などは・・・です。

よろしくお願いします。

Aベストアンサー

それ、不可能かもしれません。
決済はEAで、ラインはあなたが手動で描くという意味ならば、恐らく無理です。

基本スタンスとして業者側が提供する数値(4本値)で制御するという考え方であり、
ユーザー側で入力できる値の個数は8個とかなり制限されています。
このユーザ側で設定できる値とは、例えば移動平均線の日数などです。
8個も変数があれば十分でしょうということです。

EAでトレンドラインを描く分には業者側提供の値で十分実装できます。
しかし、ユーザーが個別に描いた線の位置を入力値として制御したい場合、
とても8個では足りないでしょう。しかも、それは座標上から拾って来ないといけません。

MT5ではこの辺の設計が可能になっているかもしれませんが、
それは関知致しません。悪しからず。

QMT4 「iCustom関数での条件記述について」

お尋ねします。初心者にてNETや本を参考にしつつEAを作成しております。

EA作成に"MA Candles"というインジを使おうと考えています。
ある条件にてローソク足の色を「青or赤」にて表示するものです。

たとえばエントリーにて下記条件を記述した場合、

if( iCustom(NULL,0,"MA Candles", 2,1) □□□□

□□□□の箇所に「 color 」を指定することは可能でしょうか?

根本的に間違っているのか、はたまたもっと単純なのか。。
皆目見当がつかなくなってます。


検索しましたが有用な情報が得られず、あれこれトライしましたがエラー吐きまくりです。

よろしくお願いします。

Aベストアンサー

iCustom関数はインジケーターで定義されているindicator_buffersの配列?の値を取得するためのものなので、この場合はcolorを指定することはできません。

つまり、iCustom(NULL,0,"MA Candles", 2,1) ですと、"MA Candles"というインジケーターの3つ目のbufferの現在から2本目のバーに対応する値を取得することになります。

実際のインジケーター・プログラムで言うと、Candle1[1]の値になりますね。

色の指定はプログラムの中で実施されています。質問者の方の目的を考えますと、色を直接読み取るように頑張るのではなく、色の決定ロジックを理解してbufferの値を使って色を算出する(つまり、トレンドを見る)ように考えると良いです。

ただ、
当該インジケーター自体は単に期間5と25のクロスでトレンドを見ているだけなので、一般にこの分析手法だけでエッジがあるとは思えないので、私などは近づかないインジケーターです(個人的な趣味なので、使いようによっては意味があるかも知れませんが。。。)。
念のため、このインジケーターの算出ロジックを明確にするため、期間5(黄線)と期間25(緑線)を表示させてみました(添付画像)。
ん~、どうみても、、、使えそうにないです。私的には。

すいません、余分なコメントが多すぎました。。。

iCustom関数はインジケーターで定義されているindicator_buffersの配列?の値を取得するためのものなので、この場合はcolorを指定することはできません。

つまり、iCustom(NULL,0,"MA Candles", 2,1) ですと、"MA Candles"というインジケーターの3つ目のbufferの現在から2本目のバーに対応する値を取得することになります。

実際のインジケーター・プログラムで言うと、Candle1[1]の値になりますね。

色の指定はプログラムの中で実施されています。質問者の方の目的を考えますと、色を直接読み取るように頑張...続きを読む

QMT4のEX4ファイルをMQ4ファイルに変換する無料ソフトを教えて下さ

MT4のEX4ファイルをMQ4ファイルに変換する無料ソフトを教えて下さい。

先日まではhttp://www.ex4tomq4.net/を使っていたのですが、変換しようとページを訪れるとUnder Constructionで、暫くこの状態が続いています。

で、他のソフトを探してみてhttp://www.greattradingsystems.com/2009/08/free-mt4-decompiler-ex4-to-mq4/でDecompiler EX4-TO-MQ4 4.0.215.6やMetaTrader 4 Ex4 Decompilerを試してみたのですが、どちらも使えませんでした。(前者はダウンロード後インストールしようとするとエラーになりインストール出来ない。後者はダウンロード後EX4ファイルをダブルクリックするとMQ4ファイルに変換するものですが、ダブルクリックしても何の変化もなく、読み取れないEX4ファイルが開くだけです。)

という訳で、ディコンパイラーならこれがお勧め、という無料ソフトがあったら教えて下さい。

宜しくお願いします。

MT4のEX4ファイルをMQ4ファイルに変換する無料ソフトを教えて下さい。

先日まではhttp://www.ex4tomq4.net/を使っていたのですが、変換しようとページを訪れるとUnder Constructionで、暫くこの状態が続いています。

で、他のソフトを探してみてhttp://www.greattradingsystems.com/2009/08/free-mt4-decompiler-ex4-to-mq4/でDecompiler EX4-TO-MQ4 4.0.215.6やMetaTrader 4 Ex4 Decompilerを試してみたのですが、どちらも使えませんでした。(前者はダウンロード後インストールしようとするとエラーになりイン...続きを読む

Aベストアンサー

基本的にはコンパイルされたex4ファイルのみで配布されているものは
mq4を見せたくないという公開者の意志がそこにありますので
それをデコンパイルするという行為は倫理的にグレーゾーンになりますし
公開者自身がそれを禁ずる旨の声明を出している場合は権利の侵害行為となります。
お探しのデコンパイラですが、上記のような理由でアンダーグラウンド的なツールであり
こういった公の場では質問する性質のものではないかもしれません。
感覚的には「デジタル映像のコピーガードをキャンセルする」というような行為と同様ということですね。

QMQLでチャートに見えている足の本数の取得方法

MT4のチャートに見えているローソク足の本数を、MQLで取得する方法について教えて下さい。
見えている足の本数なので、チャートウィンドウ幅を横に広げると、増えることになります。
やりたいことをシンプルに言うと、現在チャートに見えている一番左のローソク足の安値に
矢印を表示したいのです。
ウィンドウサイズを変更するとティックデータ取得のタイミングで再描画され
その時最も左側にある足に矢印が移動するようにしたいのです。
本当にやりたいことは、これではないのですが、これが出来れば本来の目的も達成出来ます。

見えているローソク足の本数が取得出来れば可能だと思うのです。
もちろん、 別の手段を使っても出来るよ、という場合、その方法を教えていただけるとありがたいです。
以上、よろしくお願い致します。

Aベストアンサー

WindowBarsPerChart()を使えばO.K.

Q為替データをエクセルにダウンロード出来るサイト

為替データをリアルタイムで取得して、エクセルに
ダウンロードして処理したいのですが、
そのような事の出来るサイトは無いでしょうか。

Aベストアンサー

システムに関しては全く無知です。

株価のリアルタイムダウンロードの質問は時々あり、次が参考になっているようです。為替も同じじゃないでしょうか?

Excelで株投資
http://www2s.biglobe.ne.jp/~iryo/kabu/index.html
このなかの、右下のほうで、
■ 解析ツール関連VBAの解説
┣[1]-1Webから株価データ取得マクロ(Yahoo)
 ┣[1]-2Webから株価データ取得マクロ(Infoseek)

参考URL:http://www2s.biglobe.ne.jp/~iryo/kabu/index.html

Q通貨先物チャート

現在の為替チャートでなく、1年後の通貨
USD/JPY
EUR/USD
などの先物チャートってあるんですか?


あれば教えてください。
ちなみに原油や金(キン)などのチャートはこれは今から3ヶ月?半年?1年後の
価格を予約する現在のチャート??なんですね?
先物にも何種類か期限があるんでしょうか?

例えば現在の為替の場合シカゴIMMのポジションとほぼ同じ動きをしています。
先物の場合もだいたいそうなんでしょうか?

ちななみにオプション取引というのは別途チャートが存在するのでしょうか?

Aベストアンサー

CME(シカゴ)に通貨先物が上場されてます。
ここが世界で一番流動性のある先物取引所です。JPY先物は1円あたり何ドルという逆数表記になっていますのでわかりにくいかもしれません。ユーロドル(ドル中心のユーロ先物)も当然あります。

そこで1年後の、ということですが、調べずに書いているのでアレですが、2006年10月前後の限月はあるはずですから、取引があればチャートはあるでしょう。しかし日本の商品先物と違って期近限月が取引の中心なので、取引が無いためにチャートが描けないということもあるかもしれません。
毎日、その日から一定期間後(3ヵ月後とか1年後とか)の価格を値決めするといったスタイルの先物取引は、ロンドンの非鉄市場(LME)のやり方です。LMEは有名な取引所ですが、このスタイルの取引は非常に特殊なやり方で、他に同様のスタイルで値決めする取引所があるのか知りません。おそらく無いと思います。
ですから、為替で常に1年後のレートを表示しているチャートという意味でしたら、お望みの物は無いんじゃないかと思えます。


# ちなみに原油や金(キン)などのチャートはこれは今から3ヶ月?半年?1年後の
# 価格を予約する現在のチャート??なんですね?
# 先物にも何種類か期限があるんでしょうか?

(以下細かい数字や日時は厳密性を欠きます。)
たとえば原油の先物というのは、現在東工取という取引所で6つの種類が取引されてます。
5年10月限(ギリ)というのが今月受け渡しするもの。同11月限は来月受け渡しするもの。1ヵ月ごとに来年3月に受け渡しをするものまでが上場されてます。
受け渡しの日が違うだけで基本的に同じ規格のモノですから、同じような値段ですし同じような値動きをしますが、完全に同じではありません。微妙に価格差があります。
10月限の受け渡し日(納会日と言います)に、10月限は無くなります。翌営業日に来年の4月に受け渡しする2006年4月限、というものが新しく上場されます。そういう風にぐるぐる回って行くんです。先のLMEのようなやり方が特殊で、ぼくが知る限りLME以外の全世界の先物取引所はこの方式です。

で、チャートですが、限月別のチャートというものもありますがそれだと6か月分しかチャートを作れません。
日本の商品相場で一般的なチャートは先限つなぎ足といわれるもので、期限の一番遠い限月のものを繋いで行ったチャートです。銘柄によって取引期限が6ヶ月までしか無いものと1年あるものがありますので、一律に6ヵ月後なのか1年後なのかは言えません。
先限つなぎ足というのは日本の商品相場特有のチャートで、ちょっと特殊です。
日本の株価指数先物取引でも金融先物取引でも、或いは諸外国の株・商品・金融先物取引でも、みんな期近(納会までの期限が一番近い)限月の取引量が一番多いです。このため、期近限月のつなぎ足というものが一般的で、期先のつなぎ足なんてものはたぶんありません。
残念ですが通貨先物の6ヶ月先とか1年先とかのチャートはやっぱり無いと思います。


# 例えば現在の為替の場合シカゴIMMのポジションとほぼ同じ動きをしています。
# 先物の場合もだいたいそうなんでしょうか?

ああ、IMMはご存知なんですね。
CMEと先に書きましたが、シカゴマーカンタイル取引所(CME)の中にインターナショナルマネタリーマーケット(IMM)というのがあるので、同じもののことです。どっちでもいいでしょう。
つまりIMMというのはそれ自体が先物市場です。
他にもいくつか通貨先物を上場している市場はりましたが、廃れてしまって上場廃止しているかもしれません。実は東京にも通貨先物を上場してる取引所があったんですが、今でもやってるのやらやってないのやらです。


# ちななみにオプション取引というのは別途チャートが存在するのでしょうか?

オプションはチャートを見ることにあまり意味がありません。
説明するためにはオプション価格とはどういうものでどういう動き方をするかといったことから書かなければならずエライ大変なので詳しく書きませんが、オプション価格のチャートというものが無くはないけれども、それにはほとんど意味が無いと思ってください。オプション価格のチャートを見ながら取引している人もオプション価格のチャートを分析する人も、いません。

CME(シカゴ)に通貨先物が上場されてます。
ここが世界で一番流動性のある先物取引所です。JPY先物は1円あたり何ドルという逆数表記になっていますのでわかりにくいかもしれません。ユーロドル(ドル中心のユーロ先物)も当然あります。

そこで1年後の、ということですが、調べずに書いているのでアレですが、2006年10月前後の限月はあるはずですから、取引があればチャートはあるでしょう。しかし日本の商品先物と違って期近限月が取引の中心なので、取引が無いためにチャートが描けないとい...続きを読む

QMT4のStrategy Testerの取引種別の意味

メタトレーダーのStrategy TesterでEAを検証した結果タブ

取引種別に、『modify』と『close』という項目がありますが

イマイチ意味が分かりません。

ご存知の方、是非詳しい意味を教えて頂けないでしょうか?

よろしくお願い致します。

Aベストアンサー

回答がないようなので私が返答します。

modifyは注文を変更したとき。
metatraderでよく使うのは、追いかけ指値or逆指値をするときに使います。
closeは条件が成立してポジションが閉じられたとき。
ストップロス、トレイリングストップにかかったときではないです

Qmt4のRCIをマルチタイムフレーム化したいのですが

mt4のRCIをマルチタイムフレーム化したいのですが
まず期間設定だけ弄ってマルチタイムフレーム化したのですが、期間が560とかになるとMT4の起動に30分くらいかかってしまいます。
色々なインジケーターとの併用がしたいのでどこかにRCIマルチタイムフレームのmqファイルはないでしょうか?ex4拡張子のRCIのマルチタイムフレームはあったのですがプログラムを参照できないので駄目でした。
またはマルチタイムフレームの作り方のサイトでもあったら教えてくださるとうれしいです。
宜しくお願いします。

Aベストアンサー

以下のサイトにインディケーターが集められていますので探してみてください。

基本マルチタイムフレームのインディケーターは MTF がついています。
ただちょっと厄介なのが、先頭文字がMTFから始まるのでなく、
_ とか # とか 記号から始まるものがあったりして探しにくいかもしれません。

確かに算出期間560というのは計算は大変ですが、起動に30分かかるのは別のところに問題があるような気がします。CPUのスペック、メモリ、他常駐ソフトなど見直された方が良いかもしれません。

参考URL:http://www.abysse.co.jp/mt4/indicator_name_sign.html


人気Q&Aランキング

おすすめ情報