策略雷達的執行商品為選股,腳本撰寫方式?

  •   337 
  • 最後發表   NEIL888  2021 四月 14
NEIL888 發文於   2021/04/10

我已經有訂閱選股及策略模組,想使用選股中心的選股策略,給策略雷達使用,

我回測使用的參數:

最大同時進場次數:1

執行頻率:"週"

停損:10%

最大持有時間:1期

進場、出場:當期收盤價

 

請問這樣的設定,我在策略雷達腳本裡面該如何寫? 

謝謝

附加文件

排序方式: 標準 | 最新
Mick 發文於   2021/04/10

策略雷達使用的觸發語法是ret

但因為策略雷達無法使用自動交易中的setposition filled等語法概念 也沒有filledavgprice之類的語法

所以必須要手動加上變數

 

最大同時進場次數:

一旦ret = 1 後另外在加一個變數上去 假設是xtime

var: xtime(0);

if 條件成立 and xtime = 0 then begin

ret = 1 ;

xtime = 1;

end;

停損停利也是必須自己加變數上去 因為策略雷達無法使用語法抓到你的進場價

假設是變數是inprice

入場語法

var: xtime(0),inprice(0);

if 條件成立 and xtime = 0 then begin

ret = 1 ;

xtime = 1;

inprice = close;

end;

 

出場語法

if xtime = 1 and  close < inprice*0.9 then ret = 1 ;

但這有一定的機會會不準確 如果遇到快市滑價滑很大的話還是有一定的機率會跑掉 雖然應該不大

 

最大持有時間也是老樣子 必須用變數去紀錄

你可以套用上面語法的概念自己再加一個變數紀錄date (假設是 indate)

而出場可以用 if date = indate+7 then ret = 1;

 

 

以上,如果有更好的寫法或我有寫錯,還請各位先進或小幫手指正~

NEIL888 發文於   2021/04/10

謝謝MIick大,弟研究了一晚,發現我該使用自動交易中心可能更貼近進場點,下面是我嘗試寫的結果,還請各位大大幫忙指正。

最大同時進場次數:1

code:

if Position = 0 then SetPosition(1, Close);

停損:10%

code:

 

if Filled > 0 then begin

if Close <= FilledAvgPrice * 0.9 then SetPosition(0);

end;

 

可以請M大再幫忙,

執行頻率:"週"

最大持有時間:1期

進場、出場:當期收盤價

 

這樣的在自動交易中心的腳本如何寫??

謝謝您的幫助~祝您順心平安。

 

Mick 發文於   2021/04/11

你第一段code應該是要判斷手上沒單的話就買進一張對嗎

我的經驗用filled = 0會比用position = 0 來的好

畢竟兩者是不一樣的東西 Filled是真正你手上持有的單

 

執行頻率不用特別寫 在執行自動交易時選擇你要的頻率就好

最大持有時間 你一樣可以用我上面講的 在執行setposition的時候記錄date在一個自訂的變數內

當實際date > 進場日+7時就出場

或者也可以用 FilledRecordDate 自己寫寫看 (拍謝,因為我沒用過這個函數)

http://xshelp.xq.com.tw/XSHelp/?HelpName=FilledRecordDate&group=TRANSACTIONFUNC

 

至於當期收盤價,我也沒用過,但我覺得這只是回測時需要的一個基準點

實務上你用收盤價的話應該無法成交甚至無法掛單才對

因為最後一盤是13:30,而這一次成交才是當天的實際收盤價

也就是說當13:30最後一筆成交產生了收盤價這個數值後你才進行掛單,這是沒辦法掛出去的

除非你買14:30的盤後盤,但必須要14:00才能掛單,而且盤後盤量通常很少,更不見得會成交

 

--

我是半路出家的,沒XQ小幫手那麼專業,大家互相交流一起進步~

 

XQ小幫手 發文於   2021/04/14

Hello NEIL888,

 

自動交易中心的頻率最高為日單位,所以執行頻率無法調到週單位。

最大持有時間1期的話,您可以考慮最接近的天數,例如說進場5天後出場。

進出場價格可以用SetPosition的第二個參數控制。

附上自動交易中心的匯出檔供您參考。

 

感謝Mick的熱心回覆。

附加文件

發表回覆
Close