
ã第1ç« â¢ãChatGPTãšGeminiã®ãAIäºåæµãã§æãïŒãPythonÃSAXOãNASDAQèªå売買ã·ã¹ãã æ§ç¯èš â¡èªèšŒç·š
第1ç« ïŒãã³ãŒããæžããªããã¯ããã¯ãå£ã§ã¯ãªã
ç§ã¯ãšã³ãžãã¢ãšããŠå®çžŸããããŸãããä»åã®SAXO APIã«é¢ããŠã¯ãå®å šãªçŽ äººããšåãã¹ã¿ãŒãã©ã€ã³ã§ããããªããªããæ¥æ¬èªã®è§£èª¬ãã©ãã«ãèœã¡ãŠããªãããã§ãã
æ®éãªããè±èªã®èšå€§ãªããã¥ã¡ã³ããæ°ã¶æãããŠèªã¿èŸŒã¿ãããã°ã©ãã³ã°èšèªãæ·±ãçè§£ããŠããªããã°éåæããããäžçã§ããç§ã¯ããèªåã§æžããããšãæšãŠãŸããã
ãããã°ã©ãã³ã°ãç¥ããªããŠãã仿§æžãAIã«èªãŸããé©åãªåœ¹å²ãäžããã°ãããçŽã®ã·ã¹ãã ãçµã¿äžããã
æ¥æ¬äººã§èª°ãæãéããŠããªãïŒïŒæ å ±ããªãïŒé£æåºŠã®å±±ããã³ãŒããç¥ããªãçŽ äººãAIãšããããªã䜿ã£ãŠå±±é ãŸã§ã²ãšã£é£ã³ãããä»åã®èªèšŒçªç Žã¯ããã®äºå®ã蚌æããç¬¬äžæ©ãšãªããŸããã
第2ç« ïŒChatGPTãšGeminiãããããã®ãå¿ æ®ºæã
åå¿è ãäžçªèºãã®ã¯ããAIãåºããŠããã³ãŒããæ¬åœã«åã£ãŠããã®ããäœãæ£è§£ãåãããªããããšã§ãããããç§ã¯AIã®ãäºåæµãã§è§£æ±ºããŸããã
åè¬ïŒChatGPT-5.2ThinkingïŒæ»ãïŒ ããããªæ©èœã欲ããããšäŒãããšãçéã§å šäœã®åœ¢ãäœã£ãŠãããã¯ãªãšã€ãã£ããªå€©æã
æè¡é¡§åïŒGemini ProïŒå®ãïŒ ChatGPTãäœã£ãã³ãŒãããSAXOã®è€éãªã«ãŒã«ïŒä»æ§æžïŒã«éåããŠããªãããäžæåãã€ãã§ãã¯ãã峿 Œãªæ³åŸå®¶ã
ãã®ãæ»ãããšãå®ããã®çµã¿åããããããããããã³ãŒããããããªã人ã§ãã**ãAIã«æç€ºãåºããAIã«æ€ç®ãããã**ã ãã§ãéè¡ã¬ãã«ã®å ç¢ãªã·ã¹ãã ã宿ããã®ã§ãã
第3ç« ïŒAIãæåŒ·ã®ãæ³åŸå®¶ãã«å€ããããŒãã³ã°è¡
Geminiããæè¡é¡§åãã«ããã«ã¯ãã³ãããããŸãããã®ãŸãŸèãã°åœŒãåãã€ããŸããããã§ç§ã䜿ã£ããä»ã§ãå¿çšã§ãã**ãAI調æãã¯ããã¯ã**ãå ¬éããŸãã
仿§æžã®å šããã¹ãå: PowerShellã䜿ããSAXOã®å ¬åŒããã¥ã¡ã³ãïŒWebããŒãžïŒãé ããé ãŸã§ã¹ã¯ã¬ã€ãã³ã°ããŠããã¹ãŠãããã¹ãããŒã¿ããšããŠã¶ã£ãæããŸããã
ã1ã€ã®ãã¡ã€ã«ãã«çµ±åããŠGoogleãã©ã€ããž: Geminiã¯Googleãã©ã€ãäžã®.docx圢åŒãªãèšå€§ãªæ å ±ãäžæ°ã«èªã¿åããŸããæ°äžè¡ã®ä»æ§æžã1ã€ã®ããã¥ã¡ã³ãã«çµ±åããŠèªãŸããããšã§ãAPIã®å šè²ãç¬æã«ææ¡ãããã®ã§ãã
ããã§ãäžçã«æ°äººããããªãã§ããããSAXO APIã®å šä»æ§ãå®ç§ã«ææ¡ããAIé¡§åããç§ã®å³æ¹ã«ãªããŸããã
第4ç« ïŒãå šèªåèªèšŒãå ¬éãAIãšäœãäžãããç ããªãåéµäœææ©ã
SAXO APIæå€§ã®é£æãããã**ã24æéã®å£ã**ã§ãã ã©ãã»ã©åªãã売買ããžãã¯ãäœã£ãŠãããã®ãèªèšŒïŒãã°ã€ã³ïŒããåããŠããŸãã°ãã·ã¹ãã ã¯ãã ã®ã¬ã©ã¯ã¿ã«ãªããŸãã
ç§ãAIããŒã ã«åœããã®ã¯ã**ã俺ãå¯ãŠããéããè£åŽã§ãããããéµãåãããªããšå€æããŠãåæã«æ°ããåéµãäœã£ãп޿°ãç¶ããä»çµã¿ã**ã§ãã

ãããäžã«ã¯æ¥æ¬èªã®æ å ±ããŒããé Œããã®ã¯AIã ãã ç§ããã£ãã®ã¯ã以äžã®2ã€ã®ãã¡ã€ã«ãAIã«æžããã飿ºãããããšã§ããã
1. èšå®ãã¡ã€ã«ïŒããªãã®ç§å¯ã®éµçœ®ãå ŽïŒ
ãŸãã¯ãããªãã®App KeyãSecretãå®å šã«ç®¡çããããã®å Žæã§ãã ãã©ãã«äœãæžãã°ãããããæç¢ºã«åããããããAIã«æç€ºããŠæŽçãããŸããã
Python
# FILE: project/config.py
# é¡§åGeminiïŒä»æ§æžã«åºã¥ããURLãšããŒã®ç®¡çå Žæãå®çŸ©ããŸããã
APP_KEY = "ããªãã®App Key"
APP_SECRET = "ããªãã®App Secret"
# æ¥ç¶å
ïŒã·ãã¥ã¬ãŒã·ã§ã³ç°å¢ïŒ
AUTH_ENDPOINT = "https://sim.logonvalidation.net/authorize"
TOKEN_ENDPOINT = "https://sim.logonvalidation.net/token"
REDIRECT_URI = "http://localhost:12321/callback"
TOKEN_FILE = "tokens.json" # åéµïŒããŒã¯ã³ïŒã®ä¿åå
2. èªèšŒã¯ã©ã¹ïŒ24æéæŠãããã®å¿èéšïŒ
ããããåè¬ChatGPTã圢äœããæ³åŸå®¶Geminiãäžæåãã€ã仿§æžïŒæ³åŸïŒããšç §ããåãããŠå®æãããåäœã§ãã
ããã°ã©ãã³ã°ãç¥ããªããŠã倧äžå€«ã§ãããã®ãSaxoAuthããšããç®±ããåæã«æå¹æéããã§ãã¯ããå¿ èŠãªãSAXOã®ãµãŒããŒãžèµ°ã£ãŠãæ°ããåéµããè²°ã£ãŠããŠãããããããªã€ã¡ãŒãžã§èŠãŠãã ããã
Python
# FILE: project/auth.py
import requests
import json
import os
from project.config import APP_KEY, APP_SECRET, TOKEN_ENDPOINT, TOKEN_FILE
class SaxoAuth:
def __init__(self):
# ä¿åãããŠããåéµãèªã¿èŸŒãããªããã°æ°èŠã
self.tokens = self._load_tokens()
def _load_tokens(self):
if os.path.exists(TOKEN_FILE):
with open(TOKEN_FILE, 'r') as f:
return json.load(f)
return None
def refresh_token(self):
"""
ãªãã¬ãã·ã¥ããŒã¯ã³ã䜿ãããæ°ããåéµããèªåçºè¡ããã
ãããæ¢ãŸããšèªåå£²è²·ã¯æ»ã¬ã
"""
print("éµãå€ããªããŸãããæ°ããã¢ã¯ã»ã¹ããŒã¯ã³ãèªåæŽæ°äž...")
payload = {
'grant_type': 'refresh_token',
'refresh_token': self.tokens['refresh_token'],
'client_id': APP_KEY,
'client_secret': APP_SECRET
}
# é¡§åGeminiã®ç£æ»ïŒSAXOã®ææ°ä»æ§ã«åºã¥ããæ£ãã圢åŒã§ãªã¯ãšã¹ããéä¿¡
response = requests.post(TOKEN_ENDPOINT, data=payload)
if response.status_code == 200:
new_tokens = response.json()
# ãéèŠãSAXOç¹æã®ããªãã¬ãã·ã¥ããŒã¯ã³ãè¿ã£ãŠããªãããšãã
# åå¿è
ã100%ãããçœ ããAIãäºèŠããŠå¯Ÿçã³ãŒããå
¥ããŠãããŸããã
if 'refresh_token' not in new_tokens:
new_tokens['refresh_token'] = self.tokens['refresh_token']
with open(TOKEN_FILE, 'w') as f:
json.dump(new_tokens, f)
self.tokens = new_tokens
print("æŽæ°æåãããã§ãŸã24æéæŠããŸãã")
return new_tokens['access_token']
else:
raise Exception(f"æŽæ°å€±æ: {response.text}")
def get_access_token(self):
"""åžžã«äœ¿ãããæå¹ãªéµããã¡ã€ã³ããã°ã©ã ã«äŸçµŠãã"""
return self.tokens['access_token']
ãæå³ãããããªããŠã倧äžå€«ã§ãããããã³ããŒããŠãAIã«ãããåãããŠããšèšãã ãã§ãããªãã®PCã¯äžçäžã®ããæè³å®¶ãšåãå俵ã«ç«ãŠãããã«ãªããŸãã

第5ç« ïŒæ¥æ¬äººãæªèžã®å°ãã«æãç«ãŠã
ç¹°ãè¿ããŸããããã®ã³ãŒãã宿ãããã®ã¯ãããã°ã©ãã³ã°ç¥èã§ã¯ãªããAIã䜿ãããªãææ®å®ãšããŠã®æç€ºãã§ãã
æ¥æ¬èªã®è§£èª¬ãã©ãã«ããªãã誰ãèšäºã«ããŠããªãé£æåºŠã®é«ãSAXO APIã ããã«ãã³ãŒããäžè¡ãèªåã§æžããªããçŽ äººãããAIäºåæµãé§äœ¿ããŠæ°æéã§å°éããŠããŸã£ãã
ããã¯ãã¯ããæè¡ã®åè² ã§ã¯ãããŸããã**ãAIãšããéšäžã«ãããã«è³ªã®é«ãæ å ±ãäžããããã«å³ãããã§ãã¯ããããã**ãšããããããžã¡ã³ãã®åå©ãªã®ã§ãã
ãããã«ïŒæºåã¯æŽã£ããæ¬¡ã¯ã皌ãããžãã¯ããž
èªèšŒãšãããæé£é¢ã®éããçªç ŽããŸããã ããã§ãç§ãã¡ã®ã·ã¹ãã ã¯ãç ããªãNASDAQåžå Žããš24æé365æ¥ã察話ãç¶ããæš©å©ãæã«å ¥ããŸããã
ããããç¹ãã£ãã ãã§ã¯çšŒããŸããã æ¬¡åã¯ãããããåè¬ChatGPTã®ç骚é ã**ã15幎éè² ããªãã®éåŒµãæŠç¥ã**ããã©ããã£ãŠãã®ããã°ã©ã ã«èœãšã蟌ãã§ããã®ãããã®æ žå¿ã«è¿«ããŸãã
ãæ¬¡åäºåã ãããŒã¿ã®æµ·ããå©çãæ¬ãåãã10åè¶³ãã¹ããªã«ã«ããŒã¿ã®ååŸãšãAIã«ããæŠç¥å®è£ ãã
ãæ¥œãã¿ã«ã