Hi 阿林,
Q1:就是今天不納入計算 以昨天開始往前算20天 後來我改成這樣 highest(GetField("最高價","D")[1],20);
A1:後來您以下這樣的語法來表示「以昨天開始往前算20天」是正確的,小幫手這裡用自訂指標與選股策略確認過無誤,如圖
highest(GetField("最高價","D")[1],20);
好像也不行會不是會因為 [0] 與 [1] 20天的最高價剛好相同呢?
若您試過仍有疑問,請提供以下資訊,
Mail 至 XQservice@XQ.com.tw,最後貼上此討論文章連結,
以利小幫手釐清問題的原因,謝謝:
- 有問題的匯出檔案,包含自訂腳本。 ← 以利查看腳本語法與相關設定是否與期望有所落差。
- Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)壓縮檔案。 ← 若腳本語法與相關設定無誤,則會請相關人員查看此檔釐清問題。
Q2:所以我就想說 用一個變數 宣告時間是9點到9點半這樣放在函數後面的期數這樣
A2:小幫手會用以下範例腳本語法來表示,有回測與執行雷達驗證跑出來的數值,請再試試看
撰寫邏輯與雷達設定也可以參考附檔策略雷達匯出檔案,以上說明,供參考。
P.S. 也是可以用 Countif 的方式,不過撰寫邏輯上類似下方語法,
就不用屢次呼叫 Countif 函數,因為都是要去動態後面的期數。
input:_TimeOut(093000,"限制紀錄時間HHMMSS以前");
//範例僅支援1分鐘
if barFreq <> "Min" or barinterval <> 1 then raiseRunTimeError("僅支援1分鐘頻率");
//若最新收盤價大於前一分鐘收盤價,則累加1次。
//且在限制紀錄時間前都會判斷累加,過了紀錄時間則不再更新。
if close > close[1]
and time <= _TimeOut then value1 += 1;
//初始化,若 TradingDate 更新則將累加初始化為0,以利重新記錄當日狀況。
if getfieldDate("date") <> getfieldDate("date")[1] then value1 = 0;
//驗證數值用
//Print(getfieldDate("date"),getfieldDate("date")[1],time,close,close[1],value1);
16 評論