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

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

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

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

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

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

A 回答 (2件)

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



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

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

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

# define MAGIC 0001

という部分を、

# define MAGIC 16384

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

一時やってみてください。
    • good
    • 1
この回答へのお礼

再度のご回答ありがとうございます。

ご指示のようにマジックナンバーを統一し、5・15・30・60分足でバックテストしたところ、無事に9時から15時の間に取引を行い、ポジションが残ったら15時にクローズすることができました。
この時間制限を使用して、いろいろな条件でバックテストしてみようと思っています。

ちなみにUSDJPNの5分足で2009年10月から2010年1月までをバックテストしましたらきれいな右肩下がりのグラフになりました。ひょっとして売りと買いを逆にすれば良いのかと思いました。

MT4のEAは、まだまだ理解が足りませんのでこれからも勉強していきたいと思っています。
今回は、ご親切に教えて頂き有難うございました。感謝しております。

お礼日時:2010/08/17 18:43

当方のメタトレーダーの調子が悪く、きちんと実験できませんでしたが、おおよそ、以下のような感じでいかがでしょうか。



このプログラムでは、あくまでも、チャート上の時刻(サーバーの時刻)が基準になります。日本時間とは必ずしも一致しないので、ご注意ください。

int init()
{
return(0);
}

int deinit()
{
return(0);
}

#define MAGIC 0001


//外部パラメーター
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern int Slip = 3;
extern double TrailingStop = 30;
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;
extern int StartTime = 9;//トレード開始時刻
extern int EndTime = 15;//トレード終了時刻

//ポジション決済関数
void ClosePos(int magic)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS) == false) break;
if(OrderSymbol() != Symbol() || OrderMagicNumber() != magic) continue;
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slip,White);
break;
}
}
}

int start()
{

double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0);
}

//トレード可否
if(IsTradeAllowed()==false) return(0);

//時間設定
int Jikoku=0;
int Ji = TimeHour(CurTime());
if(Ji>=StartTime && Ji<EndTime) Jikoku=1;
else Jikoku=0;

if(Jikoku==0)
{
ClosePos(MAGIC);
return(0);
}

MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

total=OrdersTotal();
if(total<1)

以下、サンプル通り。

この回答への補足

プログラムを見直し、USDJPNの15分足で同じ期間でバックテストしてみました。
取引回数は44回あり、新規の注文は9時から15時の間に行われていますが、決済は15時を過ぎることが多々あります。(時間はチャート時間を使用)

15時までにポジションが残っていた時に、15時で決済されないようです。どのようにすれば15時で決済されるのでしょうか。

もう一度教えていただけないでしょうか。よろしくお願いします。

補足日時:2010/08/08 11:56
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

チャートの時刻と日本時間のずれを考慮して設定すれば良いのですね。

上記のとうりにEAを作り、2009年10月から今年1月末迄でバックテストを行いました。
時間はチャートの時刻で9時から15時にしてみました。USDJPNの1分足です。

結果を見ますと、15時に手仕舞いしないで翌営業日に持ち越すものがあります。そして翌営業日に持ち越すものは負けが多いようです。
しかし、当日に手仕舞いするものは、すべて勝っています。
エントリー回数が意外と少ないようです。(4ヶ月間で8回)

まだ、詳しく見直していませんので、見直しを行いいろいろな時間設定でも検証したいと思っています。

詳しいプログラムを教えて頂き大変助かりました。ありがとうございました。

お礼日時:2010/07/31 21:06

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

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

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

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

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

Q3B LAB.☆

3B LAB.☆って、どうやって発音するのですか?
初歩的な質問ですみません。
”3B”は「スリービー」と分かるのですが、”LAB”が分かりません・・・

Aベストアンサー

こんばんは。

読み方は「スリービーラボ」です。
『B』は、3人の血液型がB型だから。
『LAB』は、laboratory(ラボラトリー)の略。

詳しくは、↓のサイトを参考にしてください。
  



                                 

参考URL:http://cwoweb2.bai.ne.jp/19/i/prof.html

QMT4にて一定時間内においての取引数を制限させる

MT4にて一定時間内においての取引数を制限させる
プログラムを作成したいのですが、
ネットを検索しても良い文例が見つかりません。

例えば、
「過去24時間内で取引10回まで」
といったプログラムを作りたいです。

当方、初心者のためEA作成には自信がないため、
どなたか教えて頂ければ幸いです。
よろしくお願い致します。

Aベストアンサー

>「過去24時間内で取引10回まで」

この意味がよくわからないのですが、「一日10回まで」ということでしょうか。

いろんなやり方があると思いますが、スタティック変数を利用すればうまくやれると思います。たとえば、スタート関数の中に、

static int TradeCnt = 0; として、トレード回数を表す変数を宣言します。staticと書くのはティックが変わっても変数が初期化されずに以前の数値をそのまま保持するためです。

次に、

if(TimeHour(CurTime())==00 && TimeMinute(CurTime())==00) TradeCnt = 0; と書きます。この文の意味は、「もしも、チャート上の時刻が00時00分ならば、TradeCnt変数を0にもどす」です。


あとは、エントリー条件を記述するときに、

if(TradeCnt<10 && …)
{
OrderSend(…);
TradeCnt++;
}

とします。この記述の意味は、「もしもトレード回数が10回未満ならばエントリーをする」「エントリーをしたら、TradeCnt変数を1つずつ加算する」ということです。

まとめると、トレードをするたびにTradeCntが一つずつ増えていき、10回目に到達すると、エントリーしなくなり、チャート時刻によって日付が変わると、TradeCntが0に戻るため、再度エントリーできるというわけです。

現在、手元にメタトレーダーがないので、プログラムチェックができませんので、ひょっとしたらミスがあるかもしれません。ご自身でチェックしてください。

>「過去24時間内で取引10回まで」

この意味がよくわからないのですが、「一日10回まで」ということでしょうか。

いろんなやり方があると思いますが、スタティック変数を利用すればうまくやれると思います。たとえば、スタート関数の中に、

static int TradeCnt = 0; として、トレード回数を表す変数を宣言します。staticと書くのはティックが変わっても変数が初期化されずに以前の数値をそのまま保持するためです。

次に、

if(TimeHour(CurTime())==00 && TimeMinute(CurTime())==00) TradeCnt = 0; と書...続きを読む

Q3B LAB.☆Sについて

すぐにでも教えて欲しいのですが
19の岡平健治が作った
バンドグループ3B LAB.☆Sの
読み方は何って読むんですか?

Aベストアンサー

今晩は
スリービー・ラボのようです。↓

http://listen.jp/store/artist_1156737.htm

QMT4で、指定時間に全決済出来ませんか?

MT4でアジアンタイムにスキャルピングするEAを使用し、エントリーはEAに任せて、あらかじめ指定しておいた時刻になると、自動的にポジションを全て強制決済したいのですが可能でしょうか?

Aベストアンサー

補足についての回答です。
MT4のソフト自体にご希望されている機能はないので、ご自分でプログラミングできない場合はプログラミング代行等にお願いすることになってしまうことになります。

Q3B LAB.☆の「プレゼント」について。

3B LAB.☆の「プレゼント」の曲で分からない事があります。

スコアに書いてあるのは5弦ベースなのに、肝心な5弦を使う所が無く、
4弦で弾く場合は1オクターブ上げて演奏すると書いてあったのですが、

この曲に5弦ベースは必要なのでしょうか?
また、1オクターブ上げて演奏するのは、ベースのチューニングを変えるのですか?
それともスコアに書いてある数字とは別の場所を押さえればいいのでしょうか?

Aベストアンサー

5弦ベースが必要かどうかについては、その曲を聞いたことがないのでなんとも言い難いところがあります。ただ、5弦ベースのTAB譜で5弦Low-Bを使うところがないとしたら、4弦ベースでもそのままのTAB譜でフレージングは再現できてしまうでしょう。

5弦ベース用に書かれたTAB譜を4弦ベースで弾く場合についてですが、5弦上のフレージングについては、4弦上で同じ音程が出るポジションに移したり、5弦上のポジションをその1オクターブ上の音の3弦上のポジションに移して、1オクターブ上の音で代用する、というのが一般的な対処になるでしょう。
5弦ベースをレギュラーチューニングに合わせた場合、5弦開放と3弦2f、5弦1fと3弦3f、5弦2fと3弦4f・・・のそれぞれの対が、1オクターブ差の同じ音程になります。5弦上の特定のポジションを基準とした場合、その基準のポジションで出る音程については、3弦上の「5弦のフレットポジション+2f」のポジションでその1オクターブ上の音程が得られます。
また、5弦5f以上については、4弦上の「そのフレットポジション-5f」のフレット位置で、同じ音程が得られます。5弦5f=4弦開放、5弦6f=4弦1f、5弦7f=4弦2f・・・というような関係になります。
これらを参考に、TAB譜の方を修正して利用するのが普通でしょう。
4弦ベースに置き換える場合、このような修正を加えるのは通常5弦上のポジションに絞られると思います。すべての音程を1オクターブ上に上げてしまうと、全体的にベース音が軽く聞こえるようになることが考えられます。

なお、ベースで1オクターブ上にチューニングしようとすると、弦が耐えられずに切れるか、ネックが耐えられずに大きく曲がるかのいずれかが起きる可能性が高く、どちらにしても無理があります。

参考まで。

5弦ベースが必要かどうかについては、その曲を聞いたことがないのでなんとも言い難いところがあります。ただ、5弦ベースのTAB譜で5弦Low-Bを使うところがないとしたら、4弦ベースでもそのままのTAB譜でフレージングは再現できてしまうでしょう。

5弦ベース用に書かれたTAB譜を4弦ベースで弾く場合についてですが、5弦上のフレージングについては、4弦上で同じ音程が出るポジションに移したり、5弦上のポジションをその1オクターブ上の音の3弦上のポジションに移して、1オクターブ上の音で代用する、というのが...続きを読む

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のタグ検索パス(<$MTTagSearchLink$>)についての質問です。

現在、MTをインストールしているドメインと違うドメインでブログを公開しています。
例:
MT→ttp://abc.com/mt/mt.cgi
ブログ→ttp://123.com/blog/

MT3.3を以前使っていたのですが、MT3の場合「<$MTTagSearchLink$>」を使うと、
MTがインストールされているURLを返していたのですが、
MT4ですとブログのURLが返ってきてしまいます。

どうにかしてMTがインストールされているURLを返したいのですが、設定方法などをご存知の方いらっしゃいましたら、アドバイスお願いいたします。

Aベストアンサー

MT4は新規インストールされたのでしょうか。(MT3.3のmt-config.cgiを戻すのではなく)

MT4の新規インストールでmt-config.cgiの自動生成を選択すると、mt-config.cgiのCGIPathは多分
http://blog.aklaswad.com/2007/000107.html
こちらの記事にあるような、ホスト名を省略した書き方になっていると思います。
mt-config.cgiのCGIPathをhttp://~からのパスに変えれば、MTがインストールされているURLを返すのではないかと思います。(他のCGIのURLも変わってきますが<トラックバックURLとか)

QFX取引を時間指定で売買

FX取引で、指値や逆指値とかの指定ではなく、時間指定で売買できるFX業者やFXシステムはありますか?
例えば、USD/JPY1万通貨をxx月xx日xx時xx分に買い、yy月yy日yy時yy分に売り決済。といった具合の注文指定ができるシステムは存在しませんでしょうか?

Aベストアンサー

今のところ、聞いたこともないし、経験もありません。
普通の取引と少し違う、外為どっとコムの「外貨プラス」なら原則として注文翌日の午後2時(東京時間)のレートで新規、決済になります。これは、スワップをもらうための取引で、ショートはできません。

Q高速道路での5MTと6MT

掲示板などを見ていると
6MTは高速道路で有利とか、高速道路を良く走るのなら6MT
などの書き込みを見るのですが
ギア比をみると6MTの5速が5MTの4速、6MTの6速が5MTの5速
に対応しているように思えるのです。
6MTはクロスなので場合によっては5MTのほうが回転数が低いんじゃないかと思います。

ではなぜ6MTは有利なのでしょうか?
高速道路はギアチェンジなんかしないので5MTで十分。
6MTが楽しいのは高速より一般道だと思うのですが。

私の勘違いだとして、高速用に6MTが設定してある車種はありますか?

あと、ギア比を見るとATのほうが低いのですが
高速道路を一定速度で走った場合、MTよりATのほうが燃費が良いのですか?

たとえばRX-8ですと、時速100kmで走った場合
5MT,6MT,6AT(4AT)のどれが一番エンジンの回転数が低いですか?

質問が多くてすみません。答えられるものだけでもお願いします。

Aベストアンサー

通常は6速が高速用ですね
↑5MTの5速より守備範囲が少しハイギアードになっている
1~5(6)の各ギアの配置は車によって多少違いますが
クロスと言っても普通は1~3(4)がクロスって事です
5や6は高速巡航用にハイギアードになっているのが普通です
この時に高速を5速1個でカバーするのと5・6の2個でカバーするのとじゃどっちがより容易にハイギアードにできるかは…すぐにわかりますよね
5MTの5速を6MTの6速と同じギア比にしたら…4と5が凄い離れちゃいます
ちなみに5や6までクロスしていたらレース車並みの超クロスですよ

RX-8は特殊です
4ATの4速、5MTの5速、6MTの6速で考えた場合に
速度が同じなら回転数は「低い←4AT<5MT<6MT→高い」です
この車の場合はミッション以外にもグレードによってファイナルが違うのでそこも勘案した総合で考えると上記のようになります

またこの車は6MTは9000レブ、5MT・4ATは7500レブです
さらに6MT車はエンジン特性も全体的に高回転よりになっています
って事でメチャメチャ簡単に言ってしまうと6MT用エンジンは5MT・4MT用エンジンより気持ち程度ですが回し気味にして全体的に少し上の領域を使って走るのが丁度いいって事です

そんな訳で5MT車より6MT車の方がローギアードになってるんですね
この車の場合、エンジンが結構違うんでそこも考慮しないといけません

通常は6速が高速用ですね
↑5MTの5速より守備範囲が少しハイギアードになっている
1~5(6)の各ギアの配置は車によって多少違いますが
クロスと言っても普通は1~3(4)がクロスって事です
5や6は高速巡航用にハイギアードになっているのが普通です
この時に高速を5速1個でカバーするのと5・6の2個でカバーするのとじゃどっちがより容易にハイギアードにできるかは…すぐにわかりますよね
5MTの5速を6MTの6速と同じギア比にしたら…4と5が凄い離れちゃいます
ちなみに5や6までクロスしていたらレース車並みの...続きを読む

Qmt4で欧米時間、欧州時間、アジア時間の期間を下のサブウィンドウに色違

mt4で欧米時間、欧州時間、アジア時間の期間を下のサブウィンドウに色違いのバーで表示させるインジケーターを使ってる人をYOUTUBEでみたのですが、なんという名前のインジケーターかどなたか教えてください。
お願いします。

Aベストアンサー

おそらく、Hinosinさんが動画でみたものとは違うと思いますが、
自分で似たようなもの作ってますのでよければ足を運んでみていただければと。

http://ameblo.jp/ftlabo-kirin/entry-10656414515.html
http://ameblo.jp/ftlabo-kirin/entry-10654562590.html


人気Q&Aランキング

おすすめ情報