このページは下の↓記事の続きです。
参考文献:株式投資自動売買で儲ける システムトレード「トレードステーション入門」 (ブルーガイド・グラフィック) ムック 実業之日本社
(トレードステーション入門 P103 サンプルソース3 より)
はらみ足のブレイクアウトでエントリーする
いよいよ、株式自動売買(システムトレード)の投資戦略っぱくなってきました。
サンプルソース3では、トレステ [ トレードステーション ・ TradeStation ]に標準で搭載されている投資戦略の「インサイドバー(はらみ足)」を、一部変更しています。
変更の詳細は、書籍を参照願います。(この記事だけでも、十分に理解はできると思います)
〇プログラムコード
//後に解説を記載しています。 (バーは日足を想定)
<ELのプロクラムコード ここから>
[IntrabarOrderGeneration = false]
//この説明はややこしいので今回は割愛します。(今回の本題と外れるため)
//呪文だと思ってください。
If InsideBar(High,Low) and Close > Open then
Buy (!(“InsBarLE”)) next bar High[1] stop;
//はらみ足を形成している かつ 当日の日足が陽線 だったら
// 買う 次の足で 前日の高値に逆指値で
If InsideBar(High,Low) and Close < Open then
Sellshort (!(“InsBarSE”)) next bar Low[1] stop;
//はらみ足を形成している かつ 当日の日足が陰線 だったら
//売る(買いポジションがある場合、ドテンして売りポジションを建てる) 次の足で 前日の安値に逆指値で
If InsideBar(High,Low) and Close = Open and close[1] > Open[1] then
Sellshort (!(“InsBarSEdoji”)) next bar Low[1] stop;
//寄り引け同時線の場合 前日の足が陽線ならば
//売る(買いポジションがある場合、ドテンして売りポジションを建てる) 次の足で 前日の安値に逆指値で
//(寄り引け同時線は相場の転換点に出やすい為、売り買いを逆にしている)
If InsideBar(High,Low) and Close = Open and close[1] < Open[1] then
Buy (!(“InsBarLEdoji”)) next bar High[1] stop;
//寄り引け同時線の場合 前日の足が陰線ならば
//売る(買いポジションがある場合、ドテンして売りポジションを建てる) 次の足で 前日の安値に逆指値で
//(寄り引け同時線は相場の転換点に出やすい為、売り買いを逆にしている)
<ELのプロクラムコード ここまで>
この戦略の有効性確認
バックテストをしてみましょう。
日経225連動型上場投資信託 1321-TS 日足 で バックテストをした結果が下のパフォーマンスグラフです。
残念ながら、結果は良くありません。
チャートで売り買いのエントリータイミングを見てみましょう。
見にくいのでエントリーのタイミングに印を付けました。
収益曲線で下がり続けている(損をし続けている)1回から6回までの売買です。
これまた見にくいですね。
売買1回から3回目までを拡大します。
InsBarLE がロングエントリー(買い)、InsBarSE がショートエントリー(売り)です。
2回目のショートエントリーはともかく、転換点は捉えているように見えます。
エントリーのタイミングは良くて、手仕舞い(反対売買)のタイミングが悪いのかもしれません。
手仕舞いのロジックを追加
仮説:エントリーのタイミングは良い。 手仕舞いのタイミングを変更すれば、パフォーマンスが良くなる。
単純にエントリーした日の終値で手仕舞いをするプログラムコードを追加してみます。
テストなので、単純なコードを2つ追加です。
<追加ELのプロクラムコード ここから>
Sell This Bar on Close;
// 買いポジションがあれば終値で決済
BuyToCover This Bar on Close;
// 売りポジションがあれば終値で決済
<追加ELのプロクラムコード ここまで>
改良した戦略の有効性確認
少しは良くなりましたが、まだまだ使える戦略ではありません。
エントリーのロジックも一部変更します
〇はらみ足のひとつ前の足が陰線で、はらみ足が陽線(同時含む)の場合、買い転換点と考え買いエントリー
〇はらみ足のひとつ前の足が陽線で、はらみ足が陰線(同時含む)の場合、売り転換点と考え売りエントリー
※むしろこちらのロジックのほうが、一般的だと思います。
<変更したELのプロクラムコード ここから>
If InsideBar(High,Low) and Close[1] < Open[1] and Close >= Open then
Buy (!(“InsBarLE”)) next bar at market;
If InsideBar(High,Low) and Close[1] > Open[1] and Close <= Open then
Sellshort (!(“InsBarSE”)) next bar at market;
<変更したELのプロクラムコード ここまで>
改良した戦略の有効性はどうでしょうか
今一つですが、改善の余地はまだまだありそうです。(良くなる可能性がある)
今日のところはここまでにしておきます。
お疲れさまでした。