Part1でスクリプトの自動生成、Part2でLINE通知・Bitget自動注文の連携まで完成しました。

Part3では「本当に機能する戦略」を作るための核心に踏み込みます。AI自動売買の向き・不向きの把握、自分だけの感覚をコードに落とし込む方法、そして見かけの好成績に騙されないための検証手順まで解説します。

📘 この記事でできるようになること

  • AI自動売買が短期・長期どちらに向いているか正しく理解できる
  • 「なんとなくの感覚」「経験則」を条件式に言語化できる
  • 自己流の複雑なロジックをClaude Codeで実装できる
  • カーブフィッティングを見破り・回避できる

AI自動売買は短期・長期どちらに向いているか

「自動売買=24時間休まず短期売買」というイメージを持っている方が多いですが、実際はその逆です。TradingView×Claude Codeの構成では中長期トレードの方が圧倒的に相性が良いです。その理由を詳しく解説します。

短期トレード(スキャル・デイ)との相性

観点 評価 理由
執行スピード ❌ 不向き アラート→GAS→Bitget APIまで数秒のラグが生じる
ノイズ耐性 ❌ 弱い 1分・5分足はダマシが多くロジックが頻繁に崩れる
手数料負け ❌ 危険 取引回数が増えるほど手数料が利益を削り取る
24時間対応 ✅ 有利 仮想通貨は夜間も動くため監視の自動化は有効

中長期トレード(スイング・ポジション)との相性

観点 評価 理由
ラグ許容 ✅ 問題なし 4時間・日足なら数秒のラグは完全に誤差の範囲
ノイズ耐性 ✅ 強い 長い時間足ほど信頼性の高いシグナルが出る
バックテスト精度 ✅ 高い トレード数が適切で統計的に意味のある検証ができる
監視頻度 ✅ 低くてOK 1日1〜2回のチェックで運用できる

推奨時間足まとめ

時間足 向き 対象
1分・5分足 非推奨 ラグとノイズで機能しないケースが多い
15分・30分足 要注意 経験者向け・手数料管理が重要
1時間・4時間足 ⭐ 最推奨 中級者に最もバランスが良い
日足 推奨 スイング・長期保有向け・最も安定

💡 仮想通貨ならではのポイント

仮想通貨は24時間365日動いており、深夜帯に大きな動きが出ることも珍しくありません。自動売買+LINE通知の組み合わせ(Part2で実装済み)は、就寝中のチャンスを逃さないために特に有効です。


「感覚」を言語化するフレームワーク

長年トレードをしてきた人ほど「なんとなく上がりそう」「この形は危ない」という感覚が身についています。しかしこの感覚はコンピューターには通じません。Claude Codeへの指示は数値・条件・順序で表現する必要があります。

なぜ感覚のままではコードにできないのか

❌ コードにできない表現の例

  • 「上がりそうな雰囲気がある」
  • 「チャートの形が良い」
  • 「勢いがある」
  • 「なんか危ない感じがする」

✅ コードにできる表現に変換した例

  • 「RSIが30以下で直近の安値を更新していない」
  • 「短期MAが長期MAを上抜けてから3本以内」
  • 「直近5本の出来高の平均が20本平均の2倍以上」
  • 「直近10本で連続した下落後、最初の陽線が出た」

感覚→言語化の3ステップ

STEP 1|何を見ているかを書き出す

エントリーのときに自分が必ず確認しているものを全部書き出します。インジケーター・ローソク足の形・チャートパターン・直近の高値安値など、どんな些細なことでもOKです。

STEP 2|何が起きたとき動くかを条件式にする

「〇〇が△△を上回ったとき」「〇〇が連続してN回起きたとき」「〇〇と□□が同時に成立したとき」という形に変換します。数値化できないものは一度わきに置きます。

STEP 3|利確・損切りを数値化する

「なんとなく上がったら利確」ではなく「エントリーから+3%で利確・−1.5%で損切り」または「〇〇の条件が崩れたらイグジット」と明確に定義します。

Claude Codeに「感覚をヒアリング」させるプロンプト

自分で言語化するのが難しい場合は、Claude Codeに質問してもらいながら整理する方法が有効です。

💬 感覚ヒアリング用プロンプト

「私のトレード感覚をPINEスクリプトに変換するために、以下の質問に答えます。条件に変換できるか一緒に考えてください。

【私のトレードの感覚】
・〔ここに自分の言葉で書く〕

これをもとに以下を聞いてください:
①数値化できる条件はどれか
②あいまいな部分を明確にするためにどんな情報が必要か
③条件として成立しないものがあれば教えてください」

感覚をコードに変換した実例

感覚・言葉 PINEスクリプトの条件
「出来高が急に増えた」 volume > ta.sma(volume, 20) * 2
「下がり続けた後に反発した」 ta.falling(close, 3)
「上位足のトレンドが上向き」 request.security(syminfo.tickerid,”D”,close) > request.security(syminfo.tickerid,”D”,ta.ema(close,50))
「ヒゲが長い陽線が出た」 (high – low) > (close – open) * 3 and close > open
「東京時間だけ取引したい」 hour(time,”Asia/Tokyo”) >= 9 and hour(time,”Asia/Tokyo”) < 15

✦ TradingView 公式パートナーリンク ✦

日足・4時間足のバックテストには長期データが必要

有料プランでバックテスト期間が最大20年に延長・紹介リンクで15ドル割引適用

今すぐTradingViewを始める →


複雑なロジックをClaude Codeで実装する

構造化プロンプトのテンプレート

複雑な条件をClaude Codeに渡すときは、箇条書きで構造化することがポイントです。あいまいな文章で渡すと意図が伝わらず、的外れなコードが生成されます。

💬 複雑なロジック向け構造化プロンプト

「以下の条件でPINEスクリプト(v5・strategy形式)を作成してください。

【エントリー条件(すべてAND)】
・条件A:〇〇
・条件B:〇〇
・条件C:〇〇

【除外フィルター(以下のときはエントリーしない)】
・△△のとき
・□□の場合

【イグジット条件】
・利確:エントリーから+〇%
・損切り:エントリーから−〇%
・または〇〇の条件が崩れたとき

【時間フィルター】
・日本時間〇〇時〜〇〇時のみ有効

【バックテスト設定】
・初期資金:〇〇円・1回〇%・手数料〇%

コメントはすべて日本語で」

実装例:上位足トレンドフィルター付き複合戦略

「日足のトレンドが上向きのときだけ、1時間足でゴールデンクロスが出たらエントリー」というよくある感覚をコードにした実例です。

上位足フィルター付き複合戦略(Claude Code生成例)

//@version=5
strategy("上位足フィルター付き戦略", overlay=true,
         initial_capital=100000,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=10,
         commission_type=strategy.commission.percent,
         commission_value=0.1)

// ── パラメーター ─────────────────────────────
maShort    = input.int(20, title="短期EMA")
maLong     = input.int(50, title="長期EMA")
rsiLen     = input.int(14, title="RSI期間")
rsiFilter  = input.int(50, title="RSIフィルター(以上のみエントリー)")
startHour  = input.int(9,  title="取引開始時間(JST)")
endHour    = input.int(21, title="取引終了時間(JST)")
takePct    = input.float(3.0, title="利確(%)")
stopPct    = input.float(1.5, title="損切り(%)")

// ── 上位足(日足)トレンド判定 ────────────────
// 日足の終値が日足EMA50より上なら上昇トレンド
dailyClose = request.security(syminfo.tickerid, "D", close)
dailyEMA50 = request.security(syminfo.tickerid, "D", ta.ema(close, 50))
trendUp    = dailyClose > dailyEMA50   // 日足トレンドが上向き

// ── 下位足(1時間足)のシグナル ──────────────
maS          = ta.ema(close, maShort)
maL          = ta.ema(close, maLong)
goldenCross  = ta.crossover(maS, maL)   // ゴールデンクロス
rsi          = ta.rsi(close, rsiLen)

// ── 時間フィルター(日本時間) ─────────────────
jstHour    = hour(time, "Asia/Tokyo")
inSession  = jstHour >= startHour and jstHour < endHour

// ── 最終エントリー条件(すべてAND) ──────────
buySignal = trendUp        // 日足が上昇トレンド
          and goldenCross  // ゴールデンクロス発生
          and rsi > rsiFilter  // RSIが50以上(勢いあり)
          and inSession    // 取引時間内

// ── 注文処理 ──────────────────────────────────
if buySignal
    strategy.entry("買い", strategy.long)

// 利確・損切り(パーセント指定)
strategy.exit("イグジット", "買い",
     profit = close * takePct / 100 / syminfo.mintick,
     loss   = close * stopPct / 100 / syminfo.mintick)

// ── チャート表示 ──────────────────────────────
plot(maS, title="短期EMA", color=color.blue,   linewidth=2)
plot(maL, title="長期EMA", color=color.orange, linewidth=2)
plotshape(buySignal, title="エントリー",
     style=shape.arrowup, location=location.belowbar,
     color=color.green, size=size.normal)

時間フィルターの活用(市場時間帯限定)

「東京時間だけ」「ロンドン・NY時間は避ける」といった時間帯フィルターも自然な言葉でClaude Codeに依頼できます。

💬 時間フィルタープロンプト例

「日本時間の朝9時から夕方18時の間だけエントリーするよう時間フィルターを追加してください。それ以外の時間帯のシグナルは無視します」


カーブフィッティングを見破る・回避する

バックテストで勝率90%・純利益+80%という輝かしい数値が出たとしても、実際のトレードで同じ結果になることはほぼありません。これがカーブフィッティング(過最適化)という落とし穴です。

カーブフィッティングとは何か

⚠️ よくある失敗パターン

バックテストで「RSI期間を14→11に変えたら勝率が上がった」「損切りを1.5%→1.2%にしたらPFが改善した」と調整を繰り返した結果、そのパラメーターがたまたま過去データにピッタリ合っているだけの状態になります。

未来の相場はその「ピッタリ合った」データと異なるため、リアル運用では急激に成績が悪化します。

見破るための3つのチェック

① アウトオブサンプルテスト

直近6ヶ月〜1年のデータをテスト期間から除外してバックテストを実行します。最適化に使っていない期間でも同様の成績が出るか確認します。「除外した期間だけ突然成績が悪化する」場合は過最適化のサインです。

② パラメーター感度テスト

RSI期間を「14」から「12・13・15・16」に変えたとき、成績が大きく変わるようなら過最適化の疑いがあります。堅牢なロジックはパラメーターを少し変えても成績が安定しています。

③ 複数銘柄でのテスト

BTCで作った戦略をETH・SOL・BNBでも試します。複数の銘柄で安定して機能するロジックは汎用性が高く、特定の過去データへの依存度が低いと言えます。

Claude Codeで感度テストを自動化

💬 感度テスト用プロンプト

「現在のスクリプトのRSI期間(14)を10〜20の間で2刻みで変えた場合の各バージョンを生成してください。バックテスト結果をTradingViewで比較したいので、RSI期間だけが異なる6パターンのコードを出力してください」

過最適化を防ぐ数値の目安

指標 過最適化の疑いあり 現実的な目安
勝率 80%以上 55〜65%
プロフィットファクター 3.0以上 1.3〜1.8
最大ドローダウン 5%以下 10〜20%
バックテスト期間のトレード数 10件以下 30件以上

✦ BITGET ✦

戦略が完成したらBitgetで実践へ

仮想通貨・株式CFD(Apple・Tesla・S&P500)・ゴールドを1つの口座で管理

Bitgetに無料登録する →


シリーズ3部作の総まとめ

✅ Part1でできたこと

  • Claude Code × TradingView MCPのセットアップ
  • 日本語プロンプトでRSI売買サインを自動生成
  • バックテストで戦略の有効性を数値確認

✅ Part2でできたこと

  • MA・RSI・出来高の複合ロジックを実装
  • LINE Messaging APIでスマホへリアルタイム通知
  • TradingViewのWebhookからBitgetへ自動注文を連携
  • 反復プロンプトでバックテスト精度を段階的に改善

✅ Part3でできたこと

  • AI自動売買の時間足別の向き・不向きを理解
  • 「なんとなくの感覚」を条件式に言語化
  • 上位足フィルター・時間帯フィルター付きの複合戦略を実装
  • カーブフィッティングを見破り・回避する手順を習得

💡 次のステップ

3つのステップを終えたら、実際の少額資金でのライブ運用を試してみましょう。バックテストとリアルの乖離を観察し、改善点をClaude Codeに伝えて戦略をブラッシュアップしていくことが長期的な成功への道です。完璧な戦略を目指すより、改善サイクルを回し続けることの方が重要です。

✦ STEP 1 ✦

TradingViewで今すぐ始める

紹介リンクから登録で15ドル割引が適用されます

日足・4時間足のバックテストには有料プランの長期データが必須

今すぐTradingViewを始める →

✦ STEP 2 ✦

Bitgetで実際に取引する

仮想通貨・株式CFD・ゴールド・外貨を1つの口座でまとめて管理

Bitgetに無料登録する →

よくある質問

Q. どの時間足から始めるのが一番安全ですか?

4時間足または日足から始めることを強くおすすめします。トレード回数が適度で統計的に意味のあるバックテストができ、ラグの影響も無視できます。慣れてきたら1時間足に移行しましょう。

Q. 感覚をすべてコードにできなくても大丈夫ですか?

大丈夫です。数値化できない感覚は一旦省いて、数値化できる条件だけでスクリプトを作るところから始めましょう。運用しながら「この条件も追加したい」と気づいたときにClaude Codeに追記を依頼する形で少しずつ育てていけます。

Q. バックテストで勝率55%はリアルでも通用しますか?

アウトオブサンプルテストと複数銘柄テストを通過した勝率55%のロジックであれば、リアル運用でも一定の有効性が期待できます。ただし相場環境は常に変化するため、定期的な見直しと改善が必要です。

Q. 株式CFD(xStocks)でも同じスクリプトが使えますか?

TradingViewでxStocksに対応した銘柄のチャートが表示されれば、同じPINEスクリプトをそのまま適用できます。ただし株式には取引時間(米国市場の場合は日本時間22:30〜5:00)があるため、時間フィルターの設定が重要になります。

※ 本記事はTradingView・Bitgetのアフィリエイトリンクを含みます。リンク経由でのご登録はブログ運営の支援になります。
※ 自動売買・APIを使った取引にはリスクが伴います。本記事は投資助言を目的としていません。損失に対する責任は負いかねますのでご了承ください。

関連記事