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