ストラテジーが作れないので組み合わせてみる(システムトレード)

明日、朝になって相場が開くのが恐怖でしかない。
時間がこのまま止まって日付が変わらないでほしいと切に思う。
明日になったら嫌でも含み損と向き合わなければならないから。

これほどまでに時間が残酷なものになり得るなんて知らなかった。
時を刻む音が、確実に迫りくる破産の足音にしか聞こえない。
死刑宣告された囚人や余命僅かな末期患者も、同じような心境になるのだろうか。

[引用] 専業トレーダーになって1000万損した男の末路

どんなに苦しくてもウイットに富んだ文が書けるのは才能だ、うらやましい。

「時を刻む音が・・」とか使ったことないよ。

 

結局、振り返ってみると、コロナで笑ったもの、泣いたもの色々いた。

思ったより相場は下がらなかったし、思った以上に株価が上がっている。

この時期の自分の日記を見直すと、生き物観察ばかりしていた。

自然と戯れてる場合じゃなかったな・・・・。

 
 

とは言え、過去20年間のバッグテストで勝ち続けることが出来るストラテジーが全く作れません。

根気が足りないのか?

アイデア不足なのか?

知識が足りないのか?

経験不足なのか?

・・・・・全く分かりません。

 
 

優秀なストラテジーを組み合わせると期待する結果が得られるかもしれない。

ということで、ライブラリの拡張です。

ストラテジーの合体手法

各種ストラテジーを合体する記事は過去にも登場しています。

555hn氏の逆張り・順張り複合法有効性検証(システムトレード)
目的を完全に見失ってますが・・555hn氏というイザナミを利用されている方がYouTube上にシステムトレードの順張り・逆張りの統合方法を説明されているので、バックテストします。555hn氏の逆張り・順張り複合法有効性検証...

ですが、それらは

  • シグナルが出たら合算してソートを行い買い判断をする

というものでした。

そして、フラグが多くてソースコードが汚くなり公開できませんでした。
 

勝率やプロフィットファクターに応じて、ストラテジーには優先度がつけたくなるものです。つまり、

  • 優先度の高いストラテジーのシグナルを優先して購入する

これを実現する為に、

  • ソートの手法
  • 購入フラグ

などを見直しました。

利用したストラテジー

今回はあくまでライブラリ実装なので、ストラテジーは有名な「斉藤正章氏の手法」と「三点チャージ法」を組み合わせました。

斉藤正章氏の手法は次のとおりです。

【買い】

  • 1) 25日間移動平均との乖離率が-25%を下回った。
  • 2) 5日間移動平均との乖離率が-10%を下回った。
  • 3) 急落している銘柄数が、過去100営業日の平均と比べて7倍以上

【売り】

  • 1) 買値の10%を上回った
  • 2) 4営業日経過

3点チャージ法は次のとおりです。

【買い】

  • 1) 移動平均線の乖離率(26日)の乖離率が-15%以下
  • 2) VR(25日)が70%以下
  • 3) RSI(14日)が25%以下

【売り】

  • 1) 買値の10%を上回った
  • 2) 2営業日経過 or 買値5%を下回った

ソースコード

独自ライブラリの取り込みが必要です(Utility.ptは今回の為に更新しました)

実装としては次のようになります。

重要なのは「BuyLoop」というストラテジー毎にソートして購入する関数を呼び出す部分と、「$buyflag[i][2]」というストラテジー判別子です。

また「$MaxHoldDay」という変数は使っていません。ストラテジー毎に売却タイミングも異なるためです。

それ以外は、以前とできる限り同じような実装にしています。

バックテスト結果

実行結果は次のようになります。

利益曲線は次の通りです。

ログを見る限り、優先順序に従って購入できているようなので、とりあえず動作しているようです。

組み合わせたストラテジーは両方とも底狙いの逆張り手法なので、結果がよくなる・・・という事はありませんでした。

まとめ

今回は「実装方法」の紹介なので「ストラテジー」はサンプルです。

この実装により、何個の手法でも組み合わせる事が可能となります。

たとえば保有期間の異なる「順張り」+「空売り」+「逆張り」などが、組み合わせてバックテストが可能となります。

なお、ストラテジー毎に一銘柄あたりの購入額を分けることはサポートしていません。

タイトルとURLをコピーしました