EA職人のEA講座【004】意外と大変?EAはどうやって開発されているのか?
FX
EA開発工程
EA開発者は、とあるトレードのアイデアや手法を思い付いたら、その考えを言語化し、論理レベルにまで落とし込み、プログラムにし、コンピュータにも理解出来る言葉、機械語に翻訳します。物を作るときは何でもそうだと思いますが、EA開発の世界でも「こういう稼ぎ方をするEAがあったらいいな」のようなアイデアを考えたりするシステム企画、要件定義、要求定義のようなフェーズからスタートします。
その時に作成されるのが仕様書ですね。
EAの場合なら、「こういう条件でエントリーせよ。それがこうなったらエグジットせよ。」のような挙動に関する指示や要求に当たります。
スマホですと「電源OFFの状態で電源ボタンを1秒以上長押ししたら起動せよ。但しバッテリー残量が4%未満の時は起動せず警告表示せよ。」のような感じ。
ここを間違えるとそれ以降の仕事が全てやり直しになってしまう為、一番工数を掛けるフェーズです。あ、工数とは人材や時間などのコストのことです。
その仕様が決まったら今度はそれを論理レベルに落とし込みます。いわゆる設計フェーズです。
全てのフェーズに言える事ですが、誰が見ても解釈が同じになるよう出来るだけ図表を使います。
ダメな設計書程、言葉による説明が多い。特に日本語は曖昧な表現が多いですからね。それを海外にアウトソースしたらバグだらけになって返って来ること請け合いです。
そうならないためにも図(相関図やフローチャートなど)や表(状態遷移表・マトリクスなど)を駆使し、誰が見ても同じ解釈になる様工夫します。
基本設計で機能全体の枠組みを構築し、詳細設計で各機能の中身を埋めるイメージです。
設計が終わったらいよいよプログラミングです…と、ここからが本番みたいな言い方をしましたが、このフェーズが一番楽で、時間もコストも掛かりません。
何故なら、考えるべきことは設計フェーズまでで終わっており、後は設計書に書いてあることをプログラム言語に直訳するだけだからです。
単純作業なのでこのフェーズは既に機械化されており、オートコーディングと言って自動生成アプリに任せることもあります。
さて、プログラミングが終わったら今度はコンピュータが理解出来る言葉「機械語」に翻訳します。これをコンパイルと言い、コンパイラという自動翻訳機にやって貰います。
コンピュータに知能は無い
え?C言語やMQLのようなプログラム言語って機械には理解出来ないの?はい、出来ません。コンピュータは0と1、もっと言うとonとoff、更に言うと電圧の高い低いという状態により動いているだけです。
そりゃそうですよね。生き物じゃありませんから、いくら機械語と言っても本当に言葉を理解してる訳じゃない。
だからプログラム言語を0と1の情報に置換し、コンピュータはそれを読み込んで電圧を上げたり下げたりします。0と1のどちらをonと解釈するか?も、設計次第です。
このようにしてEA開発者はトレードの手法やアイデアをプログラムに落とし込み、このV字モデルの右側にあるフェーズ『テスト』に入ります。
作ったプログラムが想定通りの条件でエントリーしたりエグジットしているかの確認はもちろん、途中で動かなくなったりしないか?のテストをします。
長い道のり
その時に想定外の動き、つまりバグを見付けたら修正し、再テストします。この作業をデバッグと言います。コンピュータの中に虫が入り込み、それが原因で回路がショートし想定外の動きを見せたことから、不具合のことをバグと呼ぶようになりました。
バグをゼロにするのが理想で、当然それを目指すのですが、それでも実際に運用していたら万が一のことが起こるかも知れません。
そうなった場合でも最悪の事態、例えば思わぬロット数で取り引きしてしまう…などにならないような仕組みも組み込んでおきます。これをフェイルセーフと言います。直訳すると「失敗しても安全」ですね。
自動車やエレベーターの自動停止装置のようなもので、故障時や異常発生時でも安全側に動作させることで絶対危険な状態にならないようシステムを構築します。
これに似たものでフールプルーフと言うのもあります。フール(fool)には愚か者という意味が、プルーフ(proof)には耐えるという意味があり、つまりフールプルーフはバカが操作しても最悪なことにならないようにすることを意味します。
それらの作業が終わったらいよいよみなさんお馴染みバックテストです。長い道のりでしたね。
そのバックテストで満足いく結果が得られなければ企画からやり直し。
こうやって何度も企画~バックテストをグルグルとループし、ダメなEAは淘汰され、満足いく結果が得られたものだけがみなさんの目に触れているのです。
■私の開発したEAのコンセプトと運用ポリシー
EA職人のEA(3本の矢)はコチラ×
よろしいですか?