上のようなプログラムを書きます。
通信エラー対策も組み込まれており、少し複雑ですが、簡単に説明しますと、
OrderSelect()関数によって注文を選択し、注文がなければ決済プログラムを終了し、注文があれば決済を行います。
そのときエラーなどにより決済に失敗したときは10秒間のリトライ処理を行います(上のフローチャートの青丸の部分)。
一方、決済に成功したきは、再びOrderSelect()関数によって次の注文を選択し、決済を行います(上のフローチャートの赤丸の部分)。
このようにして、すべての注文が決済されるまで、「注文の選択」と「注文の決済」が繰り返されます。
しかし、このオリジナル関数は、複数のポジションをとるロジックならば問題ありませんが、ポジションを1つしかとらないロジックの場合には、かなり無駄な処理をすることになります。
上のフローチャートのように、最初の注文選択で決済が成功したら、直ちに決済プログラムを終了した方が効率的ですよね。
つまり、
上のプログラムのように、チケット番号を取得したらbreakによってfor文を抜けてしまえばよいわけです(オリジナル関数としてではなく、スタート関数内に直接記述しています)。
また、チケット番号がすでに特定しているロジックであれば、for文内の注文選択そのものが不要ですよね。
とすると、
上のプログラムだけで十分なわけで、かなり効率アップを図ることができます。
さらに、トレード用ではなくバックテスト用のEAであれば、通信エラー対策なんて要らないので、
これだけでいいわけで、検証にかかる時間を大幅に節約できます。
このように、プログラムをする場合には、それぞれのロジックやニーズに具体的に合うようにきめ細かな対応が必要であって、出来合いのオリジナル関数をペタペタ貼り付けただけの”インスタントEA”では、稼働が重くなったり、場合によっては思わぬ事故の原因にもつながり、好ましくないと言えます。
それゆえ、私の場合、EA作成にはどうしても長い時間がかかるのです。
でも、それが私の仕事の流儀なのです。
「EAなんてラーメンみたいなものさ。インスタントで十分だよ。それより早く作って~。」
という方は、ぜひ他の業者にご依頼くださいませ。m(__)m
コメントをお書きください