2011/05/26

MT4用EA開発時代 - 開発環境/テスト環境/本番環境のMT4構成を考える



さて前回は、開発中のMT4用EAテスト計画と、落とし穴等について書きました。今回は、本格的なテスト開始に向けて、最終的なMT4の環境について検討している様子を書いてみたいと思います。

まずは前提としているHW構成は、以前の記事の通りで、下図。

【ハードウェア構成】
-------------------
-------------------

この環境には2台のPCがあって、今後EAを追加していったり、バグ対応等をしていく事を考えると、少なくとも、以下の4つのMT4用環境が必要。

【MT4環境】
-------------------
1.MT4用EA開発用環境
  EAを開発して、テスターでテストするまでの環境
2.デモ口座用テスト環境
  テスターでできるテスト内容は限られるので、より本番に近いテスト環境として、
  デモ口座でのテストをする環境
3.トレード用環境
  実際のトレードを行うための環境
4.バックアップ環境
  トレード用PC故障時のトレード用環境
-------------------

これを絵にして詳細化すると、下の図
 
【論理構成図】
-------------------
下の図の水色の四角毎にMT4をインストールする。
-------------------

で、2台のPCを用いてどうしたいかというと。

【やりたい事】
-------------------
1.「デモ口座テスト用MT4」と「トレード用MT4」は24H動かしたい
  2台ともPCを立ち上げっぱなしにはしたくないので、
  「デモ口座テスト用環境」と「トレード用環境」は同じPCにインストール
  することに。
  当然気になる事は、本当のトレードを行う環境に、デモ口座用MT4
  を同時起動しても大丈夫なのか、という事。
  しかし、メモリさえ足りていて、テスタで動かさなければ、問題なしと判断した。 
  実際、メモリは結構あまってるし。
2.EA/独自インジケータのソースもコンパイル済みモジュールも
  一箇所でマスタ管理しておきたい。
  開発/修正したMT4用EAを「デモ口座用テスト環境」や、「トレード用環境」に
  リリースする時は、NASで一元管理したファイルを使いたい。
  そうしないと、リリースミスの原因になるから。 
3.EA修正時の運用
  「開発用MT4」でEAを開発してテスターでテストした後、「デモ口座テスト用環境」で
  テストしてから、「トレード用環境」にリリースしたい。
  つまり、MT4用EAを修正した場合に、テスターだけでテストしても、
  テスターでは動かないロジックが多数あるので、より「トレード用環境」に近い
  「デモ口座用テスト環境」でのテストをしてから、「トレード用環境」へのリリースを実施したい。
4.トレード用ノートPC故障時は、普段使い用PCで代替できる様にしたい
-------------------


次に、環境ごとに検討している事を整理すると。


【開発用MT4】
----------------------------------
EAの開発と、テスターでのテストをする為の環境。
利用するMT4は、実際のトレードで使用するFX業者のもの。
この環境以外では、EAのプログラム修正は行わない。
----------------------------------

【デモ口座テスト用環境】
-------------------
デモ口座テスト用環境は4つのMT4をインストールする。
本番トレード開始以降は、1つのMT4は常時起動。他の3つは、テスト実施時のみで
その内1つだけ起動してテストする。(トレード用MT4への影響を極力すくなくする為)

1.「テスト用設定1」デモ口座用MT4
  主に細かいロジックのテストをする為の環境。実際にトレードするFX業者のMT4を使う。
  ・タイムフレームを短くする事で売買回数を増やし、サーバ障害時売買時のタイミング
   のズレや、サーバ障害時の動作確認。
  ・特定のロジックを通すテストの為に、プロパティ値を極端な値にして評価。
2.「テスト用設定2」デモ口座用MT4
  基本的に本番相当の設定でEAを常時動かしておく環境。実際にトレードするFX業者の
  MT4を使う。デモ環境と本番環境との差異を見るための環境。
  プロパティ値や、通貨ペア、タイムフレームをトレード用環境と同じにしておく。
  また、複数EAを同居させる。
3.「テスト用設定3」デモ口座用MT4
  共通部品の汎用性を確認する為の環境。
  ただし、実際にトレードするFX業者とは異なり、MODE_FREEZELEVELが設定されてい
  るFX業者のMT4を使用する。
  売買回数を増やすために、タイムフレームを短くしてEAの細かい動作確認をする。
4.「テスト用設定4」デモ口座用MT4
  共通部品の汎用性を確認する為の環境。
  ただし、実際にトレードするFX業者とは異なり、ECN系列(OrderSend時に
  SL/TPを指定できない)FX業者のMT4を使用する。
  売買回数を増やすために、タイムフレームを短くしてEAの細かい動作確認をする。
----------------------------------

【トレード用環境】
-------------------
1.EA毎にMT4を起動する(トレード用MT4-1~3)
  今のトレーディングプランでは1つのEAで4通貨ペアをトレードする
  予定だけど、今後は3つ程度のEAを同時に動かす予定。
  3つ同時にMT4を起動しようとすると、インストールディレクトリも
  別にしないといけない。
  ●EA毎にMT4を起動する理由
   ・今後作るEAも全て1つのMT4で動かしたとすると、それぞれ複数通貨ペアでトレードする
    事を踏まえると、以前の記事で書いたコンテキスト・ビジー(ERR_TRADE_CONTEXT_BUSY)
    になる確率が高くなってしまうので、それを軽減したい。
   ・EAバグの影響範囲を局所化したい
    あるEAのバグが原因で、暴走したり、MT4自体が落ちてしまう状況を考えた場合に、
    その影響を他のEAに与えたく無い。
   ・起動するMT4の数はある程度抑えておきたい
    EA毎且つ、通貨ペア毎にMT4を起動させる案もあるが、同じEAをたくさんの
    ディレクトリにインストールが必要になり、運用が煩雑になるし、煩雑になれば、
    それだけ作業ミスも発生しやすくなる。
2.MT環境障害対応用のMT4環境も用意しておく(トレード用MT4-4)
  何らかの問題で、特定のトレード用MT4が起動しなくなってしまった場合に備えて、
  予備用のMT4をインストールしておき、通常は起動しないでおく。
  これは、一つのMT4が起動しなくなっただけで、正常に動いているMT4まで、
  バックアップ環境に切り替えるという事をしたくない為。
-------------------

【バックアップ環境】
-------------------
1.基本的には「トレード用環境」と同じ
  トレード用環境のバックアップ環境なので同じにしないと。。。
  バックアップ用なので、1つのMT4という考え方もあるけど、
  トレード用ノートPC故障時の「トレード用環境」からのデータ移行を
  考えると、同じにしておかないと、手順が複雑になってしまう。
2.ExpertAdvisorは無効化しておく
  ・いかんせん普段使い用のPCなので、うっかり起動してしまうと良くない。
  ・実際に切り替える場合に、NASにバックアップしているファイルを
   バックアップ環境にコピーしてから起動させるが、他にも起動後に必要な
   設定が出てくるかもしれない。
-------------------

ざっくりとは、以上。
やっていくうちに変わるかもしれないけど。。

で、こういう環境にした場合にいろいろと課題が。

【課題】
---------------------
1.異常を通知するメールについて
  異常通知メールを携帯に転送している。普段は携帯メール受信時は着信音をオフにしてるが、
  本番に入ったら、メール着信音を鳴らす予定。
  この時、「デモ口座テスト用環境」からのメール通知なのか、「トレード用環境」から
  のメール通知なのかを区別できる様にしないといけなかった。
  #デモ口座からの異常通知で音を鳴らしたくないので。

  なので、「デモ口座テスト用環境」と「トレード用環境」で、メール送信元を変更する。
  そして、メールヘッダからも区別できる様にする。

2.MT4プロセスダウン検出
  本来監視したいのは、「トレード用環境」のMT4プロセス。
  でも以前の記事検討していた方法では区別できない。。。
  区別しないという選択肢もあるけど、悩ましいところ。
  #MT4が落ちた時には、一瞬重くなるし、どっちにしても1回PC再起動
   した方がよさそうなので。

3.MT4回線切断検出
  これも以前の記事の方式だと、前述「2.」と同じ事が言える。
  でもこの場合は、「デモ口座テスト用環境」と「トレード用環境」を区別したい。
  「デモ口座テスト用環境」の場合はどうでも良いけど、「トレード用環境」
  でのこの現象が発生したら、状況を注視したり、場合によっては、FX業者に問い
  合わせしないといけないので。
  実際にトレードするサーバのIPアドレスが変わらなければ、それで検索する
  方法もあるけど、まだ実際の口座を開いていないので、不明。
  あまり変わらないのであれば、サーバのIPアドレスで検索する方式に。
---------------------








本当に一人でする事か?




ちなみに、最近してたこと。

EAの共通部品だけで2000行あるソースを印刷して、ざぁ~っと目視確認したら、40件ぐらい修正箇所が出てしまった。。。
改善箇所とか、保守性に関する内容もあるけど、バグもそれなりに。。

そして、本来のトレードルールは4H足だけど、トレード回数が少ないのでデモ口座でもあまり評価にならない。なので、前述の通りに5分足の「デモ口座テスト用環境」を一つだけ作ってEAを動かしはじめたら、







警告メールの嵐



ほとんどがリトライアウトだったので、リトライ回数を増やした。







だけど

原因不明な

バグが3件










先は長い



そして、原因不明なバグに悩まされながら「FXシステムトレード初心者奮闘記」の「MT4用EA開発時代」は目先のバグ修正作業に向かうのでした。。
#MT4はなかなか手ごわい。。。

0 件のコメント:

コメントを投稿