請問如何在XS語法表達
近10日外資買超合計大於2000張
請問小幫手 選股中心有辦法當作盤中使用嗎?
Hello 桂桂,
您可以使用 外資買賣超 來取得所需資訊,並加總10天內大於0 (買超) 的資料。
舉例來說:
value1 = 0;
for value2 = 0 to 9 begin
if GetField("外資買賣超", "D")[value2] > 0 then value1 += GetField("外資買賣超", "D")[value2];
end;
condition1 = value1 > 2000;
這樣value1 就會是近10日 (包含當日) 外資買超的加總,condition1就會判斷是否有大於2000。
選股只能夠使用日以上頻率,且只能運作在盤後。
如果要在盤中使用的話請參考策略雷達或自動交易。
謝謝小幫手,我再試著變化
另外詢問我在學習過程看到一個XS策略
var: intraBarPersist lastdate(0); { 用來判斷換日 }
19var: intraBarPersist dayposition(0); { 每一日剛開始時的部位}
20var: intraBarPersist placeorder(false); { 今日觸發了沒 }
21
22if barFreq <> "D" then RaiseRunTimeError("請使用日線");
23
24if date <> lastdate then begin
25lastdate = date;
26placeorder = false;
27dayposition = Position;
28if dayposition <> dayposition[1] then begin
29SetPosition(dayposition[1], label:="開盤出場");
30Print(text(
31FormatDate("yyyy/MM/dd", Date),
32",", FormatTime("HH:mm", CurrentTime),
33",", NumToStr(dayposition[1], 0),
34",", "開盤出場"
35));
36dayposition = dayposition[1];
37end;
38end;
隔日沖策略 ~ 隔天開盤清空庫存
我想更改成如果漲停則不賣出,如下
if date <> lastdate then begin
lastdate = date;
placeorder = false;
dayposition = Position;
if dayposition <> dayposition[1] and close <> getField("漲停價", "D")then begin
SetPosition(dayposition[1]);
dayposition = dayposition[1];
end;
end;
不知道哪邊出錯,回測時候有些會正常買債有些完全不會賣
請小幫手幫我確認一下~ 謝謝
Hello 桂桂,
小幫手建議您可以在腳本中加上print函數將相關數值印出檢查。
您下出的委託單會是市價單,並不一定會成交,若要確保成交請使用市價單。
至少在回測時這樣做會比較好判斷是否有下出委託,但需注意若該根Bar沒有成交量的話還是無法成交。
且原本的腳本寫法是判斷兩日的部位不一樣來決定是否平倉,而您會避開當天開盤運算時成交價為漲停價的狀況。
一旦避開的話,下一天再判斷 dayposition <> dayposition[1] 時兩天 dayposition 則會相同,導致不會出場。
若還是有問題的話,麻煩提供 完整的腳本、回測的設定 (截圖或報表皆可)、錯誤的商品和日期 以及 XQ Log 來檢驗。
Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。
您可以直接將檔案上傳,如果檔案過大的話也可以保存到雲端後將連結Mail至客服信箱 XQservice@XQ.com.tw 且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
3 評論