ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

教えて下さい。

例えば、5分足のEAでサインが出てポジを持ち
その5分以内にすぐにストップにかかりポジが無くなると(=負け)
EAがサインが出た(まだ同じ5分)と判断し、再度注文が出てしまいます。
そしてまたすぐ負ける~みたいな(汗)
次の5分に変わるまで連続で注文が出てしまいます。

同じ足では2回目以降の注文を出さないように規制するEAは
どのように書けばいいのでしょうか?
よろしくお願いいたします。

A 回答 (1件)

例えば外部変数に



datetime EntryTime = 0;

として、注文が成立したら

EntryTime = Time[0];

を代入、そして

if(シグナル && Time[0] > EntryTime )

で注文する

でどうでしょうか。
    • good
    • 1
この回答へのお礼

ありがとうございます。

bar!=Bars で回避できました。

お礼日時:2012/02/29 14:34

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

この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

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

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

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

最近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の頂点(底点)の値。

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

Aベストアンサー

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つの頂点の値より下回っていたら低点であるとします。
普通は見つかった順番に配列に入れておきます。こうするといくつ前の低点なのか分かりますしね。

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が返されています...続きを読む

Q土日でも為替の変動が見れるサイトは?

土日でも為替の変動が見れるサイトはありますでしょうか?

見たいのは円/USドルですが。

宜しくお願い致します。

Aベストアンサー

こちらですか?

http://www.ne.jp/asahi/cme/globex/fx4.html

ここの注意として土曜日にどんなに相場が動いても無視して下さい。
ほとんどの場合は日曜日に元に戻ります。
日曜日の26時(月曜の午前2時)すぎまで相場の変動がそのままの場合は月曜日の相場に影響がある場合があります。(9月10月に2回ずつ有りました)

QMQL4での条件文の書き方

MT4でEA作成を勉強中です。

if文の条件で詰まっているので助けてください。


変数の宣言で

double hensu_A1 ←値は何でもいいです
double hensu_B1 ←値は何でもいいです
double hensu_A2 ←値は何でもいいです
double hensu_B2 ←値は何でもいいです
double hensu_C  ←0.00

としていたとします。


if文の中で、

if ( hensu_A1 < hensu_B1 && hensu_A2 < hensu_B2)

とした時はちゃんと機能しました。
また、

if ( hensu_A1 + 0 < hensu_B1 && hensu_A2 + 0 < hensu_B2)

としても機能しました。
しかし、上の式の「0」を「hensu_C」に置き換えて

if ( hensu_A1 + hensu_C < hensu_B1 && hensu_A2 + hensu_C < hensu_B2)

とすると、機能しない(計算結果が正しくてもtrueを返さない)ようで困っています。
「hensu_C」の中身は0.00を入れてあるので、計算結果は同じになるはずです。


条件文の書き方が間違っているのでしょうか。
判る方おられましたら教えて頂けると助かります。

MT4でEA作成を勉強中です。

if文の条件で詰まっているので助けてください。


変数の宣言で

double hensu_A1 ←値は何でもいいです
double hensu_B1 ←値は何でもいいです
double hensu_A2 ←値は何でもいいです
double hensu_B2 ←値は何でもいいです
double hensu_C  ←0.00

としていたとします。


if文の中で、

if ( hensu_A1 < hensu_B1 && hensu_A2 < hensu_B2)

とした時はちゃんと機能しました。
また、

if ( hensu_A1 + 0 < hensu_B1 && hensu_A2 + 0 < hensu_B2)

としても機能しました。
しか...続きを読む

Aベストアンサー

うーん、MT4がわからないが、他言語でありがちな
「初期化してないから初期値0を期待してたら、実は値がNullだったので演算結果もNull」じゃないですか?
hensu_Cは、本当に0.00ですか?


人気Q&Aランキング