會寫 策略回測之後,真正決定進出場長怎樣的,是「下單指令」和「委託單類型」。這篇把 Pine Script v6 的四個下單函式(entry/order/exit/close)差別講清楚,再說明市價、限價、停損三種委託方式怎麼寫、各用在什麼策略。範例都可直接貼進 TradingView 跑。
進場用 strategy.entry(會自動翻倉);加減倉用 strategy.order;設停損停利出場用 strategy.exit;立刻全部平掉用 strategy.close。
四個下單函式差在哪?
| 函式 | 用途 | 下反向單 | 停損停利 |
|---|---|---|---|
| strategy.entry | 進場(直接調到指定方向部位) | 自動平舊倉再翻倉 | 搭配 exit |
| strategy.order | 最通用,分批加減倉 | 不反轉,依數量加減 | 要自己寫 |
| strategy.exit | 設出場條件(可部分平倉) | — | ✔ 可停損/停利/移動停損 |
| strategy.close | 把指定部位全部平掉(市價) | — | ✘ |
新手大多用 entry + exit(或 close)就夠了。entry 進場、exit 設停損停利、close 直接平倉。order 是進階、要自己算加減倉數量時才用。
三種委託方式:市價、限價、停損
委託方式是寫在 strategy.entry/strategy.order 的參數裡——關鍵就是有沒有填 limit 和 stop:
//@version=6 strategy("委託方式範例", overlay = true) // ① 市價單:不填 limit / stop → 用當前價立刻成交 strategy.entry("多", strategy.long) // ② 限價單:limit=價 → 價格「跌到」100 或更低才買(拉回買) strategy.entry("多", strategy.long, limit = 100.0) // ③ 停損(觸價)單:stop=價 → 價格「漲破」105 才買(追突破) strategy.entry("多", strategy.long, stop = 105.0)
| 委託方式 | 怎麼寫 | 何時成交 | 常用於 |
|---|---|---|---|
| 市價單 market | 不填 limit/stop | 立刻,用當前市價 | 搶速度、當下就要進 |
| 限價單 limit | limit = 價 | 價格到你的價或更好 | 拉回買、逢高賣 |
| 停損單 stop | stop = 價 | 價格突破你的價 | 突破型策略 |
限價和停損方向相反:限價買單是「等它跌到便宜價」才買;停損買單是「等它漲破」才追。一個等回檔、一個追突破,別搞混。
停損停利怎麼寫?用 strategy.exit
進場後要設「跌到多少停損、漲到多少停利」,用 strategy.exit,並用 from_entry 指定要對哪一筆進場單:
//@version=6 strategy("均線交叉 + 停損停利", overlay = true) fast = ta.sma(close, 5) slow = ta.sma(close, 20) // 黃金交叉 → 市價進場做多 if ta.crossover(fast, slow) strategy.entry("多", strategy.long) // 出場:跌破進場價 5% 停損,或漲 10% 停利 strategy.exit("出場", from_entry = "多", stop = strategy.position_avg_price * 0.95, limit = strategy.position_avg_price * 1.10)
strategy.position_avg_price 是你目前部位的平均進場價,用它乘 0.95 / 1.10 就是「-5% 停損 / +10% 停利」。想直接平倉不設條件,就用 strategy.close("多")。
1. entry 會自動翻倉:已經有多單時再下空單的 entry,會先平多單再建空單,不是同時持有多空。要單純加減同方向部位,用 strategy.order。
2. 回測 ≠ 未來:下單寫得再漂亮,也逃不過過度最佳化、沒算成本、前視偏誤那些陷阱。委託價、停損停利都要合理,別只為了讓回測曲線好看而硬湊。