FXシステムトレード(元初心者)奮闘記

初心者だった私がFXの裁量トレードを始め、システムトレードに転向した物語

このブログは、引越ししました。  → 新しいブログへ
新しいブログでも、過去の記事をご覧いただけます。

12.MT4用EA開発時代

★新しい順に並んでいます。興味がある以下のタイトルをクリックしてください。
MT4用EA開発時代 - EA開発で考慮すべき点について1
MT4用EA開発時代 - 独自インジケータを作ってみた
MT4用EA開発時代 - MT4対応FX業者を選ぶ

MT4用EA開発時代 - EA開発で考慮すべき点について1

このエントリーをはてなブックマークに追加 mixiチェック

さて前回は、 旧SmoothMADIシステム 」の「ウォークフォワード分析 」結果を纏めようとしたところ、設定ミスがあり再スキャン中でForexTester2が使えないので、MT4EA開発に向けて、SmoothMADI 」「SmoothMABand 」という2つの独自インジケータを作っている様子を書きました。
今回は、実際にEAを開発するにあたっての方針について考えている様子を書いてみたいと思います。

売買ルールの検証としてのForexTester2でのプログラミングとは異なり、MetaTrader4(以下MT4)でのEA開発では、実際に通信しながら売買し、売買リスクが発生し、異常系やタイミングのズレへの考慮、そして運用性を考慮しなきゃいけない点。

今までForexTester2でのプログラミングでは多少異常発生時のプログラムがいい加減でも大丈夫だったのですが、今回のMT4でのEA開発では、大切なお金を本当にやりとりすることになるので、ここをおろそかにするととんでもない事になりそう。

なので、EA開発において売買ルール以外で考慮すべき観点を纏めてみた。

【EA開発時の考慮すべき観点】
---------------
1.コンテンジェンシー・プラン/可用性
2.EAプログラム品質
3.障害対策
4.タイミングのズレ
5.運用性
6.処理性能
---------------




なんか堅苦しいなぁ。。

では、さっそくひとつずつ。

-------------------
リンク先 にも書いている通り、不測の事態が発生したときどうするか、という事。
トレードで言い換えると、たとえば以下の様な例。

●不測の事態の例
 1.FX業者の破産
 2.サーバ障害による長時間トレード不可
 3.MT4クライアントをインストールしているPCが立ち上がらない。
 4.自宅ルータ等の通信機器が故障
 5.インタネットプロバイダが長期間不通。
 6.ライフラインの長時間停止
 7.自宅が火災や地震により崩壊

つまり、上記の様な事が発生した場合、どう行動する予定にしておくのかを決める必要があるという事。

上記「1.」に関しては、FX業者と契約するときに、約款等を熟読して、FX業者が破産したときにどうできるのかを理解し、リスクが顕在化した時にとる行動を事前に纏めておく事しかないかな。なので、FX会社選定はかなり気をつけなければ。。。これは前々回の記事 に書いた通り。

上記「1.」を除いて、ポジションを持っていなければ、トレードに関して言うと問題無いけど、問題はポジションを持っている時。つまり、リスクにさらされた状態で何もできないという状態。
#だからかならずストップロスを入れておくんですけど。。

じゃぁ、「2.」以下についてどうするかというと、「ポジションを閉じ、新規ポジションを取らない事」に注力することに。
→サーバ側障害はFX業者の問題なので、FX業者の資質や約款次第。
 他に関しては、トレードに関して言うと、ウチらの問題なので自分で考えなきゃいけない。

上記「3.」~「5.」に関しては、機器類を二重化して、いざというときに待機系に切り替えれる様にする。FX業者によっては、もしかしたら電話でポジションを決済することを依頼する事ができるのかもしれないけど、そこまではまだ知らない。。。。
私はとりあえず、モバイルノートPCを持っているので、後は以前の災害対策の記事 で検討しているモバイル通信のUQ-WiMAXを用意する予定。

問題は、「6.」「7.」が発生したとき。たとえばインタネットカフェにいって、とにかくポジションをはずすとか、ライフラインが生きている所に移動して、ノートPC+モバイル通信でポジションを閉じるとか、公衆電話でFX業者に連絡するとかを決めておく。
で、この時無いと困るのが、FX業者への連絡先とアカウント情報。これは、紙に印刷して非難袋にいれておくとか、貸金庫に入れておくとか。

つまり有事の際は、ポジションを閉じる事に注力するという方針。
-------------------

これがEA開発に一体なんの関係があるのかというと、EAのプログラミングでも「障害対策」も同じ考え方を踏襲して、システムとして一貫性を持たせる必要があるという点。

そして、対策の思想がしっかりしていても、プログラム(つまりEA)が意図した通りに動かなければ意味が無い。。なので、EAのプログラム品質も重要。

【EAプログラム品質】
-------------------
今回はForexTester2でのバックテスト時とは異なり、サーバと通信しながら売買をし、その結果に取り返しがつかない。「あ、プログラムミスで破産しちゃった!」とかは、バックテスト中はいいけど、実際の売買では目も当てられない。。

「プログラム品質」はそのテーマだけで本が書けるぐらいのテーマ。かなり大雑把に言うと、具備すべき機能を日本語で設計書として書き出し、レビューする。次にその設計書を元にプログラミングして、目視によるプログラムチェック。次は、最初に書いた設計書を基にテスト項目を洗い出し、テストを実施。テストで出たプログラム・ミスについては、同じ様なミスが無いか、チェックする。

しかし実際問題、個人でここまでするのは大変なのも事実。
なので、それぞれの工程を意識しつつ、形式にこだわらずにするのがポイントかも。
--------------------






相変わらず面白くない内容だ。。。


こんどはちょっとEAのプログラミング話題に入っていきます。
つぎは、具体的なエラー発生時処理の考え方についてです。

FXメタトレーダー実践プログラミング」にもエラー時処理の例が書かれていて、サンプルもダウンロードできるみたいなんですが、書籍に載っているサンプルソースを見ると、正直、エラー発生時処理は実際の運用には耐えられない。
#書籍としてはとても参考になって良いのですが、そのまま使うとダメってこと。

【障害対策】
--------------------
異常系のプログラムを書くためには、使用する関数が返すエラーコードの一覧を把握すること。これらについてひとつずつ、発生した場合にどういうリスクになるかを考え、そのリスクを回避/軽減するにはどうするのかを考える。

ちなみに、実際問題エラーコード毎にプログラムで分岐していたら大変なので以下の様に分類してみた。

●エラーコードの分類例
 1.プログラムミス起因によるもの
 2.原因不明なエラー
 3.サーバ/ネットワーク障害起因によるもの
 4.サーバ処理遅延に起因するもの
 5.サーバ側とクライアント側のデータ不整合によるもの
 6.実は問題ないもの

で、今回どうする予定かというと。
・上記「1.」、「2.」の場合
  エラーが発生した処理は中断。その後は、新規発注しない様にする。
  ポジションを閉じる/トレーリングは継続。要は意図しない動きをしているプログラムは
  何をしでかすかわからないから危険という事。
・上記「3.」、「4.」の場合
  一定期間スリープしたときリトライする。リトライアウトした場合は、以下の様な感じ。
  ・新規オーダ発注で発生した場合 → あきらめる。
  ・トレーリングで発生した場合
   発注よりかは眺めにリトライするけど、リトライアウトしたら、やっぱりあきらめる。
  ・手仕舞いで発生した場合
   新規発注と比較して長時間続ける様にする。リトライアウトした場合、MT4を
   再起動しても大丈夫な様に、手仕舞いに失敗した場合は、その旨を大域変数やファイル
   に保存しておいて、再起動したら手仕舞いロジックが動き始めれる様にする。
   そして、手仕舞いが成功するまで新規発注しない。
   (一定間隔でPC再起動が必要だし、別の要因でMT4が終了してしまう事も想定)
・上記「5.」の場合
  ・RefreshRates()APIにて、クライアント側の情報を最新化してリトライ。
・上記「6.」の場合
  特になにもしない。
--------------------

今回の方針が正しいかどうかは、実際EAを動かしてみないとわからないけど、「コントロールできるのはリスクだけ」という言葉を考えると、用心するに越したことは無い。
#コンピュータシステムはなんでもそうだけど、プログラムの大半は異常系に関するロジック。きっとEAも同じ。









そんだけリスクが嫌なら

FXするな

という話もありますが。。。
あのパルドもマーケットの魔術師 システムトレーダー編」で、「リスクが嫌い」と言ってるし。。


そして記事が長くなった事を理由に、中途半場な状態のまま「FXシステムトレード初心者奮闘記」は、MT4のEA開発での「EA開発で考慮すべき観点」が続くのでした。
#「ウォークフォワード分析 」のスキャン5/5完了!集計作業しなきゃ。


【Ads by Google】

MT4用EA開発時代 - 独自インジケータを作ってみた

このエントリーをはてなブックマークに追加 mixiチェック

さて前回は、 旧SmoothMADIシステム 」の「ウォークフォワード分析 」結果を纏めようとしたところ、設定ミスがあり再スキャン中でForexTester2が使えないので、MetaTrader4(以下MT4)によるEA開発を進めるべく、FX業者を仮決めしたところまで話しました。
今回は、さっそく「旧SmoothMADIシステム 」のMT4EA化に向けて、「SmoothMADI 」「SmoothMABand 」というMT4で2つの独自インジケータを作っている様子を書いてみたいと思います。

さて、MT4をインストールして、過去データをたくさん取り込みたかったが、前回仮決めしたC社は、過去データが少ないところらしい。

でも、よくよく考えてみると、トレード手法という意味では、ForexTester2で検証すればいいので、過去データ取得に労力をかけることはやめることに。

なので、さっそくMQL4なるMT4のインジケータやEAを開発する為の言語を勉強せねば!
といっても、過去使い倒したC言語と似ているという事もあるので、ForexTester2よりかは構文的には結構楽。

とはいいつつも、相変わらずヘルプは英語だし、MQL4が故のクセも知りたいので、MT4関連書籍2冊を購入。


FXメタトレーダー入門」  2,940円







累積していく購入書籍代と新規購入したPC代、

元が取れる日が来るのだろうか。。。


さっそくインストールにあたって本を読むと、我がPCのOSであるWindows7(書籍ではVista以上と書かれていた)だと注意点が!!
#実はそもそもMT4自体がWindows7を正式サポートしてないっぽい。。

インストールするときは、デフォルトのインストール先ではなく、”C:\Users\[ユーザ名]\”の配下にMT4をインストールしなきゃいけないらしい(セキュリティ制御の関係らしい)。

そして、MT4からMQL4プログラミングをする画面を起動。
そして、新規作成で表示されるウィザードに従って、テンプレートが完成。

そしてパコパコと、プログラミングを進めていると。




落ちた。。。



直前に保存してあったソースでプログラミング再開。




落ちた。。。

どうも、文字列をCtrl+Cでコピーしたとき落ちるっぽい。
そしたら、マウスの右クリックのメニューから文字列コピーしたらどうなる?




落ちた。。。


Windows7/64bitが原因かなぁなんて事をTwitterでつぶやいていると、またしても神の手が!!
IMEの設定がよくないみたい。
#確かに本にも書いてあった。。。

つまり、「Micro Office IME 2010」だとダメみたいで、
「Microsoft IME」への変更が必要とのこと。





購入した本に書いてある事。

ちゃんと読めよ


その後は、わりとサクサクとプログラミングが進んで無事独自インジケータ2つとも完成!

でも2点程、ForexTester2と構造が異なる事が。

それは、ForexTester2で独自インジケータを作る場合、バーが進む毎にコールバックされる関数に、インデックスが引数指定されてくるが、MT4にはそのインデックスが無い!

そこで登場するのが、「IndicatorCounted()」なる関数で、過去変化しなかったバーの数が返却される。これと、Barsを組み合わせて自分でループ処理を書かなければいけないって所。

もうひとつは、チャート上非表示にしたい途中計算用のバッファを作るときの構造。MQL4の通常のバッファ準備方法ではダメで、別途ForexTester2みたく、バッファを作成するAPIの呼び出しが必要な点。

あとは言語は異なるものの、考え方はほぼ同じ。

そして、楽勝!なぁんて思いながら「FXシステムトレード初心者奮闘記」は、MT4のEA開発へと進むのでした。これが思った以上に難敵とも知らずに。
#いつも助けていただいている方、ありがとうございます!
#まだ「ウォークフォワード分析 」のスキャン、4/5実行中。


【Ads by Google】

MT4用EA開発時代 - MT4対応FX業者を選ぶ

このエントリーをはてなブックマークに追加 mixiチェック

さて前回は、 旧SmoothMADIシステム 」のウォークフォワード分析 」結果の纏めをしようとしたところ、設定ミスがあり再スキャンする羽目になったところまで話ました。
今回は、スキャン中はForexTester2で何もできないので、ついにMetaTrader4によるEA開発に進む準備を始める様子を書きたいと思います。

以前の記事 で書いたとおり、MetaTrader4(以下MT4)でのEA開発と評価をしようと思ったら、まずは実際にトレードするFX業者を決めないと!
(FX業者によって微妙にMT4のアプリが違うし、過去データも実際取引するFX会社のものがいいし)

この時想定していたのは、VPS上でMT4を動かす予定。
ということで、以前探していたときに見つけたサイトを改めてみてみた。

【MT4対応FX会社一覧】
--------------------
--------------------

そして、A社がなんと、一定金額を口座に入れておけばVPSがタダ!
しかもよく名前を聞くところ。
そして、Twitterで「A社にしよっかなぁ」とつぶやいたところ、ありがたい事に、

「X系列はやめておいた方がいい」

というアドバイス!!!
さっそく、A社がX系列かどうかサイトではわからず、先ほどの方に質問したところ見分け方を教えてもらった。感謝!!!



そして消え去るFX業者数社。。。


さて、次は以下のクチコミを見てみた。

【FX業者クチコミサイト】
--------------------
--------------------

ん???

逆指値/指値で発注するとき、10pipsとか20pips離さないといけない??
スリッページがひどい?サーバが不安定??




そして、候補から消えるFX業者達。。


すると、評判よさげで上記制約が無く、クチコミでも評判が良い海外のB社を発見。




しかし、金融庁に登録してない。。。

気になって金融庁のHPを調べてみると、警告書の発出を行った無登録の海外所在業者 」の一覧にB社の名前が。。。

評判もいいし、X系例でもないし、捨てがたいB社。
B社のHPから、今後どうする予定なのか聞いてみると、以下の回答。

「 弊社弁護士からの回答では一切問題ないとのことで現状続行です。
 注意: 弊社は海外業者のため一切日本で営業できないのは存じてます。
 弊社XX(EU)の金融庁元で運営してるので一切日本の規制外ですのであえて
 何かアクションを起すということもございません。


警告書発出されてるのに、

何もアクションとらないの???


次は、金融庁のHPから「警告書を発出したFX業者が、正当性を主張し、金融庁に登録しなければどうなるのか?」と正式質問。

●金融庁(電話!)回答
 「業者にどういう措置がとられるかはケースバイケース。日本国籍の顧客と取引をした場合、
  業者が罰せられる可能性がある。
  顧客側も該当業者と共謀していれば罰せられる可能性がある。これ以上詳細な事は弁護士
  に相談すること。」




 法的にどうなるのかわからんのやったら

 警告書出すなよ。。。

そして、またB社に、金融庁からの回答内容にもとづいて、B社にとっての法的正当性根拠を正式質問してみると。

●B社回答
 「現状法的正当性など弊社弁護士からは特に説明があるわけではございませんので
  回答できません。登録等も必要があればその時検討する状態です。」



会社の正式回答としておかしいやろ。。

なぜ金融庁に登録しない。。





そして候補から消えたB社。



そして改めてFX業者一覧を眺めてると、C社の存在を発見!!!
金融庁に登録済み!
しかも、X系列でもないし、クチコミみても評判よさげやし、指値/逆指値の10pips制約無いみたいやし!!しかも信託保全100%! しかも、条件整えばVPSもタダ!!!


C社に決定!!!

と、Twitterでつぶやくと、






「信託保全、大丈夫と思ってるの?」


旨のアドバイス。。。
ナヌ??信託保全100%でも安心できないのか???

そして改めて信託保全に関してネットを探してみると。

【信託保全関連記事】
----------------
----------------


色々落とし穴が。。。。

C社に正式質問してみないと。。。。



そして予想外の、FX業者選定難航に戸惑いながら、「FXシステムトレード初心者奮闘記」は、「ウォークフォワード分析 」のスキャンをしながら、とりあえずC社からMT4をダウンロードして使い始めたのでした。#アドバイスしていただきありがとうございました!!


【Ads by Google】
記事検索
掲示板
●ForexTester2情報交換掲示板

FXのバックテスト用ソフト「ForexTester2」に関する情報交換掲示板です。積極的なQ&A等の投稿を期待しています!
最新コメント
Ads by Google

livedoor プロフィール
このブログを購読
ランキング投票
面白ければ、両方クリック↓お願いします!




ブログ為替レート
当ブログ関連製品
当ブログの「MT4関連ソフト」が製品化されました

MT4用EA作成ライブラリ「COMFFERED MT4 EA Framework」安心できるオリジナルMT4用EAを作ろう/MT4障害監視・復旧試行ソフト「COMFFERED MT4 Health Checker」FX自動売買中のシステム障害対策をしよう
タグクラウド
QRコード
QRコード
 
  • ライブドアブログ