小幫手您好,
剛剛使用選股策略時發生以下錯誤,此策略之前都沒發生過此問題,已經連續刷幾次都是一樣的錯誤結果。
請問這個問題是什麼造成的呢? 運算量過大嗎?
後來發現問題好像出在第七行,if currentbar<gettotalbar then return; //只計算最後一筆資料
刪除之後就沒有此問題了。但是這個語法我之前用都沒有問題耶,是編譯器有改版嗎?
如果我想要在第八行之上全部計算,但第八行之下只要運算最後一筆資料,請問該如何改呢? 謝謝。

variable: KBar(0),i(0),Part(0),Gain(0),r(0);
setbarfreq("D");
settotalbar(10);
KBar=60;
if currentbar<gettotalbar then return; //只計算最後一筆資料
Gain=1;
array: Team[](0); //先宣告一個array,紀錄分價量用。
variable: arrT_size(0); //Team[]的陣列大小
variable: sky(0),base(0);
sky=ceiling(highest(high, kbar)/Gain)*Gain + Gain;
base=floor(lowest(low, kbar)/Gain)*Gain - Gain;
Part = (sky - base) / Gain;
array_setmaxindex(Team, Part+1);
arrT_size=Array_GetMaxIndex(Team);
var: Pa(0);
variable: B(0),Sum(0);
variable: H1(0);
for i = 0 to arrT_size-1 // 用迴圈的方式記錄各個區間的分價量。
for B = 0 to KBar-1
begin
if close[B] >= base + Gain * (i - 1) and close[B] <= base + Gain * (i + 1) then
Team[i + 1] = Team[i + 1] + volume[B];
end;
My_nthextremesarray(Team, arrT_size, 1, 1, H1, i);
Pa= base + Gain * (i - 1);
//Array歸零
Array_SetValRange(Team, 1, arrT_size, 0);
ret=1;
//********************************************************************************************************//
outputfield(1,Pa,2,"Pa");
2 評論