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.3.tar.gz (21.9 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.3-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: metal_analyzer-0.0.3.tar.gz
  • Upload date:
  • Size: 21.9 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.3.tar.gz
Algorithm Hash digest
SHA256 d437175106edf4617283486967198cc248da4fb20b36198792d3292864913f4e
MD5 81e2f42d2dc4254bcb19f39574ffcac6
BLAKE2b-256 5bb101985957cb9ff96c062cbdd3e3f0d6f4a8b0beff639f1b86348b4764a70c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: metal_analyzer-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 27.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c907cfc4143a8d861117296bc1a3ea95f9bc5dfbf3e4d8672c392a4609c567d2
MD5 76f7dde5b4623da1848bb429e4038db3
BLAKE2b-256 6fe3caab117828bb31de5b2391f1d46f8ebd5b0b5fb346f613618ca299eae588

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