crypto trading bot prompt 拆解:六段寫法+五層自查
你讓 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。
Crypto trading bot prompt 的六段骨架:每段都有可驗的檢查點
把 AI 生成的 prompt 拆成六段,每段都能獨立驗證。你不需要一次寫完,可以一段一段跟 AI 確認,每段都要求它「給我一筆一筆的輸出範例」,而不是只看程式碼長什麼樣。
三個技術詞,第一次出現先解釋清楚:
| 詞 | 意思 |
|---|---|
| webhook | TradingView 會把 alert 的資料「推」到一個外部網址(你設的)。網站掛掉或網路卡,通知就延遲或丟掉——這是 webhook 天生的缺點,任何自動化工具都一樣。 |
| API key | 讓網站能跟交易所自動下單的鑰匙。你必須用自己的 key,不要讓別人拿到——一旦洩漏,你的錢可能被偷。 |
| Pine Script | TradingView 自己的程式碼語言。你貼進 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 的時候,直接給指令,不要問「這段程式碼好不好」:
問 AI:
這段程式碼如果貼到 Webhook 位置,會用什麼欄位決定下單數量?
請列出一筆一筆的範例。第二段:輸入參數——價格從哪裡讀、用哪根 K 棒?
要問 AI 的事:從哪裡讀價格?用哪根 K 棒?要不要等 bar close?這些細節決定了你的訊號是「回測時漂亮、實盤時漏單」還是真的能用。
陷阱:很多 prompt 只寫「用收盤價」,沒寫用哪根 K 棒。如果 alert 設成「Once per bar」,但程式碼用 close[1],你拿到的是上一根 K 棒的收盤價——差一根 bar,下單時間就錯了。
給 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 的輸出要求:
請以一筆一筆的格式輸出:
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 會擋掉幾筆?」
第五段:時間框架與數據來源
跨時間框架是 Pine Script 最容易出錯的地方。高時間框架做趨勢過濾、低時間框架做精確下單——聽起來合理,但 request.security 的 lookahead 設錯就會偷到未來資料。
給 AI 的輸出要求:
請列出所有 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 貼進去就編譯過,為什麼下單還是失敗?
request.security 一定要用 lookahead=barmerge.lookahead_off 嗎?
以下兩個問題同樣常被問到:
strategy.position_size 和 strategy.entry / strategy.exit 有什麼區別?
為什麼我的 alert 在回測時觸發很多,實盤卻很少?
本文不構成任何投資建議。加密交易風險高,請評估自身承受能力後再操作。