AI 自動化

crypto trading bot prompt 拆解:六段寫法+五層自查

2026-10-27·5 分鐘閱讀

你讓 AI 寫了一段 Pine Script,貼進 TradingView 一次就編譯過。然後你設了 alert、填了 webhook URL、按了 Create——什麼事都沒發生。沒有錯誤訊息、沒有通知,只有靜默。

這篇文章不評論你用的是哪個 AI 工具好不好,也不做工具對比。它只做一件事:把 crypto trading bot prompt 拆成六段,每段給你可驗的檢查點,交稿前用五層逐層自檢。

第 0 層:這個 alert 有沒有資格送 webhook?

在寫任何 prompt 之前,先確認你拿到的 alert 是 indicator 還是 strategy。這層決定後面所有規則是否適用——如果 alert 本身就不對,prompt 寫得再好也白費。

帶 strategy. 前綴的 placeholder 只能用 strategy 建立的 alert;用在 indicator alert 會替換成空值、沒有錯誤訊息。這是由官方定義推導出的結論,不是 TradingView 自己白紙黑字寫出來的一句話。

你現在要做的第一件事:去圖表右上角「Add Alert」對話框,把條件選好,往下拉到「Notifications」區塊看「Script」欄位。把 AI 生成的 prompt 貼進那裡,按「Create」。如果看到「No alerts created. Please select a strategy instead of an indicator」,代表你拿到的 alert 是 indicator。

indicator alert 送 webhook 會安靜地壞掉
indicator alert 送 webhook 不會給你明確的錯誤訊息——它只是靜默失敗。完整除錯流程見 TradingView Webhook 沒反應?完整除錯流程圖。

Crypto trading bot prompt 的六段骨架:每段都有可驗的檢查點

把 AI 生成的 prompt 拆成六段,每段都能獨立驗證。你不需要一次寫完,可以一段一段跟 AI 確認,每段都要求它「給我一筆一筆的輸出範例」,而不是只看程式碼長什麼樣。

三個技術詞,第一次出現先解釋清楚:

詞意思
webhookTradingView 會把 alert 的資料「推」到一個外部網址(你設的)。網站掛掉或網路卡,通知就延遲或丟掉——這是 webhook 天生的缺點,任何自動化工具都一樣。
API key讓網站能跟交易所自動下單的鑰匙。你必須用自己的 key,不要讓別人拿到——一旦洩漏,你的錢可能被偷。
Pine ScriptTradingView 自己的程式碼語言。你貼進 alert 的 prompt 會生成一段 Pine Script,這段程式碼要能編譯、要能下單——兩件事不是一回事。

三個必懂詞(2026-10-17 查證)

第一段:識別目標——indicator 還是 strategy?

反問自己:最終下單數量,是由 TradingView 端決定,還是執行端決定?這個問題的答案決定了你該用哪種 alert。

如果有 strategy.entry、strategy.exit 或 strategy.position_size,代表這是 strategy,可以送 webhook。紅旗:只有 ta.xxx 函式或 plot/bgcolor 輸出,沒有下單相關——這是 indicator,不要送 webhook。

問 AI 的時候,直接給指令,不要問「這段程式碼好不好」:

text
問 AI:
        這段程式碼如果貼到 Webhook 位置,會用什麼欄位決定下單數量?
        請列出一筆一筆的範例。

第二段:輸入參數——價格從哪裡讀、用哪根 K 棒?

要問 AI 的事:從哪裡讀價格?用哪根 K 棒?要不要等 bar close?這些細節決定了你的訊號是「回測時漂亮、實盤時漏單」還是真的能用。

陷阱:很多 prompt 只寫「用收盤價」,沒寫用哪根 K 棒。如果 alert 設成「Once per bar」,但程式碼用 close[1],你拿到的是上一根 K 棒的收盤價——差一根 bar,下單時間就錯了。

text
給 AI 的檢查指令:
        請列出所有 input 來源:
        - 是否用 request.security?如果有,寫出 timeframe 與 lookahead 設定
        - 是否用 barstate.isconfirmed?為什麼需要等確認?
        - 是否用 input.xxx 讓使用者在圖表上改數值?列出所有 input
        - 是否用 alert.freq_once_per_bar_close 或 alert.freq_once_per_bar?

        請給我一筆一筆的範例。

第三段:輸出定義——下單數量誰決定?

核心問題:最終下單數量,是由 TradingView 端決定,還是執行端決定?兩邊都能控制,但機制完全不同。

TradingView 端用 strategy.position_size 控制數量——這是 Pine 策略完全在 TradingView 伺服器上模擬出來的數字,跟你真實帳戶沒關係。執行端(webhook)則用 qty_type(百分比、固定數量、手動)加上 quantity 決定實際下單數量。

問 AI 的輸出要求:

text
請以一筆一筆的格式輸出:
        alert_time | price | qty | direction | strategy.position_size
        2026-09-28T10:30:00 | 65432.50 | 10 | long | 5000

        請說明每一欄位的來源:
        - price:是用哪根 K 棒的收盤價?用 request.security 的話 lookahead 設什麼?
        - qty:是固定值還是用 strategy.percent_of_equity 計算?
        - strategy.position_size:這是 TradingView 模擬出來的數字,跟你真實帳戶沒關係。

第四段:條件邏輯——什麼時候觸發、會不會漏?

反問:這個條件在回測時會觸發,但在實盤會不會因為「bar 沒確認」而漏掉?這是回測漂亮、實盤對不上的最常見原因。

barstate.isconfirmed:如果條件用現價,加上 and barstate.isconfirmed 避免 bar 還沒走完就觸發。request.security:如果跨時間框架,寫出 lookahead 與 barmerge 設定,避免未來資料。詳細的 lookahead 陷阱見 request.security lookahead 陷阱:回測漂亮實盤對不上。

當中的條件要問 AI:「這段條件在實盤會漏掉多少筆?用 barstate.isconfirmed 會擋掉幾筆?」

官方解法
TradingView 官方的建議是搭配 request.security 的位移參數 [1] 與 barstate.isconfirmed,或把 alert 頻率設成 bar close。

第五段:時間框架與數據來源

跨時間框架是 Pine Script 最容易出錯的地方。高時間框架做趨勢過濾、低時間框架做精確下單——聽起來合理,但 request.security 的 lookahead 設錯就會偷到未來資料。

給 AI 的輸出要求:

text
請列出所有 request.security 的使用處,格式:
        request.security(timeframe, source, expression, lookahead, barmerge)
        - timeframe: 1D / 4H / 1H / 60 / 30 / 15 / 5 / 3 / 1 / 600
        - source: 同一張圖表 / 別張圖表 / 別個時間框架
        - lookahead: barmerge.lookahead_off(預設)or barmerge.lookahead_on

        請說明為什麼需要跨時間框架:
        - 是要用高時間框架的趨勢做過濾?
        - 還是要用低時間框架的數據做精確下單?

        請用範例說明。

預設就是 barmerge.lookahead_off(安全值),只有顯式傳 barmerge.lookahead_on 才會偷未來資料。prompt 應該寫「預設就是安全的,不用特別設」,而不是「一定要設,不然會偷未來」。

第六段:風險控制與邊界

先講結論:TradingView 對 webhook「送達/重試/延遲時程」沒有白紙黑字承諾——這是推導,不是官方原句。

單一 alert 在 3 分鐘內最多觸發 15 次,超過就不發送。strategy 回測跑在 broker emulator,成交的是 hypothetical orders,跟真實帳戶沒有連結。webhook 延遲通常 1–5 秒,但官方沒有給上限。

問 AI:「這段程式碼在 webhook 延遲 5 秒後下單,會跟回測結果差多少?」這個問題沒有標準答案,但 prompt 裡應該提到應對方法。

風險官方有無承諾prompt 該寫什麼
webhook 送達時程沒有白紙黑字承諾(推導)要求 AI 說明延遲對下單的影響
3 分鐘 15 次上限官方明載確認你的策略不會超過這個頻率
回測 vs 實盤差距hypothetical orders 與真實帳戶無關要求 AI 列出回測與實盤的差異來源

webhook 風險邊界(2026-10-17 查證,來源:TradingView 官方文件)

實戰範例:BTC 網格交易 bot 的 prompt 骨架

把六段結構套進一個實際策略,每段的核心要求攤成下表。你可以直接照著這個骨架去問 AI:

段落核心要求可驗檢查點
第一段:識別目標用 strategy.position_size 控制數量程式碼有 strategy. 前綴?
第二段:輸入參數寫出所有 input 來源與 K 棒選擇列出每個 input 的 defval 與用途
第三段:輸出定義下單數量由 TradingView 端決定給出一筆一筆的 alert_time | price | qty 範例
第四段:條件邏輯barstate.isconfirmed + lookahead 設定說明回測與實盤會差幾筆
第五段:時間框架request.security 的 timeframe 與 lookahead列出所有跨時間框架的呼叫
第六段:風險控制webhook 延遲、3 分鐘 15 次上限說明延遲對下單的影響

BTC 網格交易 bot 的六段 prompt 骨架

問 AI 的時候,每段都要求它「給我一筆一筆的輸出範例」,而不是只看程式碼長什麼樣。完整 prompt 範例可以照著這張表一段一段拼起來。

五層檢查:交稿前逐層自檢

交稿前逐層過一遍,任何一層卡住就回去改 prompt,不要硬送:

  • 第 0 層:這個 alert 是 indicator 還是 strategy?如果是 indicator,整篇 prompt 都要重寫。
  • 第 1 層:程式碼能編譯過,但能自動下單嗎?兩者差距在哪裡?
  • 第 2 層:數量是用 TradingView 端(strategy.position_size)還是執行端(webhook qty)決定?
  • 第 3 層:request.security 的 lookahead 設什麼?barstate.isconfirmed 有沒有用?
  • 第 4 層:webhook 延遲、重試、漏單的風險在哪裡?prompt 有沒有提到應對方法?

上面提到的觀察值(編譯成功率約 95%、能自動下單的比例約 30–50%、webhook 延遲通常 1–5 秒)會因 alert 類型、執行端配置、交易所回應速度而大不相同。prompt 應該要求 AI「給我一筆一筆的輸出範例」,而不是只看程式碼長什麼樣。

常見問題

AI 生成的 prompt 貼進去就編譯過,為什麼下單還是失敗?
編譯過只表示語法沒問題,不代表邏輯正確。常見失敗原因:1)用 indicator alert 送 webhook;2)strategy.position_size 寫成 strategy.entry;3)alert message 格式跟執行端不匹配。回測漂亮但實盤什麼都沒發生,大概率是第二個。
request.security 一定要用 lookahead=barmerge.lookahead_off 嗎?
官方說明預設就是 barmerge.lookahead_off(安全值),只有顯式傳 barmerge.lookahead_on 才會偷未來資料。所以 prompt 應該寫「預設就是安全的」,而不是「一定要設,不然會偷未來」。

以下兩個問題同樣常被問到:

strategy.position_size 和 strategy.entry / strategy.exit 有什麼區別?
position_size 是用多少數量下單,entry/exit 是在什麼條件下進出。如果用 webhook,用 position_size 讓 TradingView 端決定數量;如果用策略回測,用 entry/exit 定義進出點。
為什麼我的 alert 在回測時觸發很多,實盤卻很少?
常見原因:1)alert 設成「Once per bar」但程式碼用現價,bar 還沒走完就觸發;2)用 request.security 但 lookahead 設錯。回測和實盤的差異通常出在「時間對齊」上。

本文不構成任何投資建議。加密交易風險高,請評估自身承受能力後再操作。

Get started

想把今天學到的東西自動化跑起來?

把 TradingView 訊號接上自動下單,不用自己寫 Pine Script

免費開始使用