コードを書いた量に応じて自分が表現できることがより正確になっていきます。このブログの趣旨でもありますが著者の表現力がどう変わっていくのかの記録でもありますので同じストラテジーでもどんどん新たな表現によるコードを追記していきます。
目次
ストラテジーの概要 LowW と LowestBar を用いる
- 5日移動平均線と20日移動平均線のクロスをシグナルとする。
- 1週前の安値のほうが2週前の安値より高い。
- 過去20足中の最安値を付けてから10足以内にクロスする。
このときは極値(Extremes)関数を知らなかったのですがこのように解釈して表現しようとしていました。ですので正確には極値ではなく最安値を判断しています。
今回新しく学んだコーディング
LowW(○)は○週前の最安値を戻し値としています。
LowestBarは最安値を付けてから何本経過したかを表します。
バックテストの結果
珍しくPF>1となっています。損益率も良好です。ほとんど取引しないストラテジーであることが分かります。個人的には少なすぎると感じますのでもう少し取引回数を増やすように調整する必要があると考えます。
ストラテジーの概要 NthExtremes 関数を使う
極値を表す関数 NthExtremes を用いて表現したらどうなるでしょう?
- 過去20足で最小極値の値が2番目の極小値より前に起こっている。
- 5日線が20日線を上抜いたら買いエントリーする。
今回新しく学んだコーディング
NthExtremes は極大・極小値の値や何番目に大きい・小さい極値なのかを返してくれます。
バックテストの結果
初期資金100万円、同方向のポジション数1に制限しました。バックテストの結果はPFと損益率は申し分ない結果となっていますが取引回数が少なすぎます年に4回程度ですので売りも混ぜるかパラメーターを弄ることも考えられます。ちなみに勝率は50%でした。
ストラテジーの概要 極大値、極小値がともに高くなっている
極大値、極小値がともに高くなっているときに買いエントリーしてみたらどうなのでしょう?
- 過去20足で最小極値の値が2番目の極小値より前に起こっている
- 過去20足の極大値が2番目の極大値より後に起こっている
- 5日線が20日線を上抜いたら買いエントリーする
ストラテジーの概要 SwingHigh SwingLow 関数を使う
極大・極小値をピボットで表現したらどうなるのでしょうか?
- 過去20足で最小極値の値が2番目の極小値より前に起こっている。
- 5日線が20日線を上抜いたら買いエントリーする。
今回新しく学んだコーディング
SwingHigh / SwingLow 関数を用いた表現
同じ条件のプログラムをピボットの頂点 SwingHighとSwingLow 関数を用いて表現してみましょう。
PivotHighVS / PivotLowVS も同じ意味を持っています。