• ベストアンサー

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

MT4で時間を指定するにはどのようにすれば良いでしょうか。 例えば、取引を日本時間で午前9時から午後3時の間に指定して、午後3時の時点で建て玉があった場合は手仕舞いできるようにしたいのです。 MT4付属EAの、MACD Sampleで時間指定する場合は、どのようなプログラムをどの位置に書けば良いのでしょうか。 時間指定をいろいろ変えてバックテストを行ってみたいと思っています。 プログラムは、トレードスタジアムで少しやった程度ですので、MT4のプログラムは初心者のレベルです。よろしくお願いします。

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

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

回答が大変遅くなってごめんなさい。 実は、私も悩んでいました。 MACDのサンプルプログラムを下の方までよく読んでみると、マジックナンバーが16384となっているので、これに統一しなければ決済されません。 よって、私が書いた最初の部分で、 # define MAGIC 0001 という部分を、 # define MAGIC 16384 としていただければ、うまくいくかと思います。 一時やってみてください。

mottry
質問者

お礼

再度のご回答ありがとうございます。 ご指示のようにマジックナンバーを統一し、5・15・30・60分足でバックテストしたところ、無事に9時から15時の間に取引を行い、ポジションが残ったら15時にクローズすることができました。 この時間制限を使用して、いろいろな条件でバックテストしてみようと思っています。 ちなみにUSDJPNの5分足で2009年10月から2010年1月までをバックテストしましたらきれいな右肩下がりのグラフになりました。ひょっとして売りと買いを逆にすれば良いのかと思いました。 MT4のEAは、まだまだ理解が足りませんのでこれからも勉強していきたいと思っています。 今回は、ご親切に教えて頂き有難うございました。感謝しております。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

当方のメタトレーダーの調子が悪く、きちんと実験できませんでしたが、おおよそ、以下のような感じでいかがでしょうか。 このプログラムでは、あくまでも、チャート上の時刻(サーバーの時刻)が基準になります。日本時間とは必ずしも一致しないので、ご注意ください。 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) 以下、サンプル通り。

mottry
質問者

お礼

早速のご回答ありがとうございます。 チャートの時刻と日本時間のずれを考慮して設定すれば良いのですね。 上記のとうりにEAを作り、2009年10月から今年1月末迄でバックテストを行いました。 時間はチャートの時刻で9時から15時にしてみました。USDJPNの1分足です。 結果を見ますと、15時に手仕舞いしないで翌営業日に持ち越すものがあります。そして翌営業日に持ち越すものは負けが多いようです。 しかし、当日に手仕舞いするものは、すべて勝っています。 エントリー回数が意外と少ないようです。(4ヶ月間で8回) まだ、詳しく見直していませんので、見直しを行いいろいろな時間設定でも検証したいと思っています。 詳しいプログラムを教えて頂き大変助かりました。ありがとうございました。

mottry
質問者

補足

プログラムを見直し、USDJPNの15分足で同じ期間でバックテストしてみました。 取引回数は44回あり、新規の注文は9時から15時の間に行われていますが、決済は15時を過ぎることが多々あります。(時間はチャート時間を使用) 15時までにポジションが残っていた時に、15時で決済されないようです。どのようにすれば15時で決済されるのでしょうか。 もう一度教えていただけないでしょうか。よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MT4で取引時間を指定する。

    MT4である時間帯だけ取引したいのですが EA化するには、どのようなプログラムを組めばいいのでしょうか。 MT4のMovingAverageで日本時間が始まる前後に取引し 欧州時間になる前に決済したいと思っております。 よろしくお願いします。

  • MT4の自動売買について

    今後MT4を使ってFXのトレードを始めるつもりです。現在は、trading pointでデモ口座を開設してバーチャル取引をしていますが、最初から利用できるEAのソフトに「MACD」といったEAがあります。設定方法はネットで確認して試したのですが、自動で売買されているように思えません。 デモだからですか?それとも、使い方が違っているのでしょうか? EAの利用のしかたを知っているかた、EAについて詳しいかた、どなたか教えて頂けませんか?

  • MT4 シストレに関して

    MT4で自分スタイルのインジケーターを組合わせたのでが、それを「Stragegy Tester」でバックテストをし、過去何年間の結果を調べたいと思っておりますが、「Stragegy Tester」のEAを開いても、デフォルトで入っている、MACD sampleとMoving Averageしか出現しません。 フリーで見つけた私がよいと思うインジケーターをEAから出してバックテストを行うにはどういった設定をすればよろしいでしょうか。 ちなみにそのインジケーターは売買の際に↑↓がでるようになっています。 以上、よろしくお願い致します。

  • MT4について質問です。

    MT4について質問です。 現在、VPS内でMT4を稼働させ、EAを稼働させています。 この状態でVPSのMT4と同じIDで自宅のPCでMT4を起動させ、裁量トレードするということはできますでしょうか? VPSのEAの不具合などにつながることはありますでしょうか? VPSで稼働させている通貨と、PCで裁量トレードする通貨は同じ通貨です。 同一IDを複数PCからログインする時の注意点などがありましたらご教授願います。

  • 宅配便、時間指定

    宅配便のお届け時間指定で、 「午前中」にすると、早いと何時に着くのでしょうか? あと、時間指定しても、ズレはあると思いますが、 「午前中」に指定したのに午後に来ることって よくあることですか? 回答お願いします。

  • MT4 注文に要する時間

    MT4について質問です。 30分足の始値で売買するごく単純なEAで運用しています。 例えば22時丁度に売買シグナルが出た場合、 私のEAでは22:00:13に発注処理が行われています。 つまり13秒の遅れがあるのですが、これはMT4上では通常でしょうか??

  • 発送後の時間帯指定。

    本日午後に東京から福岡に荷物を発送しました。(3日午後)5日午前に届くようにしたかったのですが、時間帯指定を忘れてしまいました。 発送後に時間指定はできるのでしょうか? 教えてください。お願いします。

  • cronによる時間指定メール送信

    毎日午前8時、正午12時、午後4時、午後8時、午後10時に時間指定でメールを飛ばしたいです。どういうソースを組めばよいでしょうか?

    • ベストアンサー
    • PHP
  • FX:指定した時間の高値・安値を返すプログラムを教えてください。(MT4)

    指定した時間の高値・安値を返すプログラムを教えてください。 具体的に言うと、、21時から23時の間の高値・安値です。 少し調べたところ、iHighest,iLowestやiBarSHiftの関数で値を出せると思ったのですが、 この関数では、指定の期間が、”現在から何本前の足から何本分の期間”といったように時刻で指定できないみたいで困っております。 ※MT4を使用しております。

  • 時間指定で時間内に来なかったら割り引いていくれる?

    だいたいの配送屋さんで時間指定とか速達みないなオプションがあると思うんですけど、 それが時間に間に合わなかったときって割り増し料金は返済してくれるんでしょうか? A地点からB地点に荷物を2つ同時に送ったのですが、 一つは次の日の午前着指定にして、もうひとつは普通配送にしたところ 普通配送のほうが次の日の午後に、午前着指定のほうは次の日の夜に届きました。 今の時期は配送が混んでいて遅れるとは聞いていたのですが なんで割り増し料金のほうが遅く着くのかは謎です。 こういった場合って請求したら割り増し料金分って返却してくれるものなのでしょうか? それともクレーマー扱いされるんでしょうか?