篩選出符合條件的日期還有資料

  •   369 
  • 最後發表   洋蔥  2025 二月 07
洋蔥 發文於   2025/02/03

我想問一下如果我想要篩選出台指期漲跌超過300點的日期,還有相對應的選擇權資料該怎麼做?目前我的想法是這樣

value1 = getField("close","D");
value2 = getfield("open","D");
value3  = value1 - value2;
if value3 > 300 or value3 < -300 then ret = 1;

但是如果執行商品台指期,要怎麼樣獲取選擇權的資料

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/02/03

執行商品台指期,要獲取選擇權的資料,可用getSymbolField抓。你的value3不是漲跌點數,而是收紅的點數。ret=1只會在最新K棒執行,歷史K棒不會選股或警示。

洋蔥 發文於   2025/02/04

那請問教授如果要篩選出過去的K棒,是不是要用settotalbar 這個函數,但是這個是要寫成指標、選股、還是警示?

虎科大許教授 發文於   2025/02/04

選股中心裡面可以選擇符合條件的日期。

洋蔥 發文於   2025/02/05

可是教授選股中心的商品不能夠選擇台指期貨,而且我是想要使用print功能把資料輸出出來做分析。所以我是寫成警示去做回測如下

settotalBar(1512); //讀取過去六年的日K棒
value1 = getfield("close", "D");
value2 = getField("open", "D");

value3 = value1 - value2; //計算今日漲跌幅

if value3 > 300 or value3 <-300 then 
begin
    print(File("C:\SysJust\XQLite\LOG\Myoutput.csv"), date, value3);
    ret =1 ;
end;

不過途中遇到很奇怪的事情是,我本來寫的code是如下,我發現如果在執行下列code的回測的時候,如果在回測設定畫面下方勾選「啟動腳本內Print指令」那出來的回測結果交易次數就會是零次,反之如果沒有勾選那回測結果就是正常的。這讓我百思不得其解。

settotalBar(1512); //讀取過去六年的日K棒
value1 = getfield("close", "D");
value2 = getField("open", "D");

value3 = value1 - value2; //計算今日漲跌幅

if value3 > 300 or value3 <-300 then ret =1 ;
print(File("C:\SysJust\XQLite\LOG\Myoutput.csv"), date[value3], value3);

虎科大許教授 發文於   2025/02/05

value3是兩個價格的差,date[value3]很奇怪。問題應該出在這裡。一般而言,date後面的中括號裡面放的是距離K棒數,而非價格差。

  • 按讚來自於
  • A589674569A
XS小編 發文於   2025/02/07

Hello 洋蔥,

 

如果您是使用回測功能的話,SetTotalBar並不需要設定這麼長。

就您這邊的腳本而言,只要設定一筆即可,然後將回測期間設為您想要檢查的範圍。

另外若只是要確認印出的資料,那麼腳本亦可不用 ret = 1 來觸發。

 

交易次數是0是因為回測出錯 (回測報告上應該可以看到商品位於失敗的部分),因為 索引值 [n] 只能是正值。

發表回覆
Close