如題
我想在自動交易中心寫一個策略
進場:
1.於早上9:00~9:05內進場
2.當天開盤價大於60分K的MA20
出場:
1.5分K的收盤價小於5分K的MA20
以上XS要如何撰寫以及自動交易中心的執行頻率應該設定多少呢?
因需要當沖應如何設定所有可以雙向現沖的股票,或是只能先買現沖的股票
附件我是這樣撰寫,但回測出來一直不如自己預期
再麻煩小幫手協助
謝謝您
musashi 大您好! 感謝您的建議,之後我改成這樣
Value1 = q_PreTotalVolume;
//進場點
condition1= currenttime >= 090000 and currenttime <= 090500;
condition2=GetSymbolInfo(" 先買現沖");
condition3=getField(" open","60") > getField("open","60")[1];
condition4= value1 > 1000;
//出場點
condition11 =close cross Below Average(close, 5);
if position=0 and condition1 and condition2 and condition3 and condition4
then setposition(1,market,label:="buy");
if position =1 and condition11
then setposition(0,market,label:="sell");
自動交易中心 頻率改為5分鐘 原始值,逐筆洗價啟動
策略部位計算起點: 不指定 資料讀取筆數 100
這樣似乎也無法回測,能麻煩您幫我看看嗎 謝謝您
你的腳本要附加語意說明才能夠知道腳本是否有錯,我猜你的意思應該是以下腳本吧
//09000到090459之間,備註:回測currenttime=time
condition1 = currenttime >= 090000 and currenttime < 090500;
//是否先買現沖
condition2 = GetSymbolInfo("先買現沖");
//今日開盤大於60分K開盤價MA20
condition3 = getField("open","D") > round(average(getField("open","60"),20),2);
//成交量>1000
condition4 = volume > 1000;
//出場點
//成交價 死亡交叉 收盤價MA20
condition11 = close cross Below Average(close, 20);
if position= 0
and filled = 0
and condition1
and condition2
and condition3
and condition4
then setposition(1,market,label:="buy");//做多進場
if position=1
and filled =1
and condition11
then setposition(0,market,label:="sell");//做多平倉
是的!!!
感謝M大!
另外可以額外請教您
運算子 <、=、>以及 cross below、above等等使用時機嗎?
我能理解如果要確切知道兩條線,是否已經貫穿需要用到cross
但如果像以上程式碼 condition11 一邊是固定數值並非"線"的概念,cross below跟 < 的概念跟方法是否通用呢?
再麻煩您幫我解答了謝謝~
用收盤價和均線舉例解釋,cross below函數會判斷前一根K棒【收盤價 >= 均線】,當根K棒【收盤價 < 均線】,兩者都符合才會讓condition=true(成立)
//以下兩種寫法是相同意思 condition11 = close cross Below Average(close, 20); if close[1] >= Average(close[1], 20) and close < Average(close, 20) then condition11 = true //兩個條件同時成立 else condition11 = false; //兩個條件只要有一個不成立
Hello liubig,
您腳本無法回測是因為 q_PreTotalVolume 是報價欄位,無法用在回測。
昨量的話您可以改用 getfield("Volume", "D")[1]。
關於 cross above 和 cross under 您可以參考 XSHelp 上的說明。
網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。
感謝 musashi 的熱心回覆。
7 評論