株式投資で「買う」より難しいのが「売る」ではないでしょうか。買うときはあれこれ調べるのに、売るときは「もう少し上がるかも」「いつか戻るはず」と気持ちで判断してしまいがちです。
この記事は、銘柄選びはそれなりにできるようになったけれど売り時に迷う、という方向けです。代表的なテクニカル指標である移動平均線とRSIについて、計算方法・使い方・限界を整理し、私が「売り時」の判断材料としてどう位置づけているかをお話しします。最後にPythonとExcelで実際に計算する手順も載せています。
なぜ売り時にテクニカル指標を使うのか
私の銘柄選択の流れは、TOPIXの動き→セクターの動き→個別銘柄の抽出→IRでファンダメンタルズを確認→テクニカルで買い時を探す、というものです(手順の詳細はトップダウン分析の記事にまとめています)。保有中は四半期ごとの業績で「持ち続けてよいか」を判断し、売り時はテクニカルで決めることにしています。
役割分担をはっきりさせているのには理由があります。ファンダメンタルズは「何を持つか」を決めるのに向いていますが、業績が良くても株価はしばらく下がり続けることがあります。逆に、業績の変化が株価に反映されるまでには時間差があります。そこで「企業として持つ価値があるか」は決算で、「今が手放すタイミングか」は値動きで、と分けて考えるわけです。
正直に言うと、これには苦い経験も関係しています。保有銘柄を増やしすぎて値動きを追いきれず、売り時を何度も逃したことがあるのです(銘柄数の記事で振り返っています)。売りの基準を機械的に持っておく必要性を痛感しました。
移動平均線(単純移動平均)の計算と見方
計算方法
単純移動平均(SMA)は、直近N日間の終値を合計してNで割ったものです。毎日1日ずつ期間をずらして計算し、それを線でつないだものが移動平均線です。
仮の数字で5日移動平均を計算してみます。
| 日 | 終値(仮) | 5日移動平均 |
|---|---|---|
| 1日目 | 1,000円 | ― |
| 2日目 | 1,020円 | ― |
| 3日目 | 1,010円 | ― |
| 4日目 | 1,040円 | ― |
| 5日目 | 1,030円 | 1,020円 |
| 6日目 | 1,060円 | 1,032円 |
5日目は(1,000+1,020+1,010+1,040+1,030)÷5=1,020円、6日目は1日目を外して6日目を加えた(1,020+1,010+1,040+1,030+1,060)÷5=1,032円です。期間が短いほど株価に敏感に、長いほどなだらかになります。日足なら5日・25日・75日、週足なら13週・26週といった組み合わせがよく使われます。
ゴールデンクロスとデッドクロス
- ゴールデンクロス:短期の移動平均線が長期の移動平均線を下から上に抜けること。上昇トレンドへの転換の目安とされます。
- デッドクロス:短期線が長期線を上から下に抜けること。下降トレンドへの転換の目安とされ、売り時を考えるうえで注目されるサインです。
ダマシに注意
移動平均線は過去の終値の平均なので、どうしても実際の値動きより遅れます。クロスが出た時点では、すでに下落の大部分が終わっていることも珍しくありません。また、株価が一定の範囲を行ったり来たりするもみ合い相場では、クロスが頻繁に出ては逆方向に動く「ダマシ」が多くなります。
ダマシを減らす工夫としては、次のような考え方があります。
- 長期線の向きも確認する(長期線が上向きのままのデッドクロスは一時的な調整のことがある)
- クロスした翌日以降も株価が長期線の下で推移しているか、数日様子を見る
- 出来高の増減など、他の情報と合わせて判断する
ただ、様子を見るほど判断は遅れます。早さと確実さはトレードオフだと割り切るしかありません。
RSIの計算式と70/30の目安、その限界
計算式
RSI(相対力指数)は、一定期間の値動きのうち上昇の勢いがどれくらいの割合を占めるかを0〜100で表す指標です。期間は14日がよく使われます。考え方をシンプルに書くと次のとおりです。
RSI = 期間中の上昇幅の平均 ÷(上昇幅の平均+下落幅の平均)× 100
これは、開発者ワイルダーによる「RS=上昇幅の平均÷下落幅の平均、RSI=100−100÷(1+RS)」と同じ値になります。なお、ワイルダーの原法では平均の取り方に平滑化を使うため、単純平均で計算した値と、証券会社のチャートツールに表示される値とが少しずれることがあります。
仮の数字で計算してみます。14日間のうち、値上がりした日の上昇幅の合計が280円、値下がりした日の下落幅の合計が120円だったとします。平均を取っても比率は同じなので、280÷(280+120)×100=70となります。
一般的な目安
- 70以上:買われすぎ(上昇が行き過ぎている可能性)
- 30以下:売られすぎ(下落が行き過ぎている可能性)
RSIの限界
RSIはもみ合い相場では比較的機能しやすいと言われますが、強いトレンドが出ているときは苦手です。勢いよく上昇している銘柄はRSIが70を超えたまま張り付くことがあり、「70を超えたから売る」とすると、その後の上昇を丸ごと取り逃がします。逆に下落トレンドでは30を割っても下がり続けることがあります。
そのため、RSIは単独で売買を決めるより、「移動平均線でトレンドを確認し、RSIで過熱感を見る」という組み合わせで使うのが無難だと考えています。
移動平均線とRSIを、TOPIX連動ETFの終値で実際に描いてみると次のようになります。価格そのものではなく、期間の初めを100とした指数で示しています。

上段では、終値が25日線・75日線の上にある間は上昇トレンドが続き、終値が両方の線を割り込むと勢いが鈍っていることが読み取れます。下段のRSIは、上昇トレンドの期間でも70を超えたのはごく短い時間だけで、多くは40〜60の間で推移しています。「RSIが70を超えたら売る」というルールだけでは、売る場面がほとんど来ないまま相場が進むこともある、ということです。トレンドの確認は移動平均線、過熱感の確認はRSI、と役割を分けて使うほうが実用的だと考えています。
ファンダメンタルズ×テクニカルで売りルールを先に決める
テクニカル指標を使ううえで一番大事なのは、指標そのものより「買う前に売りのルールを決めておくこと」だと思う次第です。含み損を抱えてから考えると、どうしても都合のよい解釈をしてしまうからです。
私の方針に沿って、売りルールの考え方をチェックリストにすると次のようになります。
- 四半期決算で前提が崩れたら売る:買った理由(増収増益の継続など)が決算で否定されたら、テクニカルに関係なく見直す。
- 業績が順調なら、売り時はテクニカルで決める:たとえば「株価が長期の移動平均線を明確に割り込み、デッドクロスが出たら」など、具体的な条件を書いておく。
- 利益確定の目安を持つ:RSIが70を超えたら全部売るのではなく、一部だけ利益確定する、といった段階的なルールにするとトレンドの取り逃がしを減らせる。
- 損失の上限を決める:買値から何%下がったら売る、と数字で決めておく。
- ルールは銘柄ごとにメモに残す:保有数が増えても判断がぶれないように、買った理由と売り条件を記録する。
ルールは完璧である必要はありません。大事なのは、事前に決めたとおりに実行し、あとで結果を振り返って修正していくことです。
PythonとExcelで計算してみる
Python(pandas)の場合
終値の列(ここでは Close)を持つデータフレームがあれば、rolling を使って数行で計算できます。
import pandas as pd
# df: 日付順に並んだ終値データ(列名 Close)
df["SMA5"] = df["Close"].rolling(5).mean()
df["SMA25"] = df["Close"].rolling(25).mean()
# デッドクロス:前日は短期線が上、当日は短期線が下
df["dead_cross"] = (df["SMA5"].shift(1) > df["SMA25"].shift(1)) & (df["SMA5"] < df["SMA25"])
# RSI(14日、単純平均版)
diff = df["Close"].diff()
up = diff.clip(lower=0).rolling(14).mean()
down = (-diff.clip(upper=0)).rolling(14).mean()
df["RSI14"] = up / (up + down) * 100
dead_cross が True の日を抜き出せば、過去にどんなタイミングでサインが出て、その後どう動いたかを一覧で確認できます。「デッドクロス後の20営業日で実際に下がった割合はどれくらいか」などを数えてみると、その銘柄でサインがどの程度当てになるか、数字で確かめられます。
Excelの場合
- A列に日付、B列に終値を古い順に並べる(2行目から)。
- 5日移動平均:C6セルに
=AVERAGE(B2:B6)と入力し、下にコピーする。 - 前日比:D3セルに
=B3-B2。 - 上昇幅:E3セルに
=MAX(D3,0)、下落幅:F3セルに=MAX(-D3,0)。 - RSI(14日):G16セルに
=SUM(E3:E16)/(SUM(E3:E16)+SUM(F3:F16))*100と入力し、下にコピーする。
合計同士の比率なので、平均を取らなくても単純平均版と同じ値になります。
まとめ
- 移動平均線は直近N日の終値の平均。ゴールデンクロス・デッドクロスはトレンド転換の目安だが、遅れとダマシがある。
- RSIは上昇の勢いの割合を0〜100で表し、70/30が目安。ただし強いトレンドでは張り付きやすい。
- 「何を持つか」はファンダメンタルズ、「いつ売るか」はテクニカル、と役割を分けると判断がぶれにくい。
- 売りルールは買う前に決め、PythonやExcelで過去のサインを検証しながら育てていく。
指標は万能ではありませんが、気持ちで売買しないための「ものさし」としては十分役に立つと感じています。
あわせて読みたい
本記事は情報提供を目的としたもので、特定の銘柄の売買を推奨するものではありません。投資判断はご自身の責任でお願いします。


