透過return時間判定開始運作是否會導致highest和lowest抓取錯誤資料?

  •   322 
  • 最後發表   Pierce  2020 四月 13
Pierce 發文於   2020/03/23

商品為台指期貨(FITXN*1.TF),頻率1分,沒有逐筆洗價。

透過return時間判定開始運作是否會導致highest和lowest抓取錯誤資料??

我設9點5分不中斷(也就是開始),highest和lowest的期數皆為35,發現很剛好的是都是(35+5=40)這兩個腳本都是9點39分後抓的資料(highest和lowest)是都正確的,9點39分前都錯,是否不要用return比較好?要用什麼寫法替代?

一、lowest 9:05~9:39都錯誤,9:39後正確

variable: pastlow(0)

if currenttime > 050000 and currenttime < 090500 then return;

 

if currenttime >= 090500 and currenttime <= 092159 then value100 = TimeValue(CurrentTime, "M") + 14

else

if currenttime > 092159 then value100 = 35;

pastlow = lowest(low[1], value100);

 

print(file("c:\print\printbc.log"), date, CurrentTime, low, pastlow)

二、highest 9:05~9:39都錯誤,9:39後正確

variable: pasthigh(0)

if currenttime > 050000 and currenttime < 090500 then return;

 

if currenttime >= 090500 and currenttime <= 092159 then value100 = TimeValue(CurrentTime, "M") + 14

else

if currenttime > 092159 then value100 = 35;

pasthigh = highest(high[1], value100);

print(file("c:\print\printsc.log"), date, CurrentTime, high, pasthigh)

 

排序方式: 標準 | 最新
Pierce 發文於   2020/03/26

請問什麼時候會修正? 感覺是台指期貨(FITXN*1.TF) 845開盤~900 這段時間的價格誤判為0造成問題

XQ小幫手 發文於   2020/03/30

Hi Pierce

不好意思,小幫手這邊的問題眾多,讓您等候多時非常抱歉

小幫手會盡快回覆給您確認後的答案,請再給小幫手一點點時間><

XQ小幫手 發文於   2020/03/30

Hi Pierce

小編看了一下您的語法,想請問您想用的是不是time(資料欄位呢)

其實阿,currenttime欄位是代表您現在的時間,例如現在是下午的14:25分,您如果在這個時候執行語法

那所有的資料就會是依照14:25去跑,因此不管怎麼判斷他都會跑到最後一個if,也就是value100恆為35喔~

如果是使用time的話,那就會是資料時間,那在跑的過程中他會去看那一個一分K是在哪一個資料時間,

進而去執行你要的if。

提供給您小幫手的見解,歡迎您持續與小幫手討論喔,謝謝^^

Pierce 發文於   2020/03/30

我的重點不是value100,早上9:05~0939lowest highest台指期價格是錯的,最明顯就看lowest的價格是0..........,上面不是有附圖了嗎

XQ小幫手 發文於   2020/03/31

Hi Pierce

您好,不好意思沒能完整理解您的訊息,小幫手會再加油

您的狀況較為特殊,小幫手請教了許多人,耗費些許時間,謝謝您的等待

經確認,是因為當時在設計lowest的函數使用中,我們是不允許客戶去變動lowest的期數值的

更精確地說,我們並不希望lowest(low[1],value100),的這個value100為0,因此我們將它設計成"大於1"

但因為您的if的判斷條件中,遺漏了早上001000~早上045900這段期間,value100要是什麼值,導致他會為0

因此您的語法會有兩種修改方式,供您參考。

1.去指定else,value100會是什麼值,例如您的if條件再加上..使其整個序列可以正常運作

else   
    value100=10;

2.我們起初就有發現這個問題,因此設計了SimpleLowest語法,請參考相關說明網頁

請您直接改使用此語法計算,simplehighest如同。

這樣就可以解決您的問題囉,請您試試看

我們會避免客戶誤用,將lowest相關說明網頁註記"請使用固定長度"

最後謝謝您的耐心等候,希望能完整的解決您的問題^^

 

Pierce 發文於   2020/03/31

謝謝回覆, 我會再照您的方法再測試看看,

但是還是覺得奇怪,

1. 我也有測試過001000~早上045900有值,跑出結果一樣是錯的

2. 您提到value100為0這件事情,但問題是我0905~0939的value100不是0呀?(print log顯示value100絕對都不為0),就算遺漏了早上001000~045900又如何? 我905開始根本不會用到001000~045900這段時間的東西,再者 lowest(low[1],value100),所用到的low[1]應該都是新的即時序列(845開盤),若value100不為0,到底為何會抓到價格為0這個數字? (我的if value100的數字就是避免會抓到845以前的資料,所以不可能會抓到001000~045900這段時間的價格,舉例來說現在0905我的value100是19,lowest(low[1],19),怎可能會抓到最低價格為0?

 

XQ小幫手 發文於   2020/04/01

Hi Pierce

好的再麻煩您試試看,如果可以先請您使用此方法。

詳細的問題小幫手還要再請教相關人員,如果有詢問到結果向您解釋再告知您

謝謝您的等候^^

Pierce 發文於   2020/04/01

你好,台指期的部分照你提供的函數價格有跑出來了,但是跨商品選擇權價格還是錯誤的,SimpleLowest 0905~0940還是抓到0(附件log最後一欄)。

商品:(台指)FITXN*1 頻率一分,無勾逐筆洗價 

variable: pastlowcall(0);

settotalbar(100);

if currenttime > 050000 and currenttime < 090500 then return;

if currenttime >= 090500 and currenttime <= 092159 then 

value100 = TimeValue(CurrentTime, "M") + 14

else

value100 = 35;

 

pastlow = SimpleLowest(low[1], value100);

pasthigh = simplehighest(high[1], value100);

 

opcall = GetSymbolField("TX1N04C9500.TF","最低價","1");

pastlowcall = SimpleLowest(opcall[1], value100);

 

 

print(file("c:\print\printtest2.log"), date, CurrentTime, value100, low, high, pastlow, pasthigh, opcall, pastlowcall);

 

附加文件

Pierce 發文於   2020/04/06

跨商品-新週選還是有一樣情況,SimpleLowest 0905~0940還是抓到0(附件log最後一欄)。

商品:(台指)FITXN*1 頻率一分,無勾逐筆洗價 

variable: pastlow(0);
variable: pasthigh(0);
variable: opcall(0);
variable: pastlowcall(0);

settotalbar(100);

if currenttime > 050000 and currenttime < 090500 then return;

if currenttime >= 090500 and currenttime <= 092159 then 
    value100 = TimeValue(CurrentTime, "M") + 14
else
    value100 = 35;

pastlow = SimpleLowest(low[1], value100);
pasthigh = simplehighest(high[1], value100);

opcall = GetSymbolField("TX2N04C9700.TF","最低價","1");
pastlowcall = SimpleLowest(opcall[1], value100);

print(file("c:\print\printtest2.log"), date, CurrentTime, value100, low, high, pastlow, pasthigh, opcall, pastlowcall);

 

附加文件

XQ小幫手 發文於   2020/04/06

Hi Pierce

好的,小幫手會再確認您的問題,請您稍後

因處理案件眾多,要麻煩您稍作等候,造成您的不便請您見諒,謝謝。

顯示更多回應 發表回覆
Close