08-多單移動停利(點) 範例中"點"的單位是"元"嗎?

  •   27 
  • 最後發表   s927757  1 週前
s927757 發文於   2024/06/10

Hi XQ 小編,

   1.08-多單移動停利(點) 範例中"點數"的單位是"元"嗎?

   2. 如我我要改成 百分比(%),要如何寫呢?

   3. 其中 33 行 (var: intrabarpersist max_profit_point(0); { 啟動停利後最大獲利點 }) ,這參數 "intrabarpersist " 有加跟沒加有差嗎? 查一下 help ,看不是很懂? https://xshelp.xq.com.tw/XSHelp/?HelpName=IntraBarPersist&group=DECLARATION

======

{

多單移動停利(點)

 

設定停損點(如果不設定的話, 請把loss_point設定成0), 以及停利點, 跟回跌點數

價格下跌到停損時出場

價格上漲到停利點後啟動移動停利, 如果價格繼續上漲, 則繼續持有, 如果價格回檔超過回跌點數時, 則停利出場

}

 

input: profit_point(10, "停利(點)");

input: profit_drawback_point(5, "停利回跌(點)");

input: loss_point(10, "停損(點)");

 

var: long_condition(false); { 進場買進作多 }

 

範例:

 

均線穿越時買進1張

以成交價為基礎, 設定固定停損以及移動停利

}

 

if profit_point = 0 then raiseruntimeerror("請設定停利(點)");

if profit_drawback_point = 0 then raiseruntimeerror("請設定停利回跌(點)");

if profit_drawback_point > profit_point then raiseruntimeerror("停利(點)需大於停利回跌(點)");

 

long_condition = Average(Close, 5) cross over Average(Close, 20);

 

if Position = 0 and long_condition then begin

SetPosition(1); { 買進1張 }

end;

 

if Position = 1 and Filled = 1 then begin

var: intrabarpersist max_profit_point(0); { 啟動停利後最大獲利點 }

 

if loss_point > 0 and Close <= FilledAvgPrice - loss_point then begin

{ 停損 }

SetPosition(0);

max_profit_point = 0;

 

end else begin

 

{ 判斷是否要啟動停利 }

if max_profit_point = 0 and Close >= FilledAvgPrice + profit_point then begin

max_profit_point = Close;

end;

 

if max_profit_point <> 0 then begin

if Close <= max_profit_point - profit_drawback_point then begin

{ 停利 }

SetPosition(0);

max_profit_point = 0;

end else if Close > max_profit_point then begin

{ 移動最大獲利點 }

max_profit_point = Close;

end;

end;

end;

 

end;

================

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/06/11

1.這應該是用在台股期貨的策略,點數就是台股期貨價格,並非「元」。

2.FilledAvgPrice是庫存成本,若要改成損益趴數,在作多的情況下,損益趴數=c/filledAvgPrice-1;

3.加不加intrabarpersist差很大。要理解兩者的差異,需要做一些練習。總之,若想要變數在每一個Tick都將變數值傳給下一個Tick,就需要加intrabarpersist。

s927757 發文於   2024/06/11

謝謝!我再想一想!

XS小編 發文於   2024/06/14

Hello s927757,

 

小編補充,您使用在股票上的話,這邊的點就會是元。

因為都是使用 close 和 filledavgprice 去判斷。

 

至於intrabarpersist 的話,您可以簡單作一個測試:

var: intrabarpersist _count(0);

 

value1 += 1;

_count += 1;

 

print(currentbar, value1, _count);

 

若使用在逐筆洗價的話,_count和value1會有所不同,_count是洗價過次數,而value1則是經過幾根Bar。

intrabarpersist 會讓變數可以保存在同根Bar內的運算。

發表回覆
Close