【株自動売買 #3】2本目は「フリップ型」。順張りは29日で+3.8万円、同じ合図で逆に入ると+40万円——出来すぎなので、まず仮想で疑う

TRACK C — 株自動売買

この記事は、FXのEA売買(トラックA)やAI直接売買(トラックB)とは別の口座・別の仕組みで動かす「株自動売買」の記録です。ExcelのVBAから日本株を売買します。いまは仮想運用で、実弾は入れていません。記事の一覧はトラックCへ。

トラックCに、2本目のプログラムを作りました。FXのほうで使っている「フリップ型」の考え方を、日本株に持ってきたものです。最初の形(v1.0)を過去29営業日の株価に流すと+38,400円。利益の出どころを追っていくと、問題は手じまいではなく「入る向き」にありました。同じ合図で逆向きに入る形(v1.1)に作り直すと、試算は+402,533円。前回の−52万円とは桁が逆です。良すぎる数字なので、後半はこの数字を疑う話を書きます。

フリップ型とは:帯の外に出たら入り、戻ったら降りる

見るのは5分足だけです。5分ごとの値動きを1本にまとめたもので、判定は1本が終わった瞬間にしか行いません。

  • 移動平均線:直近20本(100分)の終値の平均。いまの「ふつうの値段」の目安です。
  • ボリンジャーバンド:移動平均線の上下に、ふだんの値動きの幅の2倍ぶんを取った帯。値段はたいていこの帯の中に収まります。
  • 終値が帯の外に出たら、値動きが始まったとみて建てる。値段が戻ってきたら降りる。反対側の帯を抜けたら、決済してそのまま反対に建て直す。この「ひっくり返す」動きがフリップです。

銘柄は、前の営業日に売買代金が多かったものから選びます。日はまたがず、残った建玉は大引けで全部決済します。名前は BandananFlip。これまでの BandananTrade と同じExcelで並べて動かせる、架空取引版です。

v1.0:手じまいを急ぐと負け、待つと少し勝つ

最初は素直に作りました。売買代金の上位3銘柄を追い、帯を上に抜けたら買い、下に抜けたら売り。いわゆる順張りです。データは前回と同じ、8月27日から10月9日までの29営業日ぶんの5分足。資金は50万円で、費用は「1回の売買ごとに、値段の刻み1つぶん」を引いています。

手じまいの決め方 取引数 29日の損益
移動平均線を割ったら、すぐ降りる 181回 −132,900円
移動平均線を少し通り過ぎた足が2本続いたら降りる。1銘柄は1日2回まで 143回 +38,400円

前回わかった「1回売買するたびに払う差」が、ここでも効いていました。降りるのを急ぐと回数が増えて、その分だけ負ける。待つ形にして、やっとプラスです。ただし勝ち日は29日のうち12日、勝率は42.7%。前半18日が+34,500円、後半11日は+3,900円で、後半はほとんど増えていません。

利益は「大引けまで持てた44回」だけだった

143回を、どうやって終わったかで分けてみました。

終わり方 回数 損益の合計
大引けまで持てた 44回 +775,300円
途中で反転して降りた 78回 −511,200円
途中で反対に建て直した 21回 −225,700円
合計 143回 +38,400円

大引けまで持てた44回で77万円勝ち、途中で降りた99回で73万円負けて、残りが3.8万円。それなら、途中の99回をうまく減らせば大きく残るはずです。ここを最適化できないか、という注文で手じまいを作り直しにかかりました。

手じまいをいじっても、直らなかった

  • 途中で降りるのをやめて、全部を大引けまで持つ:合計は+38,400円から−96,000円へ。途中で降りるのは、損を小さくする役には立っていました。
  • 降りたあとの値動きを追う:元の向きに進んだのが50回、逆に進んだのが49回。ほぼ半々で、「降りるのが早すぎた」とも「遅すぎた」とも言えません。
  • 損切り、買値まで戻ったら撤退、利益を追いかけながら決済、一定の利益で決済:売買代金4〜10位の銘柄に当てると、設定を変えた18通りすべてでマイナスでした。

出口をどう変えても、土台の成績がマイナスなら残るのはマイナスです。問題は出口ではなく、入口のほうにありました。

同じ合図で、向きだけ逆にした

帯の外に出たのを「始まり」とみてついていくのが順張り。同じ合図を「行き過ぎ」とみて逆から入るのが逆張りです。合図はまったく同じで、買いと売りを入れ替え、移動平均線まで戻ったら決済する形にして比べました。

同じ合図で、向きだけ逆にしてみた過去29営業日・5分足の試算(費用込み)−120万−100万−80万−60万−40万−20万020万40万60万+38,400円+44,100円売買代金 1〜3位−836,400円+432,500円4〜10位−976,650円+348,850円11〜30位順張り(抜けた方向についていく)逆張り(行き過ぎとみて逆に入る)資金50万円・単利・1銘柄の建玉枠55.5万円。同時に持つ数の制限なしで比べた数字です。
売買代金の順位で銘柄を3つの組に分けて比べた(同時に持つ数の制限なし)
銘柄の組 順張り 逆張り
売買代金 1〜3位 +38,400円 +44,100円
4〜10位 −836,400円 +432,500円
11〜30位 −976,650円 +348,850円

上位3銘柄だけなら、どちらでもほぼ同じです。ところが4位から下では、順張りは大きく負け、逆張りは一貫してプラスでした。この29日間のスタンダード株では、5分足が帯の外に飛び出すのは「ここから伸びる合図」より「行き過ぎて戻る手前」のことが多かった、ということになります。v1.0が上位3銘柄でプラスだったのは、ルールが良かったからではなく、たまたま順張りでも負けない組を選んでいたからでした。

前回の v3.1 は、売り買いを逆にしても負けました。今回は逆にすると勝ちます。違いは1回あたりの値幅です。v3.1 は875回も売買して、1回の値動きが費用に負けていました。今回は「帯の外に出るほど動いた場面」だけを相手にするので、1回の値幅が大きい。後で出てくる v1.1 では、費用を引く前の利益477,933円に対して、費用は75,400円でした。

株価3,000円の壁

もうひとつ、はっきり線が引けたのが株価です。

株価の帯ごとの「1回あたりの損益」逆張り・設定18通りの平均(費用込み)−600円−300円0300円600円900円1,200円+959円500〜1,000円+1,072円1,000〜2,000円+948円2,000〜3,000円−364円3,000円超3,000円を超えると値段の刻みが1円 → 5円になり、費用が約3倍に
逆張りの1回あたりの損益を、株価の帯ごとに集計

株の値段は、3,000円までは1円刻み、3,000円を超えると5円刻みになります。買える値段と売れる値段の差も、そこで5倍に広がる。株価に対する割合で見ても、費用はおよそ3倍です。3,000円以下ではどの帯も1回あたり+950〜1,070円なのに、3,000円を超えた途端に−364円。対象を3,000円以下に絞ることにしました。

v1.1 の形

  • 前の営業日に売買代金が多かった順に、株価3,000円以下の20銘柄を見張る
  • 5分足の終値が帯の外に出て、その足の出来高がふだんの1.5倍以上なら、逆に入る(上に抜けたら売り、下に抜けたら買い)
  • 終値が移動平均線まで戻ったら決済。戻らなかったら大引けで決済
  • 同時に持つのは5銘柄まで。新しく建てるのは13時30分まで。1銘柄は1日2回まで
  • 売りから入るのは、制度上それができる銘柄(貸借銘柄)だけ。それ以外の銘柄は買いの合図だけ使う
  • 損切りは入れない(入れると、試算では利益が減りました)
項目 v1.0(順張り・3銘柄) v1.1(逆張り・20銘柄を見張る)
29日の損益(毎日50万円で固定) +38,400円 +402,533円
取引回数 143回(1日約5回) 375回(1日約13回)
勝率 42.7% 61.1%
平均の勝ち / 負け +17,420円 / −12,802円 +4,286円 / −4,289円
勝ち日 / 負け日 12日 / 17日 19日 / 10日
いちばん負けた日 −125,700円 −27,600円
前半18日 / 後半11日 +34,500円 / +3,900円 +229,333円 / +173,200円
複利で回した場合 50万円 → 約68万円 50万円 → 約127万円
累計損益の推移(試算)2026/8/27〜10/9 の29営業日・資金50万円・単利−10万010万20万30万40万1日目5日目10日目15日目20日目25日目29日目+402,533円+38,400円v1.1 逆張り・20銘柄を見張り5銘柄までv1.0 順張り・上位3銘柄過去のデータに当てはめた試算です。実際の売買の結果ではありません。
29営業日の累計損益(試算)
v1.1 の日ごとの損益(試算)29営業日のうち、プラス19日・マイナス10日−4万−2万0+2万+4万+6万1日目5日目10日目15日目20日目25日目29日目最大の勝ち日 +52,600円 / 最大の負け日 −27,600円
v1.1の日ごとの損益。大勝ちの日も大負けの日もなく、小さく積む形

1回の勝ちと負けはほぼ同じ大きさで、勝つ回数が6割。それを1日13回くり返す形です。終わり方の内訳は、v1.0とちょうど逆になりました。移動平均線まで戻って決済できた358回が+453,933円、戻らないまま大引けを迎えた14回が−112,800円。逆張りの負け方は「戻ると思って入ったのに、戻らなかった」です。1回の最大の負けは−28,300円でした。

なお、Excelのプログラムが試算と同じ売買をするかどうかは、29日分の5分足を1本ずつ流して突き合わせ、375回すべてが一致することを確かめてあります。試算と実物が食い違うとしたら、プログラムの写し間違いではなく、約定の値段のほうです。

出来すぎを疑う

29日で資金が8割増える計算です。こういう数字が出たときは、まず数字のほうを疑います。

  • 同じ29日で選んで、同じ29日で採点している:設定は、この29日を見て選びました。移動平均の期間とバンドの幅を変えた18通りは全部プラス(最小+91,133円、平均+285,294円)なので、たまたま1点だけ良かったわけではありません。それでも、期間が同じである点は変わりません。
  • 約定の値段しだいで、結果がひっくり返る:試算は「合図が出た次の足の始値」で約定したことにしています。逆張りは、値段が動いている最中に逆から入るので、ここがいちばん怪しい。
  • 上位20銘柄でしか効いていない:見張る銘柄を売買代金21〜40位にずらすと、18通りの平均は−25,776円。41〜60位は+13,091円。効いているのは上位20銘柄だけです。
  • 売れない銘柄がある:どの銘柄でも売りから入れる前提なら+499,733円になりますが、実際には売れない銘柄があります。見張った延べ580銘柄のうち、売りから入れるのは349銘柄。記事の数字は、売りをそこに限ったものです。
  • 入れていない費用がある:費用は値段の刻み1つぶんだけで、手数料と信用取引の金利は入っていません。
約定の値段がずれたら、どうなるかv1.1 の設定・29営業日の合計(試算)−20万−10万010万20万30万40万50万+402,533円次の足の始値で約定(基本の試算)+396,267円5分遅れて約定+327,133円費用を2倍に見積もる−113,650円毎回、不利な値段で約定したと仮定
約定の仮定を変えたときの29日の損益

約定が5分遅れても、費用を2倍に見ても、まだプラスです。けれども「買うときは高値寄り、売るときは安値寄りで毎回約定した」と仮定すると、+402,533円が−113,650円に変わります。18通りのうちプラスで残るのは2通りだけ。この戦略の利益は、試算どおりの値段で約定できるかどうかに、ほぼ全部かかっています。これは過去の株価をいくら眺めても分かりません。実際の気配値で動かして確かめるしかない部分です。

運転初日、最初のボタンで止まった

10月13日の朝、v1.1 を初めて動かしました。銘柄を選ぶボタンを押して数分後に出たのが、この画面です。

BandananFlipのダッシュボードに、実行時エラー1004のメッセージが出ている画面
「銘柄を選んでいます」のまま、エラーで停止

止まったのは、売買の判定でも株価の読み取りでもありません。画面のいちばん下の帯に、結果を1行で表示する命令でした。朝のうちは「Excelがたまたま表示を受け付けなかった」と見立てて、拒否されても先へ進むように直しました。ところが夕方、あすの銘柄を選ぶところで同じ画面がもう一度出ます。止まった行を開いて調べ直すと、原因ははっきりしていました。この帯に出せる文字は255文字まで。3銘柄だった v1.0 では短かった「銘柄を選びました」の報告が、20銘柄に増えて417文字になり、上限を超えていたのです。

銘柄選びそのものは最後まで終わっていて、止まったのは終わりの報告だけでした。だから朝も、エラーを閉じて開始を押すと、9時17分から20銘柄の見張りが始まりました。

BandananFlip v1.1 のダッシュボード。状態は判定中(正常)、見張り20銘柄、建玉0
エラーを閉じて開始を押したあと、9時20分の画面。「判定中(正常)」で20銘柄を見張っている

報告の文が長すぎただけで本体が止まるのは、作りとして弱い。表示は250文字で切り、ボタンから動く処理にはエラーの受け皿を付けました。売買のルールは同じまま、プログラムの版だけ v1.2 に上げています。朝の見立てが外れていたことも含めて、前回書いた「検証する側の配管も壊れる」の続きです。動かす側の配管も、動かしてみるまで分かりません。エラーの画面が出ているあいだは、同じExcelで動かしている BandananTrade まで止まっていました。

初日の結果は5回の取引で1勝4敗、−13,100円でした。取引時間中に銘柄を選んだので、見張った20銘柄は「前の営業日」ではなく「けさ9時15分まで」の売買代金で選ばれており、試算の前提とは少し違う初日です。1日では何も言えませんが、試算の「1日13回・勝率6割」とは違う出だしになりました。

実弾はまだ入れない

v1.1 は架空取引のまま動かします。見るのは損益そのものより、試算との差です。

  • 約定の値段:合図が出たときの気配値は、試算で使った「次の足の始値」とどれだけ違うか
  • 取引の回数:1日13回前後になっているか
  • 勝率:6割前後を保てているか。戻らないまま大引けを迎える建玉が、試算より多くないか

BandananTrade の v3.2 も、同じExcelで並べて仮想運転を続けます。実弾に切り替える条件は、今回もまだ書けません。5分足のデータは2〜3週間おいて取り直せば、今回と重ならない日で試せます。別の期間でも同じ形が残るかどうかと、仮想運転の記録の両方を見てから決めます。

今回わかったこと

「利益の出どころは大引けまで持てた44回」という見立ては、数字としては合っていました。けれども、そこから「途中の99回を減らそう」と出口を磨きにいったのは遠回りでした。向きを逆にするという、いちばん大きな変更がいちばん効いた。細かい調整を始める前に、土台をひっくり返して確かめる。次からは先にそれをやります。

そして、良すぎる試算は、悪い試算と同じくらい扱いに困ります。−52万円は「やめておけ」とはっきり言ってくれました。+40万円は、信じていい理由がまだ1つもありません。

次回

v1.1 の仮想運転の最初の週を載せます。実際の約定の値段が試算とどれだけずれたか、1日の回数と勝率がどうだったかを、試算の数字と並べて書きます。

この記事は筆者個人の実験記録であり、投資助言ではありません。記事中の損益は架空取引と過去データによる試算で、実際の取引の結果ではありません。信用取引は、預けた保証金を上回る損失が生じる可能性があります。

BANDANAN AI TRADE LAB
このラボの記録は、毎週更新しています
記事の公開はXでお知らせしています。投資助言ではありません。
XでフォロートラックAトラックB

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です