1つ目の自作EAを別ファイルに関数化して再度作成する
これから何度もEAを作成しようと思っているなら1つ目のEA(初めてのEA)を汎用的な関数にして自作ライブラリ化してしまうのが早いです。
例えば、買ポジション成行注文専用の関数を作ってしまって次回以降EAを作成する際は、もうその関数を再利用することにするなど。
なので最初の段階でどんなコードでEAを作成するのかを考えてからでないとスパゲッティーコードでは関数化することも難しいので、1つ目のEAも思いつくまま作らずちゃんと考えてから作りましょう。
最初から全部を作ろうとすると大変なので、EA作成時に使ったコードをその都度関数化していけばいずれは必要な関数は全て揃うことになります。
EAだからこそ入力変数を固定にしてしまう
EAなのである程度入力変数は決まってきます。例えば、損切りpipsや利益確定pipsなどです。まぁ人によって何を外部変数にするかは違うので一概に言えませんが、、、
ついでにその変数も初期化処理を書いてしまいましょう。
OnInit()関数に書くのではなく、自作関数にして名前をまぁ【myInit()】とでもして自作EAヘッダファイルとして保存しておくと便利です。
このヘッダファイルには絶対に使うであろうグローバル変数や外部変数(入力変数)を初期化してしまいましょう。
でその外部変数を直接操作できないようにget,setメソッドを作って一緒に保存しておくと便利です。
EA作成用に関数化したファイルと変数定義用のファイルを作成する
先ほどの章とその前の章で書いたように別ファイル化してEA本体ファイルにインクルードすればOKです。
別ファイル単体でコンパイルするとエラーが出ることがありますが、本体ファイルにインクルードしてコンパイルして実行すればエラーはでません。
外部ファイルを作るに当たっての注意点
関数化するときは1つの関数の戻り値は1つにしましょう。
複数戻してしまうと関数の中身がごちゃごちゃしてわかりにくくなります。それに書いた当初は読めるコードかもしれませんが、時間が立ち再びそのコードを使用してバグを発見してしまった場合、最悪最初からつくり直すハメになるかもしれません。
あとは関数化はなるべく汎用的に書くように心がけましょう。1つの目的で引数を大量にぶち込んでたくさん戻り値を返す関数を作ってしまうと大概、その処理にしか使えないクソな関数が出来上がります。
汎用化つまり1つの関数に戻り値は1つにして何個もそういう関数を作っておいて、本体コードで合体させて作ればOKです。
それか合体用の別ファイルを作ってそれ専用にしましょう。合体ファイル専用(笑)
今回は以上になります。お読みいただきありがとうございました。