EAのプログラム設計というか概念については過去にも書いた記憶があるのですが、再度僕が思う理想の構成図を書きます。




MQL言語に限らずプログラムというのは修正を繰り返し成長するものです。


初期リリース、バグ対応、新機能追加が繰り返し行われることを想定しておいた方が良いとされています。


仮に1つのEA内部が100個のファンクションで構成されていた場合、1つの修正による影響範囲を全てテストしなくてはいけません。


影響範囲を自分で網羅できていれば良いという物でも無く、想定外の処理が行われる可能性もあるので、修正の影響を最小限にとどめておく必要があります。


このコードは触っていないからテストが不要とまでは行きませんが、最低限何通りかのテストをするだけで大丈夫という確認だけで済ませることが出来ます。


僕は部品化できる部分は外出ししてEAへの影響を出来るだけ減らす設計をします。


画像にあるイメージでプラグイン的な感じですね。


エントリー専用インジケーターはエントリータイミングだけを知らせる役目で、EAは発生したシグナルで新規エントリーするだけの仕組みにして出来るだけシンプルな構造を心がけています。


僕の中で、EAはトレードルールを司る部分だと思っているので、MAのクロスが云々とかそういうテクニカルな処理は外出ししてしまいます。


資金の10%以内の取引で制御とか、複利計算、利益確定や損切りの幅設定、時には難平とか運用部分の処理だけを実装した物がEAにするべきだと思います。


こう言う仕組みを作っておけば、シグナル部分を修正しても入出力だけEAと合わせておけば好きなだけインジケーターを修正できるし、テスト範囲も限定されますので、メリットが大きいです。


シグナルの発生条件を修正したのに、損切り幅の設定値を再確認するのはナンセンスですよね?


こう言う考え方です。


MQL開発者の方々の参考になればと思います。


この記事が気に入ったら
いいね ! しよう

Twitter で