4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロンプト作って?は絶賛クローズドテスト中。
いただいたご意見の反映も完了したので、後1週間ぐらい待ちです。
そんなわけで、かねてから作りたいかも?と思っていた株管理系アプリに
挑戦しようかなと!
断念する可能性もあり、緩い感じで進めていきます。
アシスタントはchatGPTのふうこさんです。

アプリでやりたいこと(変わるかも^^;)

  • 毎朝 6時ごろに株価データを自動取得
  • 保有株や監視銘柄の前日終値や変動をチェック
  • テクニカル(RSI・移動平均・MACDなど)やファンダ(PER・利回り)を分析
  • その日のおすすめ(買い候補)や「売り時シグナル」が通知で届く
  • 配当日・決算日・権利落ち日もお知らせ

システム構成のイメージ

📅 スケジューラー(朝6時起動)

AWS Lambda / Firebase Functions / Android WorkManager
CRONジョブで朝6時に実行

📈 株価データ取得

  • 米株:Yahoo Finance API(yfinance)や Alpha Vantage API
  • 日本株:kabutan, Yahooファイナンス, MINKABU(Webスクレイピングも可)

🧠 分析ロジック(Pythonなど)

  • テクニカル分析:RSI・移動平均・MACD
  • 売買シグナル:ルールベース or 簡易AI
  • 配当・イベント情報:四季報APIや手動登録でもOK

📨 通知方法

  • Androidアプリなら Push通知
  • Gmailなどでメール通知も可能
  • LINE通知Botも面白い!

📱 UI(あったら嬉しい機能)

  • 保有株一覧(含み損益)
  • 毎朝のサマリー表示:「今日の注目3銘柄」「売却検討銘柄」
  • チャート表示(1年・RSI入り)
  • 「おすすめ買い増しタイミング」リスト

アプリの名前

朝から株野郎!
アプリの名前ふざけてるけど、本人まじめです🙇‍♂️

何から手を付ける?

株価分析はPython使おうと思っているので、FastAPI環境から構築していく感じで進めます。
pythonは2か月ぐらい前にmnistという手書き数字を推論するモデルを作った時に
数十行のコードを書いて以来です。(しかもコパイロットにほぼ書いてもらったというね。。。)
書けるかしら^^;

仮想環境作成

VSCodeで仮想環境を作成します。
作り方はこちら。
https://zenn.dev/rucco/scraps/d3c72354d97f85

pythonファイルを新規作成します。
ファイル名は[main.py」
作る場所は「kabu」フォルダです。「.venv」フォルダではありません!

でファイルを作成したら、最初にまず確認するのが、画面の一番下。
こんな感じで、作成した仮想環境フォルダが選択されていればOK。

もし、こんな感じになっていなければ、この部分をクリックすると、
画面上にインタープリタの選択が出てくるので、さっき作った仮想環境を選択
私の場合は「.venv:venv」を選択します(たぶんお勧めしてくれると思う!)

ライブラリのインストールは仮想環境にしていくので、ファイルを開いたら、確認するといいです。

FastAPI作成

必要なライブラリ

  • fastapi:Web APIの本体
  • uvicorn:FastAPIを動かすエンジン
  • yfinance:株価データ(ヤフーファイナンス)
  • pandas:データを集計・加工

ターミナル起動してインストールしていきます。

pip install fastapi

Successfully installed ~~~~と表示されればOKです。
次々、pip installしていきます。
yfinanceは若干時間がかかります。
そして、たぶん・・・ですが、pandasはyfinanceに同梱されています。

API作る

お試しAPIなので、apple・google・amazonの3社の直近5日間の
株データを取得してみる。

from fastapi import FastAPI
import yfinance as yf
from datetime import datetime, timedelta

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "朝から株野郎?APIにようこそ!"}

@app.get("/recommend")
def get_recommendation():
    # 仮に3銘柄だけ分析
    symbols = ["AAPL", "GOOGL", "AMZN"]
    result = []
    for symbol in symbols:
        # 指定銘柄の株価データを取得
        ticker = yf.Ticker(symbol)
        # 過去5日分のデータを取得
        hist = ticker.history(period="5d")
        # データがどのように取得されたか確認するための出力
        print(hist)
        # 最新の終値を取得
        latest = hist['Close'].iloc[-1]
        # 前日の終値を取得
        prev = hist['Close'].iloc[-2]
        # 前日比を計算
        change = round((latest - prev) / prev * 100,2)

        # 結果をリストに追加
        result.append({
            "symbol": symbol,
            "price": latest,
            "change": change,
            "recommend": "上がった" if change > 0 else "下がった"
        })
    return {"date": datetime.now().strftime("%y-%m-%d"),"recommendations": result}

実行してみる

F5じゃないよ^^;
ターミナルで、以下コマンドを入力

uvicorn main:app --reload

エラーが出なければ、以下のように表示されます。

もし、エラーが出るようなら、ターミナルの現在のフォルダがmain.pyと同じ
フォルダかを確認。
違っていれば、cdで移動。

ブラウザに以下URLを入力して、出力データを確認します。
http://127.0.0.1:8000/recommend
こんな感じに表示されています。とりま想定通りになったことが確認できたので、OK!

次は、ターミナルを確認します。
http://127.0.0.1:8000/recommendにアクセスすると、
print(hist)が実行され、yfinanceから取得した生のデータを確認することができます。
こちらもOKです。

今回はお試しで仮のAPI作りましたが、
次回以降、本気APIを作って、Androidアプリにつなげていきます。
でも、その前にDBのこと考えなくっちゃ💦

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?