2011/06/26

MT4用EA開発時代 - 共通部品「ahfw」のベータ版バージョンアップのお知らせ



さて前回は、ブログ更新が滞ったので、小ネタテーマとして「大域変数(Global Variables)」の内部動作の仮説と、そのバックアップについて書きました。今回は、以前ベータ版リリースしたMT4用EA共通部品「ahfw」バージョンアップのお知らせと、EA以外の課題について書いてみたいと思います。

まずさっそく、共通部品「ahfw」のベータ版バージョンアップから。

【共通部品「ahfw」のベータ版Ver1.01リリースのお知らせ】
-----------------------------------
1.ダウンロード
  以下のリンクをクリックすると、40MBぐらいのzip形式ファイルのダウンロード
  が始まります。
  → ahfw0101.zip(40,627KB)

★★ バージョンアップしました。最新バージョンは以下のHPにあります 2011/6/30 14:10★★
  → 「MT4用EA開発用共通部品「ahfw」

2.リリースメモ(前回からの差分)
  ・今回EA開発にあたって、ソース修正が必要な箇所はありません。
   新しい「ahfw.mqh」を「include」フォルダにコピーし、リコンパイルするだけでOKです。
  ・ドキュメントは、EA開発後に運用するための内容を追記しました。

 A.共通部品「ahfw」変更点
   1.init()関数でエラーを検出した際は、start()関数が動作しない様に変更
   2.start()関数冒頭でIsTradeAllowed()チェックをしていたのを削除
   3.OrderDelete()時に「ERR_TRADE_TIMEOUT/142/143」が返却されたが、実際は処理が成功
    していた場合、クリティカルエラーとなり、新規発注停止状態となってしまう
    バグを修正
   4.OrderClose()後に、OrderSelect(SELECT_BY_TICKET)がFALSEの場合は、クリティカル
    エラー扱いとなる様に修正。
   5.OrderDelete()後に、OrderSelect(SELECT_BY_TICKET)がFALSEの場合は、成功扱いに
    なる様に修正。
   6.ログ出力で、実際と異なる出力をしていたバグを修正
   7.エラー発生時のログ出力時に、チケット番号や通貨ペアを出力していなかった箇所があったため、
    出力する様修正
   8.ロジック上、バグ以外では発生しない条件となった場合に、警告エラーとしていた箇所が
    あったため、クリティカル・エラーとなる様に修正
   9.EAが使う共通関数の引数チェックで、明らかに使用方法が間違えているケースで、警告エラー
    となっていたが、方針と異なるため、クリティカルエラーとなる様に修正
 B.「ahfwユーザーズ ガイド」変更点
   1.「5.開発したEAの利用」の章に、以下を追加
    ・「5.2 メール通知を受信した場合」
    ・「5.3 運用手順について」
   2.「3.4 デモ口座/ライブ口座MT4への設定と実行」に、「チャートの最大バー数」設定
    が必要な旨追記
   3.その他誤記修正(詳細は本編改版履歴参照)
------------------------------  


要は、以前の記事で書いた課題/バグや、検証結果や課題検討を元にして、プログラムを修正したって事と、ドキュメントを拡充したという事。ドキュメント拡充ポイントは、実際にEAを動かし始めた時に、EAから通知されるメールに対してどう対処すればいいのかという話と、その他諸々の運用方法についての話。

これで、利用するだけならインストールして開発して運用するというサイクルを説明できたつもりで、今後は、本来の目的でもある、実際この共通部品が細かいレベル(エラー検出時の動作とか処理制御とか)について書き足していくつもり。

ただ、実際にドキュメントを書いていると、細かいけど気になる点もいくつか出てきた。

【気になる点】
-----------------------
1.メール通知内容が何を意味するのか、ぱっと見わかりずらい
   ドキュメントから探すのがちょっと面倒。
2.メール通知内容が、今一歩標準化されてないし、表現が不適切な点もある。
3.ECN系FX業者の場合のロジック
  成行き注文でも、OrderSend()後のOrderModify()失敗時に、OrderClose()する仕様
  にしているけど、注文約定→決済を短時間ですると損失になってしまう。
  なので、成行き注文だと決済せずに、OrderModifyをもっとがんばる方がいいのかもしれない。
  #約1ヶ月間3075トレードで4回発生した。。
-----------------------


ちなみに、「OrderSelect問題」は未解決。
まだstart()の排他制御は外してないけど、再発はしてない。

ついでに、ぼちぼち気になるEA以外の残課題。

【EA以外の残課題】
-------------------------
1.MT4プロセス障害時の対応
2.トレードサーバ長時間通信障害の通知
3.ネットワーク障害の通知
-------------------------

以前の記事で、方式の概略を検討したけど、決定的な欠点が。

何かと言うと、以前のMT4構成に関する記事で検討したとおり、1台のPCで複数のMT4を起動させている点。つまり、個々の障害を見てみると、以下の問題が。

【障害対策でダメだった理由/見直す方向の方式】
------------------------
1.MT4プロセス障害
  まず、複数のMT4を起動していたら、どのMT4が落ちたのかわからない。
  なので、どのMT4を再起動していいのかわからない。。
  あと落ち方も、ダイアログが出て停止してしまったら、プロセス自身は生きてるので、
  「tasklist」を使ったやり方だとわからない。
2.トレードサーバ長時間通信障害
  これも、上記「1.」と同様の事が言えて、「netstat -b」だと結局デモ用MTで
  障害が発生したのか、ライブ用MT4で障害が発生したのかわからない。
  #わかったところで、自宅にいなければ対処できないけど。。
3.ネットワーク障害
  そもそもトレードサーバとの通信以前に、インターネットに接続できなくなったケース。
  これは以前の通り、Messengerを起動しておいて、携帯から確認する方法。
  考慮漏れは無かったけど、方式自体が今一歩。
------------------------







今回は以上。






理由はわかりますよね。。





そして、無理やり次のブログネタを捻り出して、「FXシステムトレード初心者奮闘記」の「MT4用EA開発時代」は、「OrderSelect問題」から一回頭を離して、別の調査にいそしむのでした。
#共通部品、みんな使えてるかなぁ。。。感想もほしいなぁ。。
 

0 件のコメント:

コメントを投稿