損切りと利確を同時に置いて検証するとき、同じ1分足の中で両方に触ってしまうことがあります。四本値(始値・高値・安値・終値)しか無いと、そのときどちらが先だったかは決められません。
- 建値±0.1%に置くと、どちらかに触った足の10.0%で両方に触りました
- その中で先だったのは 上が47.1% / 下が52.9%。ほぼ半々です
- 実際の売買で試すと、決め打ち次第で損益が −38%〜+35% 動きました
- 両方に触った足が1回だけで、損益の符号が変わった銘柄もありました
- ティックがあれば、決め打ちせず実際に先に触ったほうで決められます
何が決められないのか
1分足が持っているのは、その1分の始値・高値・安値・終値の4つだけです。高値と安値がどちらの順に付いたかという情報は入っていません。
普段はそれで困りません。困るのは、損切りと利確を同時に置いたときです。
# よくある書き方。ここには決められないことが隠れている
if bar.Low <= stop:
exit_at(stop) # 損切り
elif bar.High >= target:
exit_at(target) # 利確
# 上から順に見ているので、
# 「安値も高値も条件を満たした足」は必ず損切りになる。
# それが正しいかどうかは、四本値からは分からない。上から順に見ているので、安値も高値も条件を満たした足は必ず損切りになります。順番を入れ替えれば、必ず利確になります。どちらが正しいかは、四本値からは分かりません。
どれくらいの頻度で起きるか
東証上場80銘柄・14営業日のティックを使って、1分足ごとに「始値から上下に同じ幅を置いたとき、両方に触ったか」を数えました。317,760通りを調べています。
| 建値からの幅 | どちらかに触った足 | 両方に触った足 | その割合 | 上が先 | 下が先 |
|---|---|---|---|---|---|
| 0.1% | 28,730 | 2,861 | 10.0% | 47.1% | 52.9% |
| 0.2% | 12,553 | 1,016 | 8.1% | 46.1% | 53.9% |
| 0.3% | 7,392 | 613 | 8.3% | 46.3% | 53.7% |
| 0.5% | 3,672 | 193 | 5.3% | 48.7% | 51.3% |
- 幅を狭くするほど起きやすく、0.1%なら10回に1回
- 幅を 0.5% に広げても 5.3% は残る
- そしてどちらが先かは、ほぼ半々。片方に決め打ちすると、その半分が取り違えになる
「上が先 47%・下が先 53%」がほぼ半々なのは、むしろ当然です。始値から上下同じ幅に置いているので、偏る理由がありません。だからこそ決め打ちできないのです。
実際の売買で、いくら違うのか
頻度が2〜3%なら無視してよいのでは、と思うかもしれません。実際に測りました。
52銘柄・2,908取引(直近20本の高値を抜けたら買い、建値±0.2%に損切りと利確)。変えたのは「同じ足に両方入ったときの判定」だけです。
| 判定の仕方 | 損益合計 | 正しい値との差 |
|---|---|---|
| 実際に先に触ったほう(ティック) | −226,770 円 | ±0 |
| 損切りが先だったことにする | −313,229 円 | −86,459 円 |
| 利確が先だったことにする | −147,713 円 | +79,056 円 |
同じ戦略・同じ幅なのに、決め打ち次第で損益が 165,516円ぶん動きます。正しい値に対して −38% 〜 +35% の幅です。

頻度が低いのに、なぜここまで動くのか
両方に触った足は、2,908取引のうち 77回(2.6%)しかありません。それでも損益が38%動くのは、1回あたりの影響が大きいからです。
| 銘柄 | 取引 | 両方の足 | 損切り優先 | 実際の順序 | 利確優先 | 振れ幅 |
|---|---|---|---|---|---|---|
| 29720 | 35 | 1 | −33,760 | +8,440 | +8,440 | 42,200 |
| 89540 | 62 | 1 | −225,380 | −225,380 | −187,060 | 38,320 |
| 99840 | 258 | 14 | +16,427 | +33,997 | +51,126 | 34,699 |
| 66220 | 146 | 2 | −5,478 | −414 | +4,582 | 10,060 |
29720 は、両方に触った足が たった1回です。その1回の判定で、損益が −33,760円 から +8,440円 に変わりました。符号が反転しています。「めったに起きないから無視してよい」とは言えません。
ティックがあれば、決め打ちしなくてよい
約定データがあれば、その1分の中で実際にどちらが先に付いたかが分かります。
# ティックがあれば、決め打ちしなくてよい
px = ticks_in_this_bar["Price"].to_numpy()
hit_stop = np.flatnonzero(px <= stop)
hit_target = np.flatnonzero(px >= target)
if hit_stop.size and hit_target.size:
# 両方に触った。先に触ったほうが本当の結果
stop_first = hit_stop[0] < hit_target[0]
else:
stop_first = hit_stop.size > 0やっていることは単純で、その足の約定を順に見て、先に条件を満たしたほうを採るだけです。難しいのは、そのために1日431万件の約定を扱えるようにしておくことのほうです。
自分の検証がどちら側か確かめる
- 損切りと利確を同時に置いているか。片方だけなら、この問題は起きません
- 使っているデータは四本値だけか。四本値だけなら、必ずどこかで決め打ちしています
- その決め打ちがどちらか知っているか。多くのツールは「損切り優先」です(安全側に見せるため)
- 逆の決め打ちでも回してみる。結果が大きく変わるなら、その戦略の成績はその決め打ちに依存しています
4番目が、四本値しか無くてもできる確認です。両方で回して、差が小さければ気にしなくてよい。差が大きければ、その成績は信用できません。
まとめ
- 1分足の四本値には高値と安値の順序が入っていない
- 損切りと利確を同時に置くと、触った足の5〜10%で両方に触る
- どちらが先かはほぼ半々なので、決め打ちの半分は取り違え
- 実測では損益が −38%〜+35% 動き、1回で符号が変わる銘柄もあった
- ティックがあれば決め打ちが要らない
これは MT4 のバックテストで「1分足モデル」と「全ティック」の結果が違う理由と、まったく同じ構造の話です。日本株でも同じことが起きていますが、測った人をまだ見かけません。
この記事の出どころ
- データ:J-Quants API「株価 分足・ティック」アドオン(ベースは Light プラン)
- 頻度の調査:東証上場80銘柄・14営業日 / 1分足×幅4種で 317,760通り
- 売買の調査:52銘柄・2,908取引 / 20本高値ブレイク+建値±0.2% / 約定は「判定した足の次のティック」/手数料は0円として計算
- 環境:Windows 11 / Python 3.12 / pandas 3.0 / pyarrow 25
- 測定日:2026年9月21日
- 注意:戦略そのものに意味はありません。損切りと利確が両方置かれる形であればよく、勝てる手法を示すものではありません。掲載したのは集計結果で、取得したデータそのものは配布していません