「上位足が上を向いている時だけ買ってほしい」。ご相談でよく届く一文だ。書いた本人の中では、はっきり画が浮かんでいる。ただ、この一文だけでは作れない。上を向いているとは、何をどう見た結果なのか。そこが空白のまま渡ってくる。
似た形の言い方はほかにもある。「地合いがいい時だけ」「他の銘柄も見て」「いつもと違う日は避けて」。どれも裁量では成立している。手が勝手にチャートを切り替え、数秒眺めて、入るか見送るかを決めている。渡っていないのは、その数秒の中身のほうだ。
今回は、その数秒を渡せる形にするところを見ていく。何を見るかを決めるのはご依頼者で、当方が扱うのは渡し方の側だけだ。地合いを見る作りにすると成績がどうなるか、には触れない。渡し方をそろえるだけで、あとで食い違う場所はかなり減る。
「地合いがいい」は、そのままでは条件にならない
言葉が曖昧だから作れない、という話ではない。プログラムは「上を向いている」を実行できないので、作り手はどこかで具体に倒すしかない。倒した先が依頼者の頭の中と違えば、出来上がりは想像と合わない。しかも、なぜ合わないのかを説明する手段がない。
裁量で回している間は、見る足も本数もその日によって変わっている。それでいい。人はその場で切り替えられる。渡すときだけ、変わらない形に固める必要がある。固めるのは値ではなく、見る場所と数え方のほうだ。値は後からいくらでも動かせる。
決めるのは三つ。どのデータを、どの足の何本ぶんを、いつ時点で
判定式を考える前に、この三つを紙に書いておきたい。順番も効いてくる。式を先に組んでしまうと、あとで見る足を一段変えたくなったときに、まわりの計算までまとめて作り直しになることがある。先に三つを決めておけば、式のほうは差し替えが利く。
一つめ、どのデータか。上位足の値なのか、別の銘柄なのか、同じ足の別の指標なのか。「相場の勢い」や「地合い」ではなく、取りに行く先の名前で書く。名前で書けないものは、まだ自分の中でも固まっていない。そこから手を付けることになる。
二つめ、どの足の何本ぶんか。同じ判定でも、直近N本で見るか、その倍を見るかで答えが変わる。ここも決めるのは値ではなく形のほうで、「N本ぶんを見る」と書いておけば、Nはあとからパラメータで動かせる。
三つめ、いつ時点の値か。確定した足を見るのか、まだ動いている途中の値を見るのか。この二つの違いは中身が長くなるので今回は踏み込まないが、どちらを選んだかだけは書き残しておきたい。残していないと、あとで挙動を突き合わせる相手がなくなる。
同じ日でも、見る足を変えれば答えが変わる
同じ日の同じ銘柄でも、見る足を一段変えると「上を向いている」の答えが反転することがある。下位足では戻しの途中に見えても、上位足では向きが変わっていない、という状態は普通に起きる。どちらが正しいわけでもない。決めるべきは、どちらを見るかだ。
だから判定式より先に、参照する足と本数を書く。ここが決まっていれば、出来上がりが想像と違っても、足を一段変えて試すだけで済む。決まっていないと、どこを動かせば近づくのかが、依頼した側にも作った側にも分からない。
「上位足も見ておいて」——見るのは足ではない。その足の、何本ぶんの、いつ時点の値かだ。
上位足や別銘柄は、エラーで止まらずに静かに落ちる
見落とされやすいのはここから先だ。自分のチャートの値は、まず取れる。取りこぼしが出るのは、外を見に行ったときだ。上位足、別の銘柄、別の指標。取りに行った先に値が無い、という状態がある。相場の都合ではなく、端末側の都合で起きる。
起きる場面は決まっている。気配値表示にその銘柄が出ていない。履歴の本数がまだ足りない。週明けや端末を立ち上げた直後で、取り込みが終わっていない。参照先の市場が休みで、価格が動いていない。口座を移して、銘柄の表記そのものが変わった。
やっかいなのは、どれも派手に止まらないことだ。0が返る、空が返る、前の値がそのまま残る。判定はそのまま進み、結果として「条件を満たさなかった」ことになる。失敗そのものは取りに行った関数が戻り値で返しているのだが、値だけを受け取るとそこが落ちる。何も残していなければ、条件が厳しくて見送ったのか、参照に失敗したのかを、後から区別できない。
だから外を見に行く値は、どこから取ったかと、いつ時点のものかをセットで持つ。値だけを受け取って判定に流すと、失敗が値に化ける。取れなかったことを、取れなかったこととして扱える形にしておきたい。
揃うまで判定を始めない
手当ては単純で、必要な本数を先に宣言しておき、揃うまで判定に入らない作りにする。上位足をN本、別の銘柄をM本。毎回数えて、足りなければその回は判定しない。足りないまま計算した値は、正しそうな顔をして返ってくる。
同時に、揃わない間どう振る舞うかも決めておく。新規だけ止めて保有分はそのまま持つ。参照を外して手元の足だけで動かす。何もしない。どれでもいいが、ここが空だと、いちばん指定してほしい場面で作り手側の既定値が出る。
ここに当たりやすいのは、週明けの最初の数時間と、端末を立ち上げ直した直後だ。「月曜の朝だけ様子が違う」という症状なら、まずこのあたりを疑いたい。動いている日には出ないので、気づくまでに時間がかかる。
判定に使った値を、その都度残す
参照した値は、判定のたびに記録へ残しておく。取りに行った先、返ってきた値、何本ぶん揃っていたか、確定した足か途中の値か。この四つで足りる。行数は増えるが、あとで読み返す価値があるのもこの四つだけだ。
残していないと、「なぜ入らなかったのか」を後から説明できない。相場が条件を満たさなかったのか、参照が空だったのか。画面の上ではどちらも同じ「入らない」に見える。見えているものが同じなら、記録で分けるしかない。
残っていれば、直す場所が絞れる。値は返っているのに入らないなら、判定の基準を見直せばいい。値が空なら、参照の作りを直せばいい。手を入れる前に、どちらなのかが決まる。これがあるかないかで、手直しの回数がまるで変わってくる。
当方は元金融系のシステムエンジニアで、ココナラでMT5のEA開発をお受けしています。上位足や別の銘柄を参照する構成も、手元の足だけで閉じる構成も承っており、判定の基準はご依頼者のルールをもとに組みます。何を見るかがまだ言葉のままでも構いませんので、いまご自身が見ている順番を、ココナラのメッセージからご相談ください。なお、お渡しするのはソフトウェアであって、投資助言や運用の代行ではありません。