カシオペア製作③前編~売買シグナル表示~
2021/01/06
そろそろ1回どのくらい進んだのか確認。前回まででどこまで進んだのか。一応同じような記述で済みそうなところは1回目以外はまとめておきました。
- 機能α : 特定ローソク足形状でのシグナル表示
- 機能β : シグナル表示時の売買
- シグナル時のIFDOCO注文 ← ④(今回後編)
- ポジション保有中に逆向きのシグナルが出た場合の処理 ← ④(今回後編)
- スプレッド拡大時処理&週跨ぎポジション保有回避処理 ← ④(今回後編)
- 第1回バックテスト(12/13締切の目標) ← ④(今回後編)
- 機能γ : トレンド/レンジ判定(↓ここ以降は正直詳細未定)
- 複数時間EMAのGC/DCとか(まだアルゴリズム決まってない) ← ⑥次回?
- 機能δ : 高値圏/安値圏判定
- トレンド後の特定ローソク足形状(同上)
- 機能ε : 端点抽出[Extra]
- アルゴリズム考えるとこから
思ったよりやることが多い……し、後半何も決まってねぇ。いややってみてどうか判断しないとわからんってのが大きかったのだけど。それはそれとしてひとまず12/13までの目標についてはギリギリ間に合うか……?という感じ。
↑とりあえず結論から言うと初バックテストは12/12の時点で達成しました。焼肉10万おごりは回避したぞ!
ちょっと更新の間があいたこともあってやったことと起きたことが地味に多いのでざっくり3分割して③(今回前編:インジケータ完成まで)、④(今回後編:EAへの展開)、⑤(その前後の出来事と今後) で書いていこうかと。
ピンバー形状判定時の売買シグナル表示

最終判定(条件式⑤)を入れました。ピンバー判定が出る足が成立した段階すなわちStandByFlagの絶対値が10未満でスタンバイ状態としてフラグを立て(前回書いた部分)、このとき次の足が安値(高値)を特定pips幅分以上更新したら売買シグナルを表示します。今回はひとまず仮に StandByPips = 1.0pips (=1.0銭)と設定しました。結果こちら↓

黄色い上矢印が「ここで買うべき」のシグナル。水色の下矢印が「ここで売るべき」のシグナル。
無論全部が良いとこでシグナル出してはいないけども、それはアルゴリズムの問題(というかどのみち精度100%は無理)なのでヨシ。書いたとおりに動いているのでひとまずOK。
全否定形状判定&同売買シグナル表示
まずピンバー形状判定と共通になる部分、すなわちバーサイズの過小/過大はまとめました。そして実体率は全否定形状のときはむしろ高めになるはずなので、
・ピンバー形状には過剰 = 実体率がAllowedRealBodyRatio(:以下ARBR) より大きい かつ
・全否定形状には過小 = 実体率がAllowedForwardRatio(:以下AFR)より小さい
ものを弾くように記述します。ARBRとAFRは可変ですが、基本値として各30%、60%としているので、この時点で残るのは バーサイズが適正(2.0~30.0[pips]) かつ 実体率が30%以下または60%以上 のものとなります。

この直後にピンバー形状判定が入るので、「ピンバー形状」及び「ピンバー候補だったが逆方向のヒゲが長すぎて判定されなかったもの」すなわち上下どちらか長い方のヒゲ割合がAFR(60%)以上のものが全て除かれることに。

ここで残るのは バーサイズが適正(2.0~30.0[pips]) かつ 実体率がARBR(30%)以下またはAFB(60%)以上 かつ 長い方のヒゲ率がAFB(60%)未満 のものとなります。
……うーん、だんだんゴチャついてきました。が、ここで全否定判定を入れます。
「全否定形状」及び「全否定形状候補だったが直近側の足の逆方向ヒゲが長すぎる等で判定されなかったもの」すなわち直近2本の実体率が共にAFR(60%)以上ものが全て除かれます。
※2020/01/06 追記 → AFR60%以上かつ同方向(連続大陽線or連続大陰線)のときが抜けていたので、このときはStandByFlag[i]=111となるように加筆しました。

※実際のコードでは改行していない部分アリ
ここで残るのは バーサイズが適正(2.0~30.0[pips]) かつ 実体率がARBR(30%)以下またはAFB(60%)以上 かつ 長い方のヒゲ率がAFB(60%)未満 かつ 直近2本の実体率が共にAFR(60%)以上 のものとなります。
だめだもう何が残ってるのかわけわからん。。。ただ明らかに各種判定に適合していないのはわかるので、最後のelse部分で共通部分は満たすものの判定には至らなかったものをまとめて処理しました。

スタンバイフラグ数値内訳
というわけで処理後のStanByFlag[i]にはそれぞれ上記どれかの数字がはいることになります。そしてStandByFlag[i]が{ -1, -6, 1 ,6 }のいずれか状態で上述の最終判定(条件式⑤)が行われるとこんな↓感じに。

一番右下の黄色い上矢印が全否定判定でたやつですね。その前の青い下矢印はピンバー判定のもの。csvファイルで内部数値の確認もしましたが、いずれの判定も書いたとおりに表示されているようなので、これで自作インジケータとしては十分なものとしました。
そして前回「これ精度悪いし負けそうじゃね?」的なこと書いてましたが、意外にいけそうな売買シグナルにも見えます。AFRあたりのパラメータ調整すれば悪くない……?
というわけで④今回後編(EAへの展開)に続きます。ちなみにこのへんまで書けてたのがざっくり昨年12月の頭くらいでした。