技術コラム

TP/SL -2021 対応:低価格アルトコイン支援の技術的課題

2026年1月

問題の発見

2026年1月、GALA、JASMY など低価格アルトで TP(利確)注文が失敗する事象が判明しました。エラーは -2021: Order would immediately trigger でした。

これは単純なバグではなく、価格精度処理とTP方向検証の構造的問題でした。高価格コイン(BTC、ETH等)では問題なく、低価格アルトで継続的に発生しました。

発生内容:

  • GALA(価格:約 $0.02)で TP 失敗
  • JASMY(価格:約 $0.01)で TP 失敗
  • 他の低価格アルトでも同様
  • 高価格コインでは問題なし

根本原因の分析

原因1:キー名不一致による価格精度の固定化

第一の原因は `trader.py` のキー名不一致でした。

問題のコード:

# trader.py
price_prec = exchange_info.get('pricePrecision', 2)  # キー名 'pricePrecision'
# 実際のレスポンスは 'price_precision' の場合もある

# 結果: price_prec が常に 2 に固定
# 低価格コインは精度 3〜4 桁なのに 2 桁固定で誤計算

Binance API の取引所情報で価格精度が pricePrecision または price_precision のどちらでも返る可能性があり、コードは一方しか見ていませんでした。その結果 精度が常に 2 に固定され、低価格コインで正しい価格計算ができませんでした。

原因2:TP方向検証の欠落

第二の原因は `binance_client.py` で TP 方向の検証がなかったことです。

問題の状況:

  • LONG:TP は現在価格より高い必要がある
  • SHORT:TP は現在価格より低い必要がある
  • 問題:SHORT で TP > 現在価格のケースを検出できていなかった

価格精度の誤りで算出された誤った TP が、ポジション方向と矛盾しても検証を通過し、Binance が -2021 を返していました。

対応内容

対応1:キー名の互換処理

両方のキー形式をサポートするよう修正しました。

修正コード:

# trader.py
# 両形式をサポート
price_prec = (
    exchange_info.get('pricePrecision') or 
    exchange_info.get('price_precision') or 
    2  # デフォルト
)

# 正しい価格精度を取得可能に

これによりどちらのレスポンスでも正しい価格精度を得られます。

対応2:低価格コインの自動検出と精度の強制調整

低価格コインを自動検出し、適切な精度を強制適用します。

ロジック:

  • 現在価格が 0.001〜0.02 の範囲なら低価格コインと判定
  • 低価格の場合は価格精度を 3〜4 桁に強制
  • TP/SL 計算に正しい精度を適用

これで低価格コインでも正確な TP/SL 計算が可能になりました。

対応3:TP方向検証の追加

ポジション方向に応じた TP 方向検証を追加しました。

検証ロジック:

# binance_client.py
def validate_tp_sl_direction(position_side, current_price, tp_price):
    """
    TP 方向検証
    - LONG: TP > 現在価格
    - SHORT: TP < 現在価格
    """
    if position_side == 'LONG':
        if tp_price <= current_price:
            raise ValueError(f"LONG: TP({tp_price}) は現在({current_price})より高く")
    elif position_side == 'SHORT':
        if tp_price >= current_price:
            raise ValueError(f"SHORT: TP({tp_price}) は現在({current_price})より低く")
    
    return True

誤った方向の TP は事前にブロックし、Binance API エラーを防ぎます。

効果と検証

効果

対応後:

  • GALA で TP 成功
  • JASMY で TP 成功
  • 低価格アルト全般で正確な TP/SL
  • TP 方向検証で誤注文を事前ブロック
  • 高価格コインは従来どおり正常

検証方法

  • 複数の低価格コイン:GALA、JASMY 等でテスト
  • 価格帯:0.001〜0.02 の各レンジ
  • 方向:LONG / SHORT 双方
  • 実環境:実取引所での検証

技術的教訓

1. API レスポンス形式の多様性

外部 API の形式は変わり得ます。同一情報でもキー名が異なる場合があり、可能な限り互換を取る必要があります。

2. エッジケーステストの重要性

エッジケース(低価格コイン等)を十分にテストする必要があります。高価格では問題なくても低価格で顕在化しました。

3. 多層検証

単一の検証だけでは不十分です。価格精度に加え、TP 方向、ポジション状態など多段で安全性を確保します。

4. 資産中立設計

あらゆる資産クラスで同じ安全装置が機能すべきです。低価格アルトも高価格コインも、TP/SL は正確に動作する必要があり、資産中立の金融 AI 運用エンジンの原則です。

今後の改善

1. 自動精度検出の強化

  • 動的精度:取引所 API の精度情報を動的に利用
  • 価格帯別調整:レンジに応じた自動選択
  • 取引所別ルール:各所の規則を反映

2. 検証ロジックの統合

  • 統合モジュール:検証を一箇所に集約
  • 検証チェーン:順次実行
  • 失敗時の自動修復:妥当な値への補正

3. 資産タイプ別の特性

  • コイン特性のデータベース化
  • 取引履歴からの学習
  • 事前アラート

政府R&D・投資家の視点

こうした技術対応は政府R&Dと投資の両面で価値があります。

  • 運用安定性:多様な条件下でも安定動作
  • 拡張性:低価格コイン以外の資産にも適用可能
  • 検証可能性:対応過程が明確に記録される
  • 再現性:構造的に再発を防ぐ
  • 信頼性:エッジまで考慮した設計

単なるバグ修正ではなく、安定性と信頼性を高める構造的改善です。

結論

TP/SL -2021 対応は単なるバグ修正ではなく、金融 AI の安定性・信頼性を高める構造改善でした。

キー互換、低価格コイン自動検出、TP 方向検証により、あらゆる資産で同じ安全装置が正確に動くようになりました。資産中立の運用エンジンの原則を前進させる一歩です。

今後も多様な資産・状況で安定して動く金融 AI を目指して改善を続けます。