前回で[EasyLanguage]BracketOrderTicketで損切りや利食いをしよう利食いや損切りの設定の仕方を紹介しました。
これで、現実に近いシステムトレードが、ほとんどできるようになったかと思います。
今回は、バックテストの精度をあげる方法として、手数料を追加する方法を紹介します。

手数料を設定しよう

「チャート分析」ウィンドウで、普段通り、ストラテジーを挿入しましょう。

その後、「ストラテジーの設定」から「すべてのプロパティ」をクリックして、「ストラテジープロパティ」ウィンドウを開きましょう。
一般タブに、「取引手数料」というのがあるので、「金額指定」として、下に金額を入れてください。
手数料は、基本のままでは、100万円毎に432円(税込)なので、そのように入力します。
これで、手数料の設定は完了です。(実はここにはある落とし穴があるのですが、後程解説します。)
バックテストをしてみよう
手数料の設定が完了したら、バックテストしてみましょう。
と言っても、ストラテジーを挿入した時点でバックテストしてくれているので、パフォーマンスを確認しましょう。

「表示」タブから、「ストラテジーパフォーマンスレポート」をクリックしてください。

パフォーマンスレポートに、「総手数料」というのがあるので、それを確認してください。
その金額が、売買手数料となります。
ここで、「総取引数」に着目してください。
総取引数は、画像では117となっています。
この取引数とは、買い取引と売り取引の合計回数が示されています。
買い取引とは、買いから入る注文で買い注文+売り注文で1とカウントします。
逆に売り取引は、空売り+買い戻しで1とカウントします。
したがって、総取引数の2倍が本当に取引した回数なので注意してください。
たしかに、手数料は117×2×432=101,088円となり、パフォーマンスレポートの数字と一致します。
ここで確認してもらいたいのですが、みなさんの手数料体系はどうなっていますか?
基本のままでは1日の約定金額が100万円ごとに432円取られることになっていると思います。
つまり、買い取引でも、1日で買い取引が完結して、かつ、その合計金額が100万以下なら432円しか取られないはずです。
ここに、手数料の落とし穴があります。
ただ、パフォーマンスレポートに出ている手数料は、もっとも高い場合で計算されています。
つまり、実際には、もうちょっと手数料が少ないはずです。ということは、バックテストの結果は今よりも多少良くなる可能性があるということです。
したがって、バックテストのプロパティで手数料を追加する方法は、ぴったりと合うわけではないですが、それなりに使えることがわかりました。
取引数の検証
こう思う方もいるかと思います。
そこで、今のストラテジーから空売り注文をなくして、バックテストしてみます。
もし、パフォーマンスレポートの売り取引が、「空売り+買い戻し」なら、その欄は計算されないはずです。

上の画像のように、ストラテジーを変更します。そして、再びバックテストをしてみた結果が下の画像です。

予想通り、売り取引がゼロとなりました!
これで、買い取引は買い注文+売り注文で、売り取引が空売り+買い戻しということがわかりました。
一方、もうひとつ疑問が残ります。
それは、買うだけかって、まだ売り注文が出ていない分も買い取引にカウントしているのでは?という疑問です。
これは、その通りです。つまり、手数料を1回分多く計上している可能性がある点に、注意が必要です。
より正確に手数料を出すには?
厳密な手数料を知るにはどうすればよいかというと、プログラム上でどうにかするしかありません。
例えば、取引回数をカウントする手があると思います。
手法としては、
売買条件に合致して、売買が行われたら、カウントを1増やす文を作ります。
このときに、Date関数で日付を入手しておいて、現在の日付とひとつ前の取引での日付が同じ、かつ、売買代金が100万以下であれば、カウントしないようにしておけば、手数料算出用の取引数がわかるようになります。
こうすれば、さらに現実に近い手数料が算出できます。
さいごに
手数料の設定をしましたが、だいたいの金額ならわかるという結果になりました。
ただし、多めにカウントされる傾向にある点に注意です。
ちなみに、トレーディングアプリによる最適化(バックテスト)、通称OptimizationAPIでも、結果として取引数をアウトプットすることが可能です。

OptimizationAPI自体のやり方は、次々回記しますので、参考にしてください。
次回は、その他の細かい設定方法に関して紹介します。
