許老師及大家好!
我在進行自動交易的時候發現我的無券做空策略沒有回補。
由於我是當沖,因此沒有回補對我來說是比較嚴重的問題,想請問大家可能的原因是甚麼?
下面附上程式碼以及自動交易中心的設定截圖和執行紀錄,謝謝大家的幫忙!
許老師及大家好!
我在進行自動交易的時候發現我的無券做空策略沒有回補。
由於我是當沖,因此沒有回補對我來說是比較嚴重的問題,想請問大家可能的原因是甚麼?
下面附上程式碼以及自動交易中心的設定截圖和執行紀錄,謝謝大家的幫忙!

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 評論