XS 內建腳本的問題

  •   353 
  • 最後發表   Meli  2025 二月 18
Meli 發文於   2025/02/15

在XS script中有一腳本如下(我直接copy&paste): 

 input: grid_gap(20, "每格點數");

input: grid_maxcount(3, "最多格數");

input: stoploss_point(100, "停損(點)");

var: intrabarpersist grid_started(false);

var: intrabarpersist grid_base(0); 

var: intrabarpersist grid_current_base(0); { 目前的網格中心點: 依照價格移動 }

var: intrabarpersist grid_current_ord(0); { 目前的網格的編號, 正中央=0, 往上=1, 2, 3, 往下=-1,-2,-3}

var: intrabarpersist grid_buycount(0); 

var: intrabarpersist grid_sellcount(0);

if not grid_started and GetInfo("TradeMode") = 1 then begin

grid_started = true;

grid_base = Close;

grid_current_base = Close;

grid_current_ord = 0;

grid_buycount = 0;

grid_sellcount = 0;

 Print("=>啟動網格中心點:", numtostr(grid_current_base, 0));

end;

if grid_base <> 0 then begin

 if Close >= grid_base + stoploss_point or Close <= grid_base - stoploss_point then begin

SetPosition(0, label:="網格:停損出場"); { 全部平倉, 停止網格交易(TODO:請填入委託價格) }

grid_base = 0; { 停止網格交易 } 

end else begin

if Close >= grid_current_base + grid_gap then begin

  value1 = grid_current_ord + IntPortion((Close - grid_current_base) / grid_gap);

if value1 >= grid_maxcount then value1 = grid_maxcount;

value1 = value1 - grid_current_ord; 

 

if value1 > 0 then begin

grid_current_base = grid_current_base + value1 * grid_gap;

grid_current_ord = grid_current_ord + value1;

grid_sellcount = grid_sellcount + value1;

SetPosition(Position - value1, label:="網格:上漲賣出"); { 賣出 (TODO:請填入委託價格) }

end; 

end else if Close <= grid_current_base - grid_gap then begin

value1 = grid_current_ord - IntPortion((grid_current_base - Close) / grid_gap);

if value1 <= -1 * grid_maxcount then value1 = -1 * grid_maxcount;

value1 = grid_current_ord - value1; { 往下移動的格數 }

if value1 > 0 then begin

{ 往下移動網格 }

grid_current_base = grid_current_base - value1 * grid_gap;

grid_current_ord = grid_current_ord - value1;

grid_buycount = grid_buycount + value1;

SetPosition(Position + value1, label:="網格:下跌買進"); { 買進 (TODO:請填入委託價格) }

end;

end;

end;

end;

想釐清以下問題:

1 這個腳本的交易次數是否能改? 程式裡1,2,3 /-1,-2,-3

var: intrabarpersist grid_started(false);

var: intrabarpersist grid_base(0);

var: intrabarpersist grid_current_base(0);

var: intrabarpersist grid_current_ord(0); { 目前的網格的編號, 正中央=0, 往上=1, 2, 3, 往下=-1,-2,-3}

var: intrabarpersist grid_buycount(0);

var: intrabarpersist grid_sellcount(0);

2 這個腳本的交易區間是多少? 60格數嗎?

3 若用這個腳本再去我的自動交易中心跑,會遇到幾個問題需要釐清楚:

自動交易中心的策略設定有腳本設定(如附件)、安控設定。在腳本設定中有出現網格數格數損益,是否是內定植還是因為我選程式所以自動帶入這些值。確認這個是要double check是否跟腳本內容一致?第二: 下圖中有每日最多進場次數,依據這個腳本應該怎樣設定?上面問題1有提及,根據腳本每次最多4口?對嗎?

 

 

 

 

 

 

附加文件

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/02/15

1 這個腳本的交易次數是否能改? 程式裡1,2,3 /-1,-2,-3

Ans:可以的。修改參數即可。例如若要把原本上三個下三個的網格(合計六個),改成上四個下四個的網格(合計八個),只需要把「最多格數」的參數,由原本的3,改成4即可。

2 這個腳本的交易區間是多少? 60格數嗎?

Ans:這個程式預設6個網格,每個網格20點,區間是120點。

3 若用這個腳本再去我的自動交易中心跑,會遇到幾個問題需要釐清楚:

Ans:自動交易中心的腳本設定,會顯示程式用input宣告的參數。這個程式有三個參數,自動交易中心顯示的數值是程式預設值,你可以直接在自動交易中心修改。像第一個問題,將「最多格數」3改成4。不過,有一點要注意,若在程式裡面將3改成4,編譯之後,原本自動交易中心的參數值並不會被改變。安控方面,每日最多進場次數設為1次即可。這個程式不論做多或做空,出場都是空手。空手之後就結束交易。這樣做多進場次數設1就夠了。進場次數1次不代表只進場1次,而是部位沒有變成0或反向(由多變空或由空變多)之前,是可以再加碼。減碼之後,只要剩餘部位的方向與最初進場方向一樣,還是可以再進場。很多人不了解這個安控設定,所以常常誤用。

Meli 發文於   2025/02/15

感謝你的回覆

根據這個腳本,我的進場次數設定為1,不代表指進場1次,這我理解。依程式來跑,未平倉的最大口數不會超過3口(在沒有設定進場次數時),這一點需要確認?麻煩幫我double check一下。空手會再進場,這我理解。希望前輩能指點和幫忙,謝謝

 

 

 

 

虎科大許教授 發文於   2025/02/15

價格往下掉一個網格,會加碼買進,往上一個網格則減碼。加碼及減碼的數量是value1,在不同網格,value1是不同的。最大持有部位要看你初始部位設多少(第一次進場多少口)以及最多會加碼幾口而定。你最好先盤中即時演練,print看看各個變數的數值,以了解部位有多少。

XS小編 發文於   2025/02/18

Hello Meli,

 

小編補充,您可以參考 04-網格交易 腳本上面的註解,裡面有說明腳本運作的邏輯以及參數設定的意義。

附加文件

發表回覆
Close