版上各位先進好:
末學剛開始自己摸索XSscript遇到不少問題,
先前曾有先進在板上請教過計算投信連續買超天數的迴圈語法,
但當時回復的語法只會統計"連續買超天數"或是顯示0天。
想請問如果要實現在投信買超張數 =0、>0以及<0三個不同條件下,
分別進行三個不同的迴圈計算出0天、連續買超天數或是連續賣超天數三種結果的XSscript語法該怎麼寫呢?
還請版上先進不吝指導,末學在此先謝過~~
版上各位先進好:
末學剛開始自己摸索XSscript遇到不少問題,
先前曾有先進在板上請教過計算投信連續買超天數的迴圈語法,
但當時回復的語法只會統計"連續買超天數"或是顯示0天。
想請問如果要實現在投信買超張數 =0、>0以及<0三個不同條件下,
分別進行三個不同的迴圈計算出0天、連續買超天數或是連續賣超天數三種結果的XSscript語法該怎麼寫呢?
還請版上先進不吝指導,末學在此先謝過~~
XS是序列語言,很多時候是不需要跑迴圈的。要獲得投信最近連續買超幾天,用TrueCount函數即可。
謝謝教授的函數指引,查詢到的函數定義如下:
回傳數值=TrueCount(條件數列,期數)
有關"條件數列"處,因為會有投信買超張數 =0、>0以及<0等3種情況,
我希望XS能在當天"投信買超張數 =0"時回傳數值為0,
"投信買超張數 >0"時回傳的是連續買超天數(+a),
"投信買超張數<0"時回傳的則是連續賣超天數(-b),
還請教授不吝指點在"條件數列"處的XScript應該如何攥寫,
才能讓XS實現上面的想法。
末學在此先謝過教授。
value1=TrueCount(getField("投信買賣超","D")>0,10);
若value=3,代表這10天內,最近3天連續買超,3天前沒買超。
把大於0改成小於0,則為最近3天都賣超。
謝謝教授撥冗回復,
不過末學期待的是能以一篇XScript,
就能讓個股在當天"投信買超張數 =0"時顯示數值為0,
當天"投信買超張數 >0"時顯示的是連續買超天數(+天數),
當天"投信買超張數<0"時顯示的則是連續賣超天數(-天數),
這樣就只需要用一個欄位就能一目瞭然投信對個股近期的買賣情況了。
再次謝謝教授的回覆,
也請版上先進不吝協助解惑,
末學在此先謝過~
setBarFreq("D");
input: Length(100,"天數");
setTotalBar(Length);
var: Str("");
value1=GetField("投信買賣超");
switch (value1)
begin
case 0:
Str=" "+numtoStr(value1,0);
case >0:
Str=" +"+numtoStr(TrueCount(value1>0,Length),0);
case <0:
Str=" -"+numtoStr(TrueCount(value1<0,Length),0);
end;
ret=1;
outputField1(Str,"投信連續買賣超天數");
若在最後一根K棒才做條件判斷,會更有效率。
setBarFreq("D");
input: Length(100,"天數");
setTotalBar(Length);
var: Str("");
value1=GetField("投信買賣超");
if isLastBar then
begin
switch (value1)
begin
case 0:
Str=" "+numtoStr(value1,0);
case >0:
Str=" +"+numtoStr(TrueCount(value1>0,Length),0);
case <0:
Str=" -"+numtoStr(TrueCount(value1<0,Length),0);
end;
ret=1;
outputField1(Str,"投信連續買賣超天數");
end;
謝謝教授出手,
這篇XScript實現了末學所想,
也提點了末學有關isLastBar以及switch語法的使用方式,
再次謝謝教授!
7 評論