Skip to main content

A tool for analyzing prices with technical indicators and top-down analysis.

Project description

Metal Analyzer

貴金属(ゴールド等)の市場価格を高度に分析し、トレンド判定や特定のチャートパターン(ダブルトップ等)を検知するためのPythonライブラリです。

特徴

特徴 説明
独自のチャート分析ロジック 4つの主要次元(基調トレンド、モメンタム、ボラティリティ、パターン)を 0-10 のスコアで定量的に評価。
マルチタイムフレーム対応 月・週・日・4時・1時・15分足の計6種類の時間足を作成。EMA 20/50/200とボリンジャーバンドを描画し、トレンドを可視化。
独自の中期理論のモデル化 ボラティリティ環境に応じた「雪崩」理論等を実装。高ボラティリティ時の押し目買いや警戒シグナルを定量提示。
長期トレンド・ポートフォリオ マクロ経済指標(実質金利、通貨価値)と相対価値(金銀レシオ等)に基づき、長期的な推奨配分を算出。

インストール

pip install metal-analyzer

クイックスタート

demo.py

"""yfinanceライブラリを用いて最新のゴールド価格データを取得し、
主要時間足のチャート生成と、刷新された定量トレンド予測を実行します。
"""

import yfinance as yf
import os
import pandas as pd
from metal_analyzer import MetalAnalyzer

def run_multi_timeframe_demo():
    """最新データに基づいた全時間足チャートと定量分析デモを実行する。"""
    print("=== Metal Analyzer 総合分析デモ ===")
    
    ticker = "GC=F"
    analyzer = MetalAnalyzer(ticker=ticker)
    output_dir = os.path.join("examples", "outputs", "candles")
    
    # 取得対象の時間足設定 (名前, 取得インターバル, 期間)
    # 4Hスコア算出のために 1h からリサンプリング用に多めに取得
    timeframes = [
        ("Monthly", "1mo", "15y"),
        ("Weekly", "1wk", "5y"),
        ("Daily", "1d", "2y"),
        ("4H", "1h", "3mo"),
        ("1H", "1h", "2mo"),
        ("15M", "15m", "1mo"),
    ]

    print(f"\n[1] データ取得およびチャート生成中...")
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    for name, interval, period in timeframes:
        print(f"--- {name} ({interval}) を処理中 ---")
        data = yf.download(ticker, period=period, interval=interval, progress=False)
        if data.empty: continue
        
        # yfinanceのマルチインデックス対応(単一銘柄の場合の階層削除)
        if isinstance(data.columns, pd.MultiIndex):
            data.columns = data.columns.get_level_values(0)
            
        # 4Hの場合は1Hからリサンプリング
        if name == "4H":
            data = data.resample('4h').agg({
                'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume': 'sum'
            }).dropna()
            
        analyzer.add_timeframe_data(name, data)
        # 主要な時間足のみチャート画像を生成
        if name in ["Daily", "1H", "15M"]:
            analyzer.plot_candlestick(name, filename=os.path.join(output_dir, f"chart_{name.lower()}.png"))

    # [2] 短期トレンド分析 (刷新された総合ダッシュボード)
    analyzer.analyze_short_trend()

    print(f"=== 全工程が完了しました ===")

if __name__ == "__main__":
    run_multi_timeframe_demo()

結果の出力例

【月足】
上昇: 7
下降: 1
EMA乖離度 : 10
ボラティリティ : 10
エントリーリスク: 1
トレンド:上昇傾向7
Wトップ:検知なし
Wボトム:検知なし
--------------------------------------------------
【週足】
上昇: 5
下降: 0
EMA乖離度 : 10
ボラティリティ : 4
エントリーリスク: 1
トレンド:上昇傾向5
Wトップ:検知なし
Wボトム:検知なし
--------------------------------------------------
【日足】
上昇: 3
下降: 1
EMA乖離度 : 10
ボラティリティ : 3
エントリーリスク: 6
トレンド:上昇傾向3
Wトップ:検知なし
Wボトム:検知なし
--------------------------------------------------
【4時間足】
上昇: 5
下降: 2
EMA乖離度 : 3
ボラティリティ : 7
エントリーリスク: 4
トレンド:上昇傾向5
Wトップ:形成中 (ネックライン: 4805.50)
Wボトム:形成中 (ネックライン: 4868.70)
--------------------------------------------------
【1時間足】
上昇: 5
下降: 2
EMA乖離度 : 0
ボラティリティ : 3
エントリーリスク: 4
トレンド:上昇傾向5
Wトップ:形成中 (ネックライン: 4804.60)
Wボトム:完成 (ネックライン突破: 4828.20) (2026-04-17 20:00)
--------------------------------------------------
【15分足】
上昇: 3
下降: 6
EMA乖離度 : 4
ボラティリティ : 6
エントリーリスク: 4
トレンド:下降傾向6
Wトップ:完成 (ネックライン割れ: 4874.60) (2026-04-17 20:45)
Wボトム:形成中 (ネックライン: 4903.10)
--------------------------------------------------
【総合評価】
上昇: 1
下降: 0
エントリーリスク: 8
トレンド:上昇傾向1

=== 全工程が完了しました ===

プロジェクト構成

パス ファイル 説明
core/ analyzer.py メインクラス。全時間足の管理、分析、描画。
models/ chart_analysis.py 定量チャート分析エンジン(0-10スコアリング)。
models/ middle_trend_predictor.py 中期トレンド分析(根雪/雪崩理論)。
models/ long_trend_predictor.py 長期トレンド・マクロ分析・推奨配分。
models/ top_down.py マルチタイムフレーム環境認識。
patterns/ double_top.py ダブルトップ検知ロジック。
patterns/ double_bottom.py ダブルボトム検知ロジック。
indicators/ sma.py, rsi.py, bollinger_bands.py 各種インジケーター計算。

ライセンス

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metal_analyzer-0.0.4.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

metal_analyzer-0.0.4-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file metal_analyzer-0.0.4.tar.gz.

File metadata

  • Download URL: metal_analyzer-0.0.4.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for metal_analyzer-0.0.4.tar.gz
Algorithm Hash digest
SHA256 86a21c15bf83be409cb2871fb05207ddb6e565a182f9065af52174c2b227584e
MD5 f3011f2cb0c132f9bf48e30547c48101
BLAKE2b-256 ea18c2d1283aa72de7357ea0c25f86959062ba01576694a99ce76ca532fe5076

See more details on using hashes here.

File details

Details for the file metal_analyzer-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: metal_analyzer-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for metal_analyzer-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a6a4d58f7548b6b6113da995fcb93ce60229780f6477fce0a486c64af1507b2e
MD5 4448fef6f78f153dda46370d764e7b76
BLAKE2b-256 1834746c6f42c50cde8bb02a99f72c576d40ef346d55ff7efac6ac2881773b65

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page