指定した曜日や時刻にEAを稼動、指標発表前後は停止するインジケーターExpertAdvisorStop公開(フリーソフト)

   2017/01/18

ExpertAdvisorStop

ExpertAdvisorStopとは

その名のとおり、EAを停止するインジケーターです。

停止するだけでなく、停止時にポジションを閉じる機能も付いています。(付属のスクリプトで閉じます)

【ExpertAdvisorStopの機能・特徴】

  • 曜日と時刻を指定してEAの稼動時間を制御します
  • 指標発表の前後にEAを停止することができます
  • 停止時にポジションを閉じて、待機注文の削除ができます
  • 上記の機能はすべてON/OFFできます
  • フリー(無料)です

※最新バージョンは1.04です。1.03以降をご利用の方は「指定した曜日や時刻にEAを稼動、指標発表前後は停止するExpertAdvisorStopのバージョンアップのお知らせ」に記載しております手順にてアップデートを実行して下さい。

曜日と時刻を指定してEAの稼働時間を制御

曜日時刻指定

曜日指定(DayOfWeek)は0が日曜日、1が月曜日・・・6が土曜日となっています。

複数指定可能です。

上図のように1,2,3,4とすると、月曜日から木曜日まで稼動する指定になります。

開始時刻(StartTime)には16:00のように時刻指定します。終了時刻(StopTime)も同様です。

※指定時刻はパソコンの時刻です。MT4サーバーの時刻ではありません。(通常、日本時間で設定します)

上図の場合は16:00から23:00までEAが稼動します。

稼働中は背景が黒(通常の背景色)になり・・・

EA稼動中

停止中は青になります。

ExpertAdvisorStop

パラメーターで色の変更も可能です!

また、曜日・時刻の設定は10パターンまで登録できますので、例えば月~木の16時から23時をパターン1として登録し、パターン2は金曜日16時から21時まで。さらにパターン3に月~水の0時から3時まで稼動させる。といった設定が可能になっています。

指標発表の前後にEAを停止

稼働時間内にあっても指標発表の時には停止したい…ということがあると思います。

指標発表停止機能パラメーター

指標の重要度(High,Medium,Low)によって停止の有無と停止時間の制御ができます。

IsNewsHighがtrueの場合、高い重要度(High)の指標で停止します。

NewsHighMinsBeforeが「指標発表前に停止する時間(分)」で、NewsHighMinsAfterが「指標発表後に停止する時間(分)」です。

上図のように両方60とすると、指標発表前後60分停止します。

MediumやLowも同様です。

上図の設定の場合、中程度の重要度(Medium)では前後30分停止。低い重要度の場合は前後15分停止します。

「低い重要度は停止する必要が無い」場合には、IsNewsLowをfalseに設定します。

要人発言(Speak)を指標発表に含める場合にはIsNewsSpeakをtrueにしてください。

指標発表で停止中の場合は背景がグレーになります。

指標発表停止時

こちらもパラメーターで背景色を変えられます。

停止時にポジションを閉じて、待機注文を削除

ポジションを閉じる機能

CloseAllPositionsをtrueにすると全てのポジションを閉じて、待機注文は削除します。

falseにするとCloseやDeleteを行いませんが、既にポジションを持っている場合や待機注文がある場合には停止しません

(EAがポジションをクローズするなどして、注文が無い状態になった時に停止します)

ダウンロード

以下のリンクからダウンロードしてください。

ExpertAdvisorStop.zip

※クリックでダウンロードされない場合には、右クリック→対象をファイルに保存 等でダウンロードしてください。

ExpertAdvisorStopのインストール

1.ダウンロードしたファイルを解凍してください。以下のファイルが入っています。

Indicators\ExpertAdvisorStop.ex4 (本体)

Indicators\FFCal_miniJP.ex4 (指標発表取得インジケーター)

Script\AllClose.ex4 (ポジションクローズ用スクリプト)

Files\FFCalTransJP.csv(指標発表取得インジケーター 日本語化ファイル)

2.MT4を起動し、上部メニューのファイル(F)からデータフォルダを開くをクリックします。

データフォルダを開く

3.開いたフォルダ(エクスプローラー)からMQL4→Indicatorsの順に開き、Indicatorsフォルダに1.に入っていたExpertAdvisorStop.ex4とFFCal_miniJP.ex4をコピーします。

4.MQ4→Scriptフォルダを開き、Scriptフォルダに1.に入っていたAllClose.ex4をコピーします。

5.MT4を再起動するか、ナビゲーターウィンドウの罫線分析ツール上で右クリック→更新するとナビゲーターウィンドウにExpertAdvisorStop.ex4が表示されます。ナビゲーターウィンドウのスクリプトにAllCloseがあることも確認してください。(無い場合にはスクリプト上で更新してみてください)

インジケーター更新

 

6.ナビゲーターウィンドウに表示されているExpertAdvisorStopを任意のチャートにドラッグ&ドロップします。

パラメーター設定(DLL使用)

全般タブ:必ず「DLLの使用を許可する」にチェックしてください。

パラメーターの入力:以下の説明に従って必要な設定をしてください。

7.ナビゲーターウィンドウに表示されているAllCloseをExpertAdvisorStopを適用したチャートにドラッグ&ドロップします。

正しく動作していれば適用したチャート上で右クリックすると「スクリプトの削除」というメニューが表示されます。

スクリプトの削除が表示されます

※「スクリプトの削除」をクリックしてしまうとAllCloseが終了してしまいますので、クリックしないようお願いします。

パラメーター説明

CloseAllPositions:trueにすると停止時にポジションを閉じ、待機注文を削除します。falseにすると閉じません。

※注文が残っている場合、停止しません。

UseBackgroundColor:trueにすると背景色変更機能が有効になります。(falseにすると停止時に背景色が変わりません)

StartBackgroundColor:動作中の背景色です。既定値はNoneです。(通常の背景色になります)

StopBackgroundColor:停止中の背景色です。既定値はMidnightBlue(濃い青)です。

UseNewsStop:trueにすると指標発表時停止機能が有効になります。

StopNewsBackgroundColor:指標発表による停止中の背景色です。既定値はDimGray(濃い灰色)です。

IsNewsHigh:trueにすると重要度高(High)の指標発表で停止します。

NewsHighMinsBefore:重要度高(High)の指標発表何分前に停止するかを指定します。

NewsHighMinsAfter:重要度高(High)の指標発表何分後まで停止するかを指定します。

IsNewsMedium:trueにすると重要度中(Medium)の指標発表で停止します。

NewsMediumMinsBefore:重要度中(Medium)の指標発表何分前に停止するかを指定します。

NewsMediumMinsAfter:重要度中(Medium)の指標発表何分後まで停止するかを指定します。

IsNewsLow:trueにすると重要度低(Low)の指標発表で停止します。

NewsLowMinsBefore:重要度低(Low)の指標発表何分前に停止するかを指定します。

NewsLowMinsAfter:重要度中(Low)の指標発表何分後まで停止するかを指定します。

IsNewsSpeak:trueにすると要人発言(Speak)も停止対象になります。

DayOfTheWeekExample:曜日指定の説明文です。変更の必要はありません。

UsePattern0:trueにするとパターン0が有効になります。

DayOfWeek0:パターン0の曜日指定です。空の場合は全ての曜日を対象にします。複数指定も可能です。(カンマ区切り)

※0が日曜日、1が月曜日、2が火曜日・・・6が土曜日

※既定値に0,1,2,3,4と記載されていますが、複数指定の例を入力しているだけです。削除してかまいません。

StartTime0:パターン0の開始時刻を指定します。必ず半角文字で入力してください。

EndTime0:パターン0の終了時刻を指定します。必ず半角文字で入力してください。

※既定値の16:00、21:00は入力例として設定しています。削除してかまいません。

UsePattern1:trueにするとパターン1が有効になります。

※以下はパターン0と同様のため割愛します。

※条件はORです。いずれかの開始~終了条件に合致している場合にEAが稼動します。

補足

指標発表時停止機能を使用する場合には、同梱のFFCal_miniJPインジケーターをご利用になると良いと思います。

日本語表示が良い場合には同じく同梱しましたFFCalTransJP.csvをMT4データフォルダーのMQL4のFilesの下において、FFCal_miniJPのパラメーター「JPTranslation」をtrueにするとある程度日本語化されます。

注意事項

リアル口座でご利用になる前に、まずはデモ環境等で動作をご確認ください

リアル口座でご利用になる場合、デモ環境等で確認・設定したパラメーターを「保存」し、リアル口座環境で「読み込み」してください。(手入力で誤った設定をしていてリアル口座で想定外の動作をした…という例があります(経験談))

当ツールを利用したことに関連して生ずる損害について、一切責任を負いません。(自己責任でお使いください)

当ツールはフリーソフトです。個人使用・業務使用に関わらず自由にご使用いただいてかまいませんが、著作権は放棄しておりません。当ツールの販売は禁止いたします。

配布等を行っていただいても構いませんがインターネット上でダウンロードさせたい場合には「当サイト(当ページ)からダウンロードする(リンクする)」ようお願いいたします。

もし不具合等ございましたら当記事のコメント欄またはメールでご連絡ください。

メールアドレス:tradeandsoftwareあっとま~くgmail.com

 

※あっとま~く は @ に置き換えてください。

開発後記(雑記)

このツールはfai氏のプログラムおよびブログにより短い期間で開発することができました。

fai氏には感謝、感謝です。

参考:(続)指定時間帯のみにEAを動かすスクリプト…。

EAで指標発表等を回避するには?

同梱「指標インジケーター」のFFCal_miniJPもfai氏の修正によるもの…ですが、そのままでは動作しなかったため幾つか修正を加えました。(Build600以降で動作しなくなった問題)

一番苦労したのはORとANDの優先順位変更によって発生した問題でした…(最初、優先順位による不具合と気づかずに間違った修正をして迷走…)

インジからスクリプトを叩く

「インジケーター」から「スクリプト」を叩こう、という方針は最初に決めていました。

「スクリプト」だとMT4を再起動した際に再設定されず、インジケーターでは「クローズ」処理できない。

どうしようかと悩んで調べていると、どうやら「インジケーター」から「スクリプト」は呼び出せる!ということだったので。

しかし、実際にやってみるとスクリプトが呼び出せない。

fai氏の記事「indicatorからscript を実行する。」どおりにやっても動かず。またBuild600での問題っぽい?

英語で検索していたら「Script Calling Library for MT4 build 600 and later – library for MetaTrader 4 」という記事があって、これなら動くかと思いきや…これも動作せず。

原因は不明ですが、DLLのソースコードを見ていたらfai氏が作ったソースコード同様、PostMessageしている箇所があったので「このあたりが原因かなぁ」と思いつつ、こんなの解析しても解決にどれだけ時間がかかるかわからないので…

MT4「indicator からscript を実行する。」の仕様変更?Build604対応。を参考にショートカットを作ってインジケーターから「キーを押す」という古典的な手法に落ち着きました。(わざわざショートカット作ったのはそういう経緯があってのことだった…というわけです;;)

現在のMT4でも動作するスマートな叩き方をご存知の方がいましたら教えてください!

スクリプトを叩く方法に不具合が・・・(2016年7月19日追記)

キーボードのショートカット実行では例えばMT4を「最小化」して他のウィンドウを表示している時などは実行してくれないという不具合が発生していました。

そこで、「停止命令ファイル」をインジケーター側で作成し、スクリプトがこのファイルを検知してクローズ処理を実行するように改修しています。

競合(?)製品

既に同じものがあるのであれば作る必要が無いので、開発前に似たようなツールが無いか調べました。(fai氏の記事もそのときに確認して参考にしました)

「僕が欲しい機能が全て揃っている」というものがなかったので作ることにしたわけですが。その時に見つけたツールがこれ。

EAストップくん3 価格 4,980円

うそ・・・だろ・・・

高いっ!そして強引に止めるらしく、ポジションが残った状態でEA停止する危険が・・・!

これが4980円なら、僕の作るソフトも・・・などと、ちょっと考えたりもしましたが(笑)

fai氏のプログラムで使えるところをパクッたりして作ってるくせに金取るのは、他人のふんどしで相撲を取っているようなのでやめました。

時間指定して停止するだけならfaiさんの(続)指定時間帯のみにEAを動かすスクリプト…。で公開されているスクリプトを使えば済むことですし。

その他開発ツール等

開発ラボ」に開発したツールの一覧があります。

ご興味がございましたら、ぜひご覧ください。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント一覧

  1. 妹尾英男 より:

    CloseAllPositionsが機能しないのですが・・・。

    • emija より:

      インストールに間違いはありませんか?(スクリプトのショートカット設定等)

      • 妹尾英男 より:

        お世話になります。
        インジ、スクリプトの設定など間違いないと思います。

        1:ポジションを有していない場合、EAは設定のとおり停止・稼働をしています。
        2:ポジションを有している場合、停止時刻が到来すると背景色は変化するが、ポジションの
          クローズ・EAの停止が実行されません。
          その際、ツールバーのチャートより表示中のインジからEASTOPを選択し、内容を変更せず
          OKで閉じるとポジションのクローズ・EAの停止が実行されます。

        有用なソフトで是非使用したいのでよろしくお願いします。

        • emija より:

          >ツールバーのチャートより表示中のインジからEASTOPを選択し、内容を変更せず
          >OKで閉じるとポジションのクローズ・EAの停止が実行されます。
          これが良くわからないのですが・・・
          スクリプト実行中に再度スクリプトを実行しようとするとポップアップが出るので、それのことでしょうか…

          1.エキスパートログや操作履歴にエラーが出力されていませんか?
          (なんらかの理由でCloseに失敗している?)
          2.暫く待っても解決しませんか?
           ※実はクローズできていない場合、15秒待って再度クローズ処理を試行する…というプログラムになっています。

          • 妹尾英男 より:

            お手数をおかけします。

            >これが良くわからないのですが・・・
            EASTOPのインジを実行中のチャートから右クリックで「表示中のインジ」をクリックするとEASTOPが表示され、それをクリックすると編集画面になるが内容変更せずOKで閉じたときです。

            >1.エキスパートログや操作履歴にエラーが出力されていませんか?
            見当たりません

            >2.暫く待っても解決しませんか?
            停止時刻から数十分経過しても変化ありません。

            よろしくお願いします。

  2. 妹尾英男 より:

    追記

    >エキスパートログや操作履歴にエラーが出力されていませんか?
    停止時刻にスクリプトがLOADされず、上記インジ操作の時点でスクリプトがLOADされているようです。

    • emija より:

      なるほど・・・
      動作(停止処理/クローズスクリプト)は正しく動いているようです。
      再試行処理がダメっぽいですね…
      以降はメールでやりとりさせてください。
      (メールいたしました。もし届いていなかったら迷惑メールに分類されているかもしれませんので、ご確認をお願いいたします。)

  3. たかし より:

    非常に良いツールだと感じていますが、如何も正常に稼動しないようで大変残念で仕方ありません。

  4. つだ より:

    指標や発言は全通貨のもの
    (FFCal_miniJPのReportAllPairsをtrueにして表示されるもの)を対象として、
    停止させるようにはできないでしょうか?

    • emija より:

      ちょっと確認してみましたが規定値はtrueになっているのでExpertAdvisorStopはtrueで実行している・・・はずです。
      想定した動きにならないとしたら別の原因かもしれません・・・。
      FFCal_miniJPでReportAllPairsを使用している箇所は1箇所だけで、falseだったらskipをtrueにしているようなので
      このあたりを弄ってみるとどうでしょうか。(FFCal_miniJPの970行目あたり)
      ちょっと汚いですが989行目のskip=true;を入れた直後、989行目にskip=false;追記して強引にskipの値を書き換えてしまえば他の要因でskipがtrueになっていた場合も対応できるのでは・・・と思いました。
      ※本格的に対応する余裕は無いので・・・すみません;;

  5. つだ より:

    規定値はtrueということで、こちらの環境を見なおしてみます。

    ExpertAdvisorStopをありがたく使用させていただいておりますので、
    FFCal_miniJPのソースからいじるのは少々難易度が高そうです。
    ご返答ありがとうございます。

  6. yanshi より:

    MT4のver4、build1010では正常動作しますでしょうか?
    こちらの設定が悪いのか、常に動作停止状態(背景が濃い青)になってしまいます。
    ログ上は正常動作しているように見えます。
    確認していただけましたら幸いです。
    よろしくお願いします。

    • emija より:

      一応確認してみますが‥
      「今まで動いていてが、MT4のアップデートした途端動かなくなった」ということでなければ、恐らく設定の問題ではないでしょうか‥。

  7. kk より:

    質問します
    NewsHighMinsAfterなどのタイマーが正確でなく60分としても動かず。
    800分以上など大きく設定すると作動します。ただし10倍ではなく設定不可。
    指標の時間は60分以内であっています
    800などの数字を1ずつ数字をずらすとバックの色が変化するので動いてはいるようです

    それと、MT4のナビゲーターにあるアイコンの◇が灰色になっています

    mt4のバージョンはver4、build1010
    以上原因わかりますでしょうか。無料なのに申し訳ありません。

    • emija より:

      そういった現象は見たことがありません…(ご報告があったのも今回が初めてです)
      一応、後ほど確認はしてみます。

      ナビゲーターのアイコンが灰色になるのはソースコード(.mq4)が無いためです。
      実行プログラム(.ex4)のみ提供しておりますので、これは仕様になります。

  8. kk より:

    emijaさん回答ありがとうございます。
    たびたび質問失礼します。
    2016年本日10月7日のcad,usdの失業率のカレンダーですが、MT4に出したカレンダーはなぜか現地時間の8:30amに部分的になっています。すると日本時間の21:30pmに合わせても作動しません。
    画像を添付します。
    http://imgur.com/a/fCgpg
    http://imgur.com/a/4K0jj
    こちらの設定ミスでしたら失礼します

    • emija より:

      MT4に表示されるカレンダー(FFcalインジケーター)は私の開発したものではないのですが・・・
      ※ForexFacotryが開発し、他の方が日本語対応やバグ修正を行い、私がBuild600以上で動くように手直ししたものです。
      間違ったデータを取得することがあります。(私もみたことがあります)
      私が調査したところでは、ForexFactoryから取得するデータに間違いがありました。
      (ForexFactoryのWebサイトで確認したデータとは異なるデータがFFcalで取得されました。
      FFcalはForexFactryからXMLデータで取得しているのですが、このXMLに誤りがありました。)
      正直な所、ForexFacotryのXMLデータは精度がいまいちだと思っています・・・;;

  9. yuki より:

    はじめまして。EAを落とさせていただきました。
    こちらのEAですが指標の時間の時差などは考慮しなくていいのでしょうか?
    内部のインジケータで日本時間で指標が取得されていて実行しているPCがGMT+9であれば問題なさそうですが。

    • emija より:

      特に記にする必要は無かった…はずです。※ご利用の際には必ず動作確認してからお使い下さい。

  10. こうすけ より:

    大変有益なツールですね。
    重要度だけでなく、USD,GBPなどの国名でもSTOPの対象にする・しないを選べると、さらにいいですね。ドル円のEAがカナダの重要ニュースで止まってしまうといったことを避けられますから。
    よろしければご検討ください。あまりお高くならなければ(笑)、有償でもいいと思いますので。

    • emija より:

      コメントありがとうございます。
      国名でのフィルタも良さそうですね。考えてみます。
      ただ、このツールについてはこれ以上改修するつもりはなく・・・
      FFCalの精度に疑問がある(誤ったデータを取得することがある)ので、他の方法で実現できないかな…と思ってました。
      余裕ができたら色々調べてみようと思っています。

  11. yuki より:

    指標による停止が動作していないようなのですが上記kkさんなどの現象と同じでしょうか・・・?UseNewsStop、IsNewsHighをtrueにし前後60分などとしても背景が灰色になりません。
    また、時間帯による停止は不要で指標時のみ止めたい場合UsePattern0も全てfalseにすればよいのかと思いましたが背景が濃紺になってしまい止まってしまうようです。これは仕様でしょうか?回避策としては曜日をブランクにして0:00~23:59で設定しています。

    • emija より:

      あぁ・・すみません。別件に時間を取られていて調査を進めていませんでした。
      先程試してみたのですが、普通に重要度Highの60分前に背景が灰色になって自動売買停止しました。
      念のため、特に設定を変えずNYのVPSで動かしてみましたが、こちらも問題なしでした。
      エラー等出ていなければ原因の特定は難しいです‥

      >これは仕様でしょうか?
      はい。

      >回避策としては曜日をブランクにして0:00~23:59で設定しています
      23:59にすると、23:59を過ぎた直後に停止した…記憶があります。(1分停止して0:00から稼働します)
      24:00とすると24時間稼働したと思います。※日付時刻の型で判断していないので24:00としてもエラーにはならないはずです。
      (念のためデモ口座等で動きを確認してみてください。)

      • yuki より:

        返信ありがとうございます。
        指標については特にエラーは出ていませんでした。
        NYのVPSでも動作したということはサーバGMTとローカルGMTの誤差でもなさそうですね。
        もう少し試してみます。

        時間帯による停止ですが確かに23:59にすると1分停止しました。
        24:00で試してみます。ありがとうございました。

  12. taka より:

    はじめまして。
    日本時間で21時から翌3時まで稼働させたい場合、どう指定すればいいでしょうか。
    2100-0300?、2100-2700?
    あと、オーダークローズせずに停める設定があれば嬉しいです。
    TP,SLがあるのですが、ナンピンを勝手にするのを停めたいので

    • emija より:

      21:00-27:00でよかったと思いますが、うまくいかなかったらパターンを2つ使って別々に指定してみてください。(21:00-03:00ではダメというのは記憶しています。。)
      オーダークローズせずに停める設定は・・ないです・・。
      クローズせずにEAだけ停止するという行為は危険と判断して、EAだけ停止して放置されるようなことのないように作ってしまいました。
      時間停止だけでしたら開発後記(雑記)に記載したfai氏のスクリプトを使ってもよいとも思います。
      こちらは設定で制御できたと思います。

  13. 匿名 より:

    海外VPSを使用しているのですが
    日本時間に設定しEAの時間指定で、16:00~23:00にしたのですが
    日中でもポジションを持ってしまいます
    その場合はどうしたらいいのでしょうか?
    サーバー時間で設定したほうがいいのでしょうか?

    • emija より:

      VPSの時刻で設定してください。(MT4のサーバー時間ではありません。海外VPSを使用しているのでしたら日本時間でもないはずです)

  14. たか より:

    はじめまして。
    大変有意義なソフトを提供していただきましてありがとうございます。
    ただ当方の設定が悪いのか、設置するといきなり青色の画面で自動売買停止のままでそれがずっと続きます。
    UsePatternはすべてfalseにしております。
    アドバイスいただけたら助かります、よろしくお願いします。

    • emija より:

      開発してからかなり間が空いているので詳しくは覚えていませんが・・
      一つはパターンを登録しなければならなかった・・・かもしれません。

      説明を見ながら色々試してみてください。
      (すみませんが無料ソフトについてはサポート対象外となっております。有料ソフトのサポートだけで手一杯でして・・・)

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。