許老師和大家好
如標題,請問有辦法在 XScript 裡面取得每天盤中即時的跌幅前100名的弱勢股嗎?
附圖如下:
謝謝大家!
可以用Group處理。不過,你似乎對XS了解不多,這個需求對你難度較高,建議先把基本功練好。
想請問老師如何磨練XS的基本功呢?
找看看是否有系統性的課程,上上課,打好基礎。
想請問小編:
Input: myGroup(Group); Value1 = GetSymbolField(myGroup[1], "Close", "D"); print(Value1);
我按照文章的程式碼想先印出我的自選股的標的,由於我只選2檔,照理來說 myGroup[1] 是要印出第一檔標的的收盤價對吧?
不過我卻2檔都印出來了。想請教這個陣列的使用方式是甚麼?謝謝。
你的程式只會列印第一檔商品每根K棒的收盤價。
Hello 阿哲DR5,
小編補充,建議您在print的時候可以印出多一些資訊,例如改為 print(date, myGroup[1], value1); 這樣就可以比較容易實際比對數值看是否正確。
Hello 小編和許老師,
我試著根據商品清單功能這篇文章寫了程式碼如下:
input: _S(group, "排行股票"); Array: rankRT[2000, 2](0); value1 = GroupSize(_S); for value2 = 1 to value1 begin value3 = round(100 * (getsymbolField(_S[value2], "Close", default := 0) - getsymbolField(_S[value2], "開盤價", "D", default := 0)) / getsymbolField(_S[value2], "開盤價", "D", default := 1), 2); rankRT[value2, 1] = strtoNum(leftStr(_S[value2], 4)); rankRT[value2, 2] = value3; end; Array_Sort2d(rankRT, 1, value1, 2, true); for value2 =1 to 100 begin print(text(numtostr(rankRT[value2, 1], 0), ".TW"), rankRT[value2, 2]); end;
印出來的結果和看盤軟體完全不一樣,再請幫我看一下程式碼哪裡有問題?謝謝
我測試是OK的。你需要把
for value2 =1 to 100 改成 for value2 =1 to value1
且在迴圈加入break指令。
for value2 =1 to value1
begin
if value2>100 then break;
print(text(numtostr(rankRT[value2, 1], 0), ".TW"), rankRT[value2, 2]);
end;
input: _S(group, "排行股票"); Array: rankRT[2000, 2](0); value1 = GroupSize(_S); condition1 = getField("成交量", "D")[1]>500; if condition1 then begin for value2 = 1 to value1 begin value3 = round(100 * (getsymbolField(_S[value2], "Close", default := 0) - getsymbolField(_S[value2], "開盤價", "D", default := 0)) / getsymbolField(_S[value2], "開盤價", "D", default := 1), 2); rankRT[value2, 1] = strtoNum(leftStr(_S[value2], 4)); rankRT[value2, 2] = value3; end; Array_Sort2d(rankRT, 1, value1, 2, true); for value2 = 1 to value1 begin if value2 > 100 then break; print(text(numtostr(rankRT[value2, 1], 0), ".TW"), rankRT[value2, 2]); end; end;
老師我印出來的資料有很多個 txt 檔,裡面的資料筆數也很多,請問怎麼會這樣子?
15 評論