有關期貨報酬率的計算

  •   17 
  • 最後發表   無情卻慈悲  2 週前
無情卻慈悲 發文於   2021/06/11

HI,

我想請教一下,我原本有幫個股寫了一段計算報酬率的,

但是期貨好像不能按照這樣的計算方式,可否請教該怎樣寫這期貨報酬率的公式呢?感謝

//報酬率

variable:plratio(0);

//FilledAvgPrice是「商品目前的未平倉成本」

if FilledAvgPrice <> 0 then

 plratio = absValue( 100 * (Close - FilledAvgPrice) / FilledAvgPrice )//正負幾%

else

 plratio = 0;

 

 

 

排序方式: 標準 | 最新
無情卻慈悲 發文於   2021/06/11

像我這段用在期貨的停利,就重來沒來發生過,想說是否期貨應有不同的計算公式或寫法。

 

//多單停利2:

if position > 0

and Close - FilledAvgPrice > 0

and 

(

(plratio cross Under 1) or (plratio cross Under 2) or (plratio cross Under 3) or (plratio cross Under 4) or (plratio cross Under 5)or (plratio cross Under 6)or (plratio cross Under7)

or (plratio cross Under 8) or (plratio cross Under 9)or (plratio cross Under 10)or (plratio cross Under 12)or (plratio cross Under 14)or (plratio cross Under 16)or (plratio cross Under 18)

)

then begin

SetPosition(0, MARKET,label:="多單停利2");

print(plratio);

end;

 

XQ小幫手 發文於   2021/06/11

Hello 無情卻慈悲,

 

報酬率 = 投資期間總利潤/投入成本

股票的時候因為沒有槓桿,所以沒有問題。

但是在期貨的狀況下投入的成本是您的本金,期貨上下1點獲利也不是1元。

這裡以台指期為範例:

input: _margin(184000, "保證金");

var: plratio(0);

if filled > 0 then plratio = 100 * 200 * (Close - FilledAvgPrice) / _margin

    else if filled < 0 then plratio = 100 * 200 * (FilledAvgPrice - Close) / _margin

    else if filled = 0 then plratio = 0;

 

您計算的其實是進場價格與現在價格間的價格變動率,當然也可以依此為停利的基礎。

舉例來說:

台指期 2021/06/10 收盤價 17157 進場,現在(2021/06/10)的價格是 17219

那麼你算出來的價格變動率即是 100 * (17219-17157) / 17157 = 0.36%

停損停利小幫手不建議用 cross over 或 cross under來控制,直接用 > 或 < 就可以了。

假設您將停損點設為 17100 好了,那麼您不會是當收盤價穿越 17100的時候要出場而已,而是只要價格掉到 17100 以下的時候都要出場。

最簡單的作法是直接設點數。像是:

input: tp(80, "停利點數"), sl(40, "停損點數");

 

if filled > 0 and (close >= (FilledAvgPrice + tp) or close <= (FilledAvgPrice - sl)) then setposition(0, market)

    else if filled < 0 and (close >= (FilledAvgPrice + sl) or close <= (FilledAvgPrice - tp)) then setposition(0, market);

無情卻慈悲 發文於   2021/06/11

感謝小幫手熱心回覆,我先好好消化一下您的code,非常感謝,端午愉快

發表回覆
Close