許老師及大家好!
我在進行自動交易的時候發現我的無券做空策略沒有回補。
由於我是當沖,因此沒有回補對我來說是比較嚴重的問題,想請問大家可能的原因是甚麼?
下面附上程式碼以及自動交易中心的設定截圖和執行紀錄,謝謝大家的幫忙!
許老師及大家好!
我在進行自動交易的時候發現我的無券做空策略沒有回補。
由於我是當沖,因此沒有回補對我來說是比較嚴重的問題,想請問大家可能的原因是甚麼?
下面附上程式碼以及自動交易中心的設定截圖和執行紀錄,謝謝大家的幫忙!
settotalBar(300); var: intrabarpersist hasRet(false); var: intrabarpersist RetValue(0); value1 = round(getField("close", "1"), 2); value2 = round(average(value1, 8), 2); value3 = round(average(value1, 17), 2); value4 = q_DailyHigh; value5 = highest(round(value4, 2), 1); value6 = GetQuote("漲跌幅"); condition1 = average(getField("成交量", "D")[1], 5)>2000; condition2 = value1 >= 50; condition3 = value1 <= 100; condition4 = value4 > value2 and value4 > value3; if getinfo("IsRealTime")=0 then return; if time >= 093000 and time < 130000 then begin if isFirstCall("Date") then hasRet=false; if condition1 and condition2 and condition3 and condition4 then begin if date=currentDate then begin if hasRet=false and position = 0 and value2 cross under value3 then begin hasRet=true; RetValue = value2; if value6 > 0 and value6 < 8 then setposition(-1); end; if position = -1 then begin if value1 <= RetValue*0.980 or value1 >= value5 then begin hasRet=true; setposition(0); end; end; end; end; end; if time = 132000 then setposition(0);
6125今天在132000的那一分鐘並沒有交易,所以無法回補。你使用1分鐘頻率,必須留意,某一分鐘裡面都沒有交易的問題。
把
if time = 132000 then setposition(0);
改成
if position<>0 and time >= 132000 then setposition(0);
4 評論