ドル円は毎日動きがあるので、子供が生まれる前は子供が寝た後にチャートを確認するのが習慣でした。でも最近はそれすらできなくて、気づいたら大きく動いていたことが何度かあって。。。せめてRSIが特定の水準に達したらアラートだけ飛ばしてくれるBotを作ることにしました。これがあるだけで張り付かなくていいのでだいぶ精神的に楽です。
なぜRSIアラートを作ろうと思ったか
ドル円FXで失敗するパターンのひとつが「気づいたときにはもう動いていた」というやつです。仕事中や育児中はチャートを見られないので、RSIが売られすぎ・買われすぎの水準に達したときだけ通知が来るようにすれば、大事なタイミングだけ確認できます。完全自動売買ではなく「通知だけ自動」というのが最初のステップとしておすすめです。
必要なライブラリのインストール
pip install yfinance pandas
通知にはLINE Notify(無料)を使います。スマホにLINEが入っていれば、トークンを取得するだけで使えます。LINE Notifyのサイト(notify-bot.line.me)でログインして「トークンを発行する」からトークンを取得します。
RSI計算の実装
import yfinance as yf
import pandas as pd
def calculate_rsi(series, period=14):
delta = series.diff()
gain = delta.clip(lower=0)
loss = (-delta).clip(lower=0)
avg_gain = gain.rolling(window=period).mean()
avg_loss = loss.rolling(window=period).mean()
rs = avg_gain / avg_loss
return 100 - (100 / (1 + rs))
# ドル円データ取得
df = yf.download("USDJPY=X", period="60d", interval="1h", progress=False)
close = df["Close"].squeeze()
rsi_series = calculate_rsi(close)
current_rsi = float(rsi_series.iloc[-1])
current_price = float(close.iloc[-1])
print(f"ドル円={current_price:.2f} RSI={current_rsi:.1f}")
# 判定
if current_rsi <= 30:
print("売られすぎシグナル")
elif current_rsi >= 70:
print("買われすぎシグナル")
LINE Notifyへの通知
上記のコードにLINE通知を追加します。LINE NotifyのAPIトークンを取得したら、以下のように通知を送ります。
import urllib.request
import urllib.parse
def notify_line(token, message):
data = urllib.parse.urlencode({"message": message}).encode()
req = urllib.request.Request(
"https://notify-api.line.me/api/notify",
data=data,
headers={"Authorization": "Bearer " + token}
)
with urllib.request.urlopen(req) as res:
return res.status
# RSI判定後に通知
if current_rsi <= 30:
notify_line(LINE_TOKEN, "ドル円売られすぎ RSI=" + str(round(current_rsi,1)))
elif current_rsi >= 70:
notify_line(LINE_TOKEN, "ドル円買われすぎ RSI=" + str(round(current_rsi,1)))
定期実行の設定
このスクリプトを1時間ごとに実行するには、Windowsのタスクスケジューラを使うのが一番シンプルです。バッチファイルを作ってタスクスケジューラに登録するだけで、PCが起動している間は自動で動いてくれます。本格運用するならVPS(月500〜1000円くらい)がおすすめです。子供に電源を切られてBotが止まるというトラブルが2回ありました(笑)。
まとめ
ドル円のRSIアラートBotは1〜2時間あれば作れます。「完全自動売買は怖い」という方でも、通知だけなら実害がないので試しやすいと思います。次は通知と一緒にチャート画像も送るようにしたいと考えています。スマホでLINEを見るだけでチャート状況がわかれば、育児中でも瞬時に判断できるので。

