仕事の流儀~PART3

前回の記事の続きです。

 

たとえば、ポジションを一斉に決済するためのプログラムをオリジナル関数として利用する場合、

上のようなプログラムを書きます。

 

通信エラー対策も組み込まれており、少し複雑ですが、簡単に説明しますと、

OrderSelect()関数によって注文を選択し、注文がなければ決済プログラムを終了し、注文があれば決済を行います。

 

そのときエラーなどにより決済に失敗したときは10秒間のリトライ処理を行います(上のフローチャートの青丸の部分)。

 

一方、決済に成功したきは、再びOrderSelect()関数によって次の注文を選択し、決済を行います(上のフローチャートの赤丸の部分)。

 

このようにして、すべての注文が決済されるまで、「注文の選択」と「注文の決済」が繰り返されます。

 

しかし、このオリジナル関数は、複数のポジションをとるロジックならば問題ありませんが、ポジションを1つしかとらないロジックの場合には、かなり無駄な処理をすることになります。

上のフローチャートのように、最初の注文選択で決済が成功したら、直ちに決済プログラムを終了した方が効率的ですよね。

 

つまり、

上のプログラムのように、チケット番号を取得したらbreakによってfor文を抜けてしまえばよいわけです(オリジナル関数としてではなく、スタート関数内に直接記述しています)。

 

また、チケット番号がすでに特定しているロジックであれば、for文内の注文選択そのものが不要ですよね。

 

とすると、

上のプログラムだけで十分なわけで、かなり効率アップを図ることができます。

 

さらに、トレード用ではなくバックテスト用のEAであれば、通信エラー対策なんて要らないので、

これだけでいいわけで、検証にかかる時間を大幅に節約できます。

 

このように、プログラムをする場合には、それぞれのロジックやニーズに具体的に合うようにきめ細かな対応が必要であって、出来合いのオリジナル関数をペタペタ貼り付けただけの”インスタントEA”では、稼働が重くなったり、場合によっては思わぬ事故の原因にもつながり、好ましくないと言えます。

 

それゆえ、私の場合、EA作成にはどうしても長い時間がかかるのです。

 

でも、それが私の仕事の流儀なのです。

 

「EAなんてラーメンみたいなものさ。インスタントで十分だよ。それより早く作って~。」

 

という方は、ぜひ他の業者にご依頼くださいませ。m(__)m