策略屬性

每個 Pine 策略都有許多決定其行為的屬性:

  1. 初始資金
  2. 基礎貨幣
  3. 訂單數量
  4. 金字塔式(遞進落單)
  5. 手續費
  6. 對限價單核對價格
  7. 滑點
  8. 保證金
  9. 重新計算基础货币

它們在策略設置的“屬性”標籤中可用:

透過在相應的Pine腳本中編輯strategy()函數調用的參數,可以更改策略屬性中指定的每個參數:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

讓我們來看看“屬性”選單中的每個輸入參數及其在 Pine 語言中的對應參數:  

1 - 初始資金(參數:initial_capital)表示最初可用於交易策略的資金量,以基礎貨幣中定義的貨幣計。預設情況下,此值等於 100,000。您可能需要增加此值才能在某些商品上進行交易。

2 - 基礎貨幣(參數:currency)指定用於計算的貨幣。出現在策略測試器標籤中的結果(盈利、虧損、回撤等)以該貨幣表示。可用的選擇是:
預設、美元、歐元、澳元、英鎊、紐元、加元、瑞士法郎、港元、日元、挪威克朗、瑞典克朗、新加坡元、土耳其里拉、南非蘭特。如果選擇預設選項,該策略將使用該商品的預設貨幣,並且沒有貨幣轉換。

3 - 訂單數量(參數:default_qty_value、default_qty_type)。這需要一個值和一個計算模式。請注意,由於商品的最小可交易數量,計算值可能會受到限制:

  • 合約(參數:strategy.fixed) - 策略將以指定數量的合約/股票/手數進入。
  • 貨幣金額(參數:strategy.cash)- 策略將輸入以基礎貨幣指定的金額。
  • 權益百分比(參數:strategy.percent_of_equity)- 倉位規模將計算為交易開始時可用權益的百分比。

4 - 金字塔式(參數: pyramiding)指定在同一方向上允許的最大連續掛單數。當金字塔式被禁用時,即使滿足入場條件,該策略也只能開設一個多頭或空頭倉位。金字塔只影響使用 strategy.entry() 函數建立的掛單。它對使用 strategy.order() 建立的訂單沒有影響。

5 - 手續費(參數:commission_type、commission_value)。它是為每筆交易支付的交易費用金額。必須提供值和計算模式。請注意,佣金適用於進場和出場,當使用百分比時,計算的佣金將隨交易價值而變化:

  • 交易價值的百分比(參數:strategy.commission.percent) - 對每個訂單徵收等於指定百分比的手續費。
  • 貨幣 每份合約(參數:strategy.commission.cash_per_contract) - 對每份合約收取手續費。
  • 貨幣 每個訂單(參數:strategy.commission.cash_per_order) - 對每個訂單收取手續費。

6 - 對限價單核對價格(參數:backtest_fill_limits_assumption)讓使用限價訂單開倉的條件更加嚴格。預設情況下,此值為 0,即一旦達到訂單中指示的價格,就會根據歷史數據執行限價訂單。如果該參數不為零,則限價訂單只有在市場價格超過限價訂單水平指定的tick數時才能在K線內建倉。

7 - 滑點(參數:slippage)指定要增加到市價單或止損單的成交價的tick值。它可以用來解釋點差。

8 - 多頭和空頭倉位保證金(參數:margin_long、margin_short)指定每筆交易的保證金,即交易者必須注資的倉位百分比。例如:如果多頭倉位的保證金設置為25%,則交易者必須有足夠的資金來支付25%的未平倉交易,並且有可能在每筆交易中花費高達400%的權益。

如果交易已經開立並且開始虧損,以至於交易者的資金不足以支付他們的部分交易,則會發生追加保證金並強制清算部分原始倉位。要被清算的確切單位金額是一般彌補損失金額的4倍。它透過以下算法計算:

1.計算已花費金額,即交易者在開倉時花費的金額。

倉位大小*進場價

2.計算證券市值(MVS)。

倉位大小*當前價格

3.計算未平倉利潤。如果交易方向為空頭且未平倉利潤為正數,則結果仍應為負數,因此我們將計算的絕對值乘以-1。

ABS(MVS - 花費的錢)* -1

4.計算權益,即交易者當前可用的資金。

初始資本+淨利潤+未结盈利

5.將保證金百分比轉換為保證金比率。

保證金百分比/100

6.計算保證金,即支付未平倉倉位部分所需的確切金額。

MVS *保證金比率

7.計算可用資金,即交易者無法用其當前資產彌補的損失金額。

淨值-保證金

8. 計算交易者損失的總金額。

可用資金/保證金比率

9.計算交易者需要賣出多少單位來彌補損失。該值與當前商品的最小合約大小被截斷為相同的小數點。

截斷(第8步/當前價格)

10.計算經紀商將出售多少單位來彌補損失。我們的模擬經紀商賣出了4倍必要數量的單位,以確保在虧損持續時不會一直觸發追加保證金通知。該值對於空頭交易將是正值,因為經紀商購買單位是為了彌補損失而不是出售它們。

步驟#9 * 4

為了檢查這個計算,讓我們將內部設定的超級趨勢策略增加到NASDAQ:TSLA圖表的一維時間軸上。將訂單大小設定為300%的權益,將多頭倉位的保證金設定為25%。

我們的第一次進場發生在2010年9月16日開盤時。我們以4.43美元(進場價)買入682438單位(倉位大小)。然後,在2010年9月23日,當價格為3.9(當前價格)時,111052個單位被強制平倉。

1.花費金額: 682438 * 4.43 = 3023200.34

2.MVS: 682438 * 3.9 = 2661508.2

3.未結盈利: −361692.14

4.權益: 1000000 + 0 − 361692.14 = 638307.86

5.保證金比率: 25 / 100 = 0.25

6.保證金: 2661508.2 * 0.25 = 665377.05

7.可用資金: 638307.86 - 665377.05 = -27069.19

8.虧損金額: -27069.19 / 0.25 = -108276.76

9.彌補損失:截斷(-108276.76 / 3.9) = 截斷(-27763.27) = -27763

10.追加保證金大小: -27763 * 4 = - 111052


9 - 重新計算 選項指定應重新計算策略的頻率。預設情況下,策略在每根K線收盤時重新計算,但使用以下選項也可以重新計算:

  • 訂單成交之後(參數:calc_on_order_fills) - 允許策略在訂單完成後立即執行額外的K線內訂單計算。額外的計算發生在歷史和實時K線上。
  • 在每個Tick上(參數:calc_on_every_tick)。預設情況下,策略僅在即時K線收盤時計算。此參數允許策略計算即時K線的每次更新,就像做研究一樣。請注意,圖表刷新時tick數據會丟失,因此使用此選項的策略將重新繪製。此參數不會影響策略在歷史K線上的行為。另請注意,使用此功能的策略不會在歷史K線上顯示真實結果,因為它們不包含tick數據。