1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python × AIで作る「資産10倍トレード戦略」:完全自動売買システムをゼロから構築する方法【2025年版】

1
Posted at

本記事では、Python と AI を組み合わせて「資産10倍」を狙う本格的な自動売買システムの構築方法を解説します。初心者でも再現できるよう、データ処理から戦略設計、強化学習、Walk-Forward Analysis、そして自動発注までを一貫した流れで紹介します。

1. システム全体構成

本記事で構築する自動売買システムは次の構成を持ちます:

project/
├── app.py
├── data/
├── utils/
│   ├── indicators.py   # テクニカル指標
│   ├── strategies.py   # 売買ロジック
│   ├── walkforward.py  # Walk-Forward Analysis
│   ├── ai_rl.py        # 強化学習 (xLSTM + PPO)
│   └── kelly.py        # Kelly最適化
└── models/

2. データ読み込み

一般的な OHLCV の CSV を読み込み、欠損値を除去します。

import pandas as pd

def load_price(path):
  df = pd.read_csv(path)
  return df.dropna().reset_index(drop=True)

3. テクニカル指標

軽量で高速な自作インジケーターを使用します。

def SMA(close, k, i):
  if i < k: return None
  return close[i-k+1:i+1].mean()

ほかに EMA や ATR も同様の構成で実装できます。

4. 売買ロジック

複数の戦略を文字列として登録し、柔軟に切り替え可能にします。

strategyList = [
  "(Close[i] > EMA(Close, k1, i)) and "
  "(min(Low[i-3:i-1]) > EMA(Close, k1, i) * 0.98)"
]

5. Walk-Forward Analysis (WFA)

「過去データに最適化しすぎない」ための検証方法です。

def walk_forward(df, strategy, params):
  Close = df["Close"].values
  High = df["High"].values
  Low  = df["Low"].values

  equity = 1.0
  position = 0

  for i in range(50, len(df)):
    local = {
      "Close": Close, "High": High, "Low": Low,
      "i": i, "k1": params["k1"], "k2": params["k2"],
      "SMA": SMA, "EMA": EMA, "ATR": ATR
    }

    if position == 0:
      if eval(strategy, {"__builtins__": None}, local):
        entry = Close[i]
        position = 1
    else:
      for exit_rule in strategyList:
        if eval(exit_rule, {"__builtins__": None}, local):
          exit_price = Close[i]
          r = (exit_price - entry) / entry
          equity *= (1 + r)
          position = 0
          break

  return equity

6. 強化学習(xLSTM + PPO)

価格系列を入力し、Long/Short/Flat を判断する AI を学習させます。

class TradingEnv(gym.Env):
  def __init__(self, prices):
    self.prices = prices
    self.t = 1
    self.equity = 1.0
    self.position = 0

詳細は別記事としても成立するレベルの奥深さがあります。

7. Kelly 最適化

複数銘柄を扱う場合、リスクと期待値のバランスを最適化します。

def kelly(mu, cov):
  return np.linalg.inv(cov) @ mu

8. 自動売買(MT5)

完成した戦略を MT5 に接続して完全自動化します。

import MetaTrader5 as mt5

def send_order(symbol, volume, order_type):
  req = {"symbol": symbol, "volume": volume, "type": order_type}
  return mt5.order_send(req)

まとめ

本記事では、データ処理・テクニカル指標・戦略実装・WFA・強化学習・自動発注まで、Python と AI による自動売買システムの具体的な構築プロセスを紹介しました。

シンプルな構成ですが拡張性が高く、多銘柄・AI強化・リスク管理の追加も容易です。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?