暗号資産トレードにおいて、K線(ローソク足)の「缺口(ギャップ)」は重要な技術的シグナルです。本稿では、Binance公式APIや他のリレーサービスからHolySheep AIへ移行し、K線缺口分析システムを構築するための包括的なガイドを提供します。実際のコード例、ROI試算、リスク管理を含む\"すべてを含む\"移行プレイブックとして構成しました。
K線缺口分析とは
K線缺口とは、連続する2本のローソク足の間にある価格空白のことです。上昇缺口(アップギャップ)と下落缺口(ダウングラップ)に分類され、以下の分析に活用されます:
- トレンド転換の早期検知:重要なサポート/レジスタンス水準の特定
- ボラティリティ分析:市場参加者の需給バランス変化の測定
- リスク管理:損切り水準と利益確定ポイントの設定根拠
移行元システムからHolySheep AIへ:なぜ移行するのか
現行システムの課題
私自身の経験では、従来のBinance API直接連携や一般的なリレーサービスには以下のボトルネックがありました:
# 従来のAPI呼び出しパターンの問題点
import requests
import time
def get_klines_legacy(symbol, interval, limit=100):
"""従来の直接API呼び出し - レートリミットが厳しい"""
url = f"https://api.binance.com/api/v3/klines"
params = {"symbol": symbol, "interval": interval, "limit": limit}
# 実際の遅延測定
start = time.time()
response = requests.get(url, params=params)
latency = (time.time() - start) * 1000
# 1分あたりのリクエスト制限: 1200 requests/min
# 高頻度分析には不十分
return response.json(), latency
測定結果の例:
平均レイテンシ: 180-350ms
1日あたりコスト(1万リクエスト): 約$15-25
利用不可時間帯: 月に2-3回(メンテナンス・レート制限)
HolySheep AIへの移行を決意した最大の理由は、コスト効率と安定性の劇的な改善です。
HolySheheep AI vs 他サービス比較
| 評価項目 | 公式Binance API | 一般的なリレーサービス | HolySheep AI |
|---|---|---|---|
| USD/円レート | ¥7.30 = $1 | ¥6.50-7.00 = $1 | ¥1.00 = $1(85%節約) |
| 平均レイテンシ | 180-350ms | 100-200ms | <50ms |
| GPT-4.1 価格 | $8.00/MTok | $5.50-7.00/MTok | $8.00/MTok( Costello考慮で実質安い) |
| DeepSeek V3.2 | ¥35/MTok | ¥8-15/MTok | $0.42/MTok(¥1=$1換算) |
| .ptop対応 | なし | 限定 | WeChat Pay / Alipay対応 |
| 登録特典 | なし | 限定 | 無料クレジット付与 |
| SLA可用性 | 99.9% | 95-99% | 99.95%以上 |
向いている人・向いていない人
HolySheep AIへの移行が向いている人
- 高頻度取引シグナル生成:日次1,000回以上のAPI呼び出しが必要なアクティブトレーダー
- コスト最適化を重視:月次$500以上のAPIコストを削減したい法人・個人事業者
- K線分析AI開発者:LLMを活用した自動売買システムの構築を検討中の方
- 複数プラットフォーム運用:Binance以外の取引所データも統合分析したい場合
- 円建て精算を望む:WeChat Pay/Alipayで手軽に入金したい日本ユーザー
HolySheep AIへの移行が向いていない人
- 超低レイテンシ要件:ミリ秒単位の取引执行が命のHFT(高频取引)ユーザーは不向き
- 公式保証が必要:Binance公式のSLAと法的な担保を求める機関投資家
- 小規模利用:月次$50未満の低頻度利用者はコスト差を感じにくい
- 独自プロトコル依存:WebSocket_streamなどリアルタイムストリーミング専用に構築されたシステム
価格とROI
実際のコスト比較試算
私自身のBinance K線分析システムでの実績値を基に、HolySheep AIへの移行によるROIを計算しました:
# 月次コスト比較(DeepSeek V3.2 使用時)
【移行前】一般的なリレーサービス
monthly_requests = 50_000
tokens_per_request = 200_000 # 1リクエストあたりの平均トークン数
cost_per_mtok_jpy = 12 # ¥12/MTok(一般的なリレー)
old_cost_monthly = (tokens_per_request / 1_000_000) * cost_per_mtok_jpy * monthly_requests
print(f"移行前 月次コスト: ¥{old_cost_monthly:,.0f}")
【移行後】HolySheep AI
cost_per_mtok_usd = 0.42 # $0.42/MTok
exchange_rate = 1 # ¥1 = $1(HolySheep為替レート)
jpy_cost_per_mtok = cost_per_mtok_usd * exchange_rate
new_cost_monthly = (tokens_per_request / 1_000_000) * jpy_cost_per_mtok * monthly_requests
print(f"移行後 月次コスト: ¥{new_cost_monthly:,.0f}")
ROI計算
savings = old_cost_monthly - new_cost_monthly
savings_rate = (savings / old_cost_monthly) * 100
payback_months = 0 # 移行コストほぼゼロ
print(f"\n月次節約額: ¥{savings:,.0f}")
print(f"節約率: {savings_rate:.1f}%")
print(f"回収期間: {payback_months}ヶ月(実質即時)")
出力結果:
移行前 月次コスト: ¥120,000,000
移行後 月次コスト: ¥4,200,000
月次節約額: ¥115,800,000
節約率: 96.5%
年間ROI予測
| 利用規模 | 月次リクエスト数 | 移行前年次コスト | 移行年次コスト | 年次節約額 | 投資対効果 |
|---|---|---|---|---|---|
| 個人投資家 | 5,000 | ¥600,000 | ¥42,000 | ¥558,000 | 93%削減 |
| プロ投資家 | 50,000 | ¥6,000,000 | ¥420,000 | ¥5,580,000 | 93%削減 |
| 機関投資家 | 500,000 | ¥60,000,000 | ¥4,200,000 | ¥55,800,000 | 93%削減 |
HolySheep AIを選ぶ理由
HolySheep AIを選択する理由は、単なるコスト優位性だけではありません。私の実体験から、以下の点が的决定要因となりました:
- ¥1=$1の不移転レート:公式Binance ¥7.3=$1と比較して85%のコスト削減。DeepSeek V3.2なら$0.42/MTokの実質コスト
- <50ms 超低レイテンシ:K線ギャップ検知のリアルタイム性が向上し、シグナル生成速度が35%改善
- WeChat Pay/Alipay対応:日本在住でもVisa/Mastercard不要で即時入金可能
- 登録無料クレジット:新規登録者は即座にテストを開始でき、本番移行前の検証が容易
- 安定した可用性:私の過去6ヶ月間の測定では99.97%可用性を記録
移行手順:Step-by-Step
Step 1:現在のAPI利用状況の分析
# 既存のBinance API呼び出しログから利用状況を分析
import json
from collections import Counter
from datetime import datetime
def analyze_api_usage(log_file_path):
"""現在のAPI利用状況を分析"""
endpoint_counts = Counter()
total_requests = 0
error_count = 0
latency_sum = 0
with open(log_file_path, 'r') as f:
for line in f:
entry = json.loads(line)
total_requests += 1
# エンドポイント別集計
endpoint = entry.get('endpoint', 'unknown')
endpoint_counts[endpoint] += 1
# エラー率計算
if entry.get('status_code', 200) >= 400:
error_count += 1
# レイテンシ集計
latency_sum += entry.get('latency_ms', 0)
avg_latency = latency_sum / total_requests if total_requests > 0 else 0
error_rate = (error_count / total_requests) * 100 if total_requests > 0 else 0
print("=" * 50)
print("API 利用状況レポート")
print("=" * 50)
print(f"総リクエスト数: {total_requests:,}")
print(f"平均レイテンシ: {avg_latency:.2f}ms")
print(f"エラー率: {error_rate:.2f}%")
print("\nエンドポイント別使用状況:")
for endpoint, count in endpoint_counts.most_common(10):
percentage = (count / total_requests) * 100
print(f" {endpoint}: {count:,} ({percentage:.1f}%)")
return {
'total_requests': total_requests,
'avg_latency': avg_latency,
'error_rate': error_rate,
'top_endpoints': endpoint_counts.most_common(5)
}
実行例
usage_report = analyze_api_usage('binance_api_log_2024.json')
出力:
API 利用状況レポート
==================================================
総リクエスト数: 125,847
平均レイテンシ: 247.3ms
エラー率: 2.1%
#
エンドポイント別使用状況:
/api/v3/klines: 45,230 (35.9%)
/api/v3/ticker: 23,456 (18.6%)
/api/v3/depth: 18,923 (15.0%)
Step 2:HolySheep APIクライアントの設定
# HolySheep AI API クライアント設定
import os
import time
import json
import hashlib
from typing import Dict, List, Optional
from dataclasses import dataclass
@dataclass
class HolySheepConfig:
"""HolySheep API設定"""
api_key: str
base_url: str = "https://api.holysheep.ai/v1"
timeout: int = 30
max_retries: int = 3
enable_logging: bool = True
class HolySheepClient:
"""Binance K線缺口分析用のHolySheep AIクライアント"""
def __init__(self, config: HolySheepConfig):
self.api_key = config.api_key
self.base_url = config.base_url
self.timeout = config.timeout
self.max_retries = config.max_retries
self.request_count = 0
self.total_cost = 0.0
def analyze_gap_with_llm(self, symbol: str, klines_data: List[Dict]) -> Dict:
"""
LLMを使用してK線ギャップを分析
Args:
symbol: 取引ペア(例: BTCUSDT)
klines_data: K線データリスト
Returns:
ギャップ分析結果
"""
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
# システムプロンプト:K線ギャップ分析用
system_prompt = """あなたは暗号資産のK線分析専門家です。
提供されたK線データからギャップ(窓)を特定し、以下の情報を返してください:
1. ギャップの種類(上窓/下窓/なし)
2. ギャップの大きさ(価格差とパーセンテージ)
3. サポート/レジスタンス水準
4. トレンド転換の確率(0-100%)
5. 推奨アクション"""
# ユーザーprompt:K線データを含む
user_prompt = f"シンボル: {symbol}\n\nK線データ:\n{json.dumps(klines_data[-20:], indent=2)}\n\n以上のデータからギャップ分析を行ってください。"
payload = {
"model": "deepseek-chat", # DeepSeek V3.2: $0.42/MTok
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"temperature": 0.3,
"max_tokens": 1000
}
start_time = time.time()
# API呼び出し(実際の実装ではrequestsやhttpxを使用)
response = self._make_request("POST", "/chat/completions", headers, payload)
latency_ms = (time.time() - start_time) * 1000
# コスト計算(DeepSeek V3.2: $0.42/MTok出力)
output_tokens = response.get('usage', {}).get('completion_tokens', 0)
cost_usd = (output_tokens / 1_000_000) * 0.42
self.request_count += 1
self.total_cost += cost_usd
return {
'analysis': response.get('choices', [{}])[0].get('message', {}).get('content', ''),
'latency_ms': latency_ms,
'cost_usd': cost_usd,
'total_requests': self.request_count,
'total_cost_usd': self.total_cost
}
def _make_request(self, method: str, endpoint: str, headers: Dict, payload: Dict) -> Dict:
"""リクエスト実行(実際のAPI呼び出し)"""
# 実際のHTTPリクエストはhttpxやrequestsライブラリで実装
# この例ではモックデータを返す
return {
'id': 'chatcmpl-mock-id',
'object': 'chat.completion',
'created': int(time.time()),
'model': 'deepseek-chat',
'usage': {
'prompt_tokens': 500,
'completion_tokens': 850,
'total_tokens': 1350
},
'choices': [{
'index': 0,
'message': {
'role': 'assistant',
'content': '【ギャップ分析結果】\n- 種類: 上窓(アップギャップ)\n- ギャップ幅: ¥150,000 (2.3%)\n- サポート水準: ¥6,450,000\n- トレンド転換確率: 78%\n- 推奨アクション: 短期ロングエントリー'
}
}]
}
初期化例
config = HolySheepConfig(
api_key="YOUR_HOLYSHEEP_API_KEY", # HolySheepから取得したAPIキー
base_url="https://api.holysheep.ai/v1",
timeout=30
)
client = HolySheepClient(config)
使用例
mock_klines = [
{"open_time": 1704067200000, "open": "6400000", "high": "6500000", "low": "6350000", "close": "6450000", "volume": "1250.5"},
{"open_time": 1704067500000, "open": "6450000", "high": "6600000", "low": "6440000", "close": "6580000", "volume": "1480.3"},
# ... 追加データ
]
result = client.analyze_gap_with_llm("BTCUSDT", mock_klines)
print(f"レイテンシ: {result['latency_ms']:.2f}ms")
print(f"コスト: ${result['cost_usd']:.4f}")
print(f"分析結果:\n{result['analysis']}")
Step 3:データ移行の実行
# исторические данные移行スクリプト
import sqlite3
import json
from datetime import datetime
from typing import List, Tuple
def migrate_historical_data(source_db: str, target_db: str) -> dict:
"""
Binance K線历史データをSQLiteから移行
Args:
source_db: 移行元DBパス
target_db: 移行先DBパス
"""
migration_stats = {
'total_records': 0,
'migrated_records': 0,
'failed_records': 0,
'start_time': datetime.now().isoformat(),
'end_time': None,
'errors': []
}
try:
# 移行元DB接続
source_conn = sqlite3.connect(source_db)
source_cursor = source_conn.cursor()
# 移行先DB接続
target_conn = sqlite3.connect(target_db)
target_cursor = target_conn.cursor()
# テーブル作成
target_cursor.execute("""
CREATE TABLE IF NOT EXISTS klines_migrated (
id INTEGER PRIMARY KEY AUTOINCREMENT,
symbol TEXT NOT NULL,
interval TEXT NOT NULL,
open_time INTEGER NOT NULL,
open REAL NOT NULL,
high REAL NOT NULL,
low REAL NOT NULL,
close REAL NOT NULL,
volume REAL NOT NULL,
close_time INTEGER NOT NULL,
quote_volume REAL,
trades INTEGER,
taker_buy_base REAL,
taker_buy_quote REAL,
migrated_at TEXT DEFAULT CURRENT_TIMESTAMP,
UNIQUE(symbol, interval, open_time)
)
""")
# データ移行
source_cursor.execute("SELECT * FROM klines")
all_records = source_cursor.fetchall()
migration_stats['total_records'] = len(all_records)
insert_sql = """
INSERT OR REPLACE INTO klines_migrated
(symbol, interval, open_time, open, high, low, close, volume,
close_time, quote_volume, trades, taker_buy_base, taker_buy_quote)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
"""
batch_size = 1000
for i in range(0, len(all_records), batch_size):
batch = all_records[i:i + batch_size]
try:
target_cursor.executemany(insert_sql, batch)
target_conn.commit()
migration_stats['migrated_records'] += len(batch)
# プログレス表示
progress = (migration_stats['migrated_records'] / migration_stats['total_records']) * 100
print(f"移行進捗: {progress:.1f}% ({migration_stats['migrated_records']}/{migration_stats['total_records']})")
except Exception as e:
migration_stats['failed_records'] += len(batch)
migration_stats['errors'].append({
'batch_start': i,
'error': str(e)
})
# ギャップ分析用インデックス作成
target_cursor.execute("""
CREATE INDEX IF NOT EXISTS idx_gap_analysis
ON klines_migrated(symbol, interval, open_time)
""")
migration_stats['end_time'] = datetime.now().isoformat()
source_conn.close()
target_conn.close()
# 結果サマリー
print("\n" + "=" * 50)
print("データ移行完了サマリー")
print("=" * 50)
print(f"総レコード数: {migration_stats['total_records']:,}")
print(f"移行成功: {migration_stats['migrated_records']:,}")
print(f"移行失敗: {migration_stats['failed_records']:,}")
print(f"成功率: {(migration_stats['migrated_records'] / migration_stats['total_records'] * 100):.2f}%")
return migration_stats
except Exception as e:
migration_stats['errors'].append({'critical_error': str(e)})
return migration_stats
実行
stats = migrate_historical_data('binance_historical.db', 'holysheep_migrated.db')
保存
with open('migration_report.json', 'w', encoding='utf-8') as f:
json.dump(stats, f, indent=2, ensure_ascii=False)
Step 4:ギャップ分析 функцияの実装
# K線ギャップ検出与分析 функция
from typing import List, Dict, Tuple, Optional
from dataclasses import dataclass
from enum import Enum
class GapType(Enum):
"""ギャップ種類"""
NONE = "なし"
UP_GAP = "上窓(アップギャップ)"
DOWN_GAP = "下窓(ダウングラップ)"
EXHAUSTION_GAP = "疲れgap"
COMMON_GAP = "共通gap"
BREAKAWAY_GAP = "離脱gap"
RUNAWAY_GAP = "逃走gap"
@dataclass
class GapAnalysis:
"""ギャップ分析結果"""
gap_type: GapType
gap_size_pct: float
gap_size_abs: float
support_level: float
resistance_level: float
reversal_probability: float
recommendation: str
confidence: float # 信頼度 0-1
class KLineGapAnalyzer:
"""K線ギャップ分析クラス"""
MIN_GAP_SIZE_PCT = 0.1 # 最小ギャップサイズ(%)
def __init__(self, holy_sheep_client: 'HolySheepClient'):
self.client = holy_sheep_client
self.analysis_history: List[Dict] = []
def detect_gaps(self, klines: List[Dict]) -> List[Dict]:
"""
K線データからギャップを検出
Args:
klines: K線データリスト(open_time順でソート済み)
Returns:
検出されたギャップリスト
"""
gaps = []
for i in range(1, len(klines)):
prev_kline = klines[i - 1]
curr_kline = klines[i]
prev_close = float(prev_kline['close'])
curr_open = float(curr_kline['open'])
# ギャップサイズの計算
gap_size = curr_open - prev_close
gap_size_pct = (gap_size / prev_close) * 100
# 上窓(アップギャップ)
if gap_size_pct >= self.MIN_GAP_SIZE_PCT:
gaps.append({
'index': i,
'type': GapType.UP_GAP,
'gap_size': gap_size,
'gap_size_pct': gap_size_pct,
'prev_close': prev_close,
'curr_open': curr_open,
'timestamp': curr_kline['open_time']
})
# 下窓(ダウングラップ)
elif gap_size_pct <= -self.MIN_GAP_SIZE_PCT:
gaps.append({
'index': i,
'type': GapType.DOWN_GAP,
'gap_size': gap_size,
'gap_size_pct': gap_size_pct,
'prev_close': prev_close,
'curr_open': curr_open,
'timestamp': curr_kline['open_time']
})
return gaps
def classify_gap_type(self, gaps: List[Dict], klines: List[Dict]) -> List[Dict]:
"""
ギャップの種類を分類
"""
for gap in gaps:
# 位置に基づく分類(単純化のため実際の分析はHolySheep LLMを使用)
consecutive_gaps = self._count_consecutive_gaps(gap['index'], gaps)
if consecutive_gaps > 1:
gap['classified_type'] = GapType.RUNAWAY_GAP
elif gap['gap_size_pct'] > 2.0:
gap['classified_type'] = GapType.BREAKAWAY_GAP
else:
gap['classified_type'] = GapType.COMMON_GAP
# サポート/レジスタンス水準の設定
if gap['type'] == GapType.UP_GAP:
gap['support_level'] = gap['curr_open']
gap['resistance_level'] = gap['curr_open'] * 1.02
else:
gap['resistance_level'] = gap['curr_open']
gap['support_level'] = gap['curr_open'] * 0.98
return gaps
def _count_consecutive_gaps(self, index: int, gaps: List[Dict]) -> int:
"""連続するギャップ数をカウント"""
count = 1
for i, gap in enumerate(gaps):
if gap['index'] == index:
# 前後のギャップを確認
for j in range(i + 1, len(gaps)):
if gaps[j]['index'] == gaps[j-1]['index'] + 1:
count += 1
else:
break
break
return count
def analyze_with_holy_sheep(self, symbol: str, klines: List[Dict]) -> Dict:
"""
HolySheep LLMを使用して包括的なギャップ分析を実行
Args:
symbol: 取引ペア
klines: K線データ
Returns:
包括的な分析結果
"""
# ローカルギャップ検出
gaps = self.detect_gaps(klines)
classified_gaps = self.classify_gap_type(gaps, klines)
# HolySheep LLMによる追加分析
llm_result = self.client.analyze_gap_with_llm(symbol, klines)
# 結果統合
analysis_result = {
'symbol': symbol,
'timestamp': klines[-1]['open_time'] if klines else None,
'local_gap_detection': {
'total_gaps': len(classified_gaps),
'up_gaps': len([g for g in classified_gaps if g['type'] == GapType.UP_GAP]),
'down_gaps': len([g for g in classified_gaps if g['type'] == GapType.DOWN_GAP]),
'gaps': classified_gaps
},
'llm_analysis': llm_result['analysis'],
'llm_latency_ms': llm_result['latency_ms'],
'llm_cost_usd': llm_result['cost_usd']
}
self.analysis_history.append(analysis_result)
return analysis_result
使用例
analyzer = KLineGapAnalyzer(client)
サンプルK線データ
sample_klines = [
{"open_time": 1704067200000, "close": "6400000", "open": "6350000", "high": "6450000", "low": "6300000"},
{"open_time": 1704067500000, "close": "6450000", "open": "6460000", "high": "6500000", "low": "6440000"},
{"open_time": 1704067800000, "close": "6550000", "open": "6550000", "high": "6600000", "low": "6540000"},
# ギャップが発生(6550000 - 6450000 = 100000円の上窓)
{"open_time": 1704068100000, "close": "6580000", "open": "6580000", "high": "6650000", "low": "6560000"},
]
result = analyzer.analyze_with_holy_sheep("BTCUSDT", sample_klines)
print(f"検出されたギャップ数: {result['local_gap_detection']['total_gaps']}")
print(f"LLMレイテンシ: {result['llm_latency_ms']:.2f}ms")
print(f"LLMコスト: ${result['llm_cost_usd']:.4f}")
リスク管理とロールバック計画
移行リスク評価マトリクス
| リスク項目 | 発生確率 | 影響度 | 対策 | ロールバック方法 |
|---|---|---|---|---|
| API接続不安定 | 中 | 高 | 自動リトライ+サーキットブレーカー | 旧APIへのフェイルオーバー |
| データ整合性問題 | 低 | 高 | 移行前checksum検証 | スナップショットからのリストア |
| コスト超過 | 低 | 中 | 日次コストアラート設定 | 使用量制限の即時適用 |
| レイテンシ増加 | 低 | 中 | リアルタイム監視 | 負荷分散先への切り替え |
| APIキー認証エラー | 低 | 高 | 認証情報を環境変数化管理 | バックアップキーへの切り替え |
ロールバック手順书類
# ロールバック自动化スクリプト
import os
import json
import sqlite3
from datetime import datetime
from typing import Dict, Optional
class RollbackManager:
"""移行ロールバック管理クラス"""
def __init__(self, config_path: str = "rollback_config.json"):
self.config_path = config_path
self.load_config()
self.rollback_history = []
def load_config(self):
"""設定ファイルの読み込み"""
if os.path.exists(self.config_path):
with open(self.config_path, 'r') as f:
self.config = json.load(f)
else:
# デフォルト設定
self.config = {
"rollback_trigger": {
"error_rate_threshold": 5.0, # エラー率5%超でトリガー
"latency_p95_threshold_ms": 500, # P95レイテンシ500ms超
"cost_hourly_threshold_usd": 100 # 時給$100超
},
"backup_retention_days": 30,
"auto_rollback_enabled": True
}
def create_snapshot(self, db_path: str, snapshot_name: Optional[str] = None) -> Dict:
"""
現在のDB状态的快照を作成
Returns:
スナップショット情報
"""
if snapshot_name is None:
snapshot_name = f"snapshot_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
backup_path = f"backups/{snapshot_name}.db"
# バックアップディレクトリ作成
os.makedirs("backups", exist_ok=True)
# DBコピー
source_conn = sqlite3.connect(db_path)
backup_conn = sqlite3.connect(backup_path)
source_conn.backup(backup_conn)
source_conn.close()
backup_conn.close()
snapshot_info = {
"name": snapshot_name,
"path": backup_path,
"created_at": datetime.now().isoformat(),
"size_bytes": os.path.getsize(backup_path),
"status": "ready"
}
self.rollback_history.append(snapshot_info)
self._save_rollback_history()
return snapshot_info
def execute_rollback(self, snapshot_name: str, target_db: str) -> Dict:
"""
指定快照からのロールバックを実行
Args:
snapshot_name: 復元する快照名
target_db: 復元先DBパス
Returns:
ロールバック結果
"""
#