カシオペア製作②~機能αのデバッグ&信頼度判定~
前回ピンバー判定実装してみたら、それっぽい挙動するものの明らかにピンバーっぽいのに判定でないやつとかがあってデバッグというか細かい挙動確認いるなーと思ったわけですよ。
日曜休みだったんで土曜の夜から書こうと思ったら、土曜朝まで書いてた(仮眠とって仕事行った)こともあって睡魔に勝てませんでした。
いやここまではいいんですけど日曜朝起きて家事してさぁやろうと思ったら眠くなって気づいたら布団の中で夜を迎えていましてね。
なんだこれ夜しか作業できない呪いでもかかってんのか。いや薄々そんな気はしてるけども。。。 そして11/23の月曜は夕方からだが仕事である。祝日なにそれおいしいの?
[.csv]形式での出力を実装
というわけで.csv形式で中の数値全部出力するようにしました。

このあたりの書き方自体は概ねC言語と変わらないのであんまり問題なかったですね。とはいえCも4年ぐらい前にCR牙狼金色(パチンコ)シミュレータ書いて以来ではありましたが。
それよりも判定可否に関わる分岐がどうなってるのか一発でわかるような識別考える方が面倒でした……。
一応それぞれの条件式がうまく機能しているのかも精査できるように、全てについて分岐結果が見られるようにしたくてですね。
ただこれピンバーかどうかの判定だけで、
- ローソク足全体の長さが短すぎない…①
- ヒゲが全長の大部分を占める…②
- 実体そのものが小さい…③
- 逆側のヒゲがないか、あっても小さい…④
- ローソク足全体の長さが長すぎない…⑥
- 実体部分が上昇か下落かほぼ同値かの識別…⑦
とまぁこんだけ分岐がありまして。更にピンバー判定時には向き情報も必要なんですね。信頼度も含めると下図の全14パターンとなるのでこれを数値で表して、最終的にStandByFlag[i]に格納することにしました。

- ①&⑥…ローソク足サイズが規定内に収まっているか
- ③実体部分サイズが規定内に収まっているか(↑とも独立に検査したかった)
- ②ヒゲが全長の大部分を占めるか、占めるなら上下どちら側か
- ④逆側のヒゲが長すぎないか
- ⑦信頼度
数値化

これを、

こうして、

こうじゃ!!(見切れてますがこのもうちょい下でforループ閉じてます)
……はい。「ピンバー判定されなかったときなにが要因でされなかったのか」を分けようとしたらFALSEに該当するもの対して数字当てなきゃなんですけど、if文は本来TRUEのときに発動するのでどうしたものかと。
仕方がないので条件式を逆にしてやりました(2枚目赤字部分。また、厳密な等号成立は気にしなくていいので今回は無視しました)。そしたら反転予兆フラグの成立時だけ反落方向か反昇方向かの情報も入れなきゃいけなかったためここだけ条件式が反転せず……。うーん気持ち悪い。
また、信頼度については「反落フラグ成立時に実体部の上げ下げが一致したら高信頼度」ということにしたいので以下の式で組みました。数値の絶対値が大きいほど高信頼度。

でまぁこれらの最終的な出力として、下の表のようになるはず。

出力結果(.csv)
ローソク足チャートとその部分のcsv形式出力(時系列が下→上になってる)です。


矢印部分(ピンバー判定部分)と出力結果の向きや信頼度は合ってるし、その他の部分についても見た限り問題なく判定されているようではありますね。
これでひとまず判定はうまくいってるのかなぁと。前回判定弾かれてたやつも長さ不足とかだったっぽいし。
それはそれとして、矢印の向きがやたら負けそうな方向なのが不安になってきましたね。いやこれまだピンバー判定であって機能αの最終判定(前回の条件式⑤)もつけてないし、なんなら複数時間幅並列も実装してないし、さらに言えば後々入れるはずのα以外の機能も無視してるからってのはあるんだけども。
……実際に勝てるかどうかについては予定通りひとまず完成してから考えよう。
とりあえずcsvで出力できるようにしたことで中身見ながらいじれるようになったのでだいぶやりやすくなったかな。