さて前回は、ブログ更新が滞ったので、小ネタテーマとして「大域変数(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 件のコメント:
コメントを投稿