跨商品共用變數的問題

  •   128 
  • 最後發表   Pierce  2020 三月 27
Pierce 發文於   2020/03/24

 

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

如底下腳本,

close >= 9050 and close < 9150,value1為9200C商品,

close >= 8950 and close < 9050,value1為9100C商品,

假設09:51~10:01,台指close為9100,9:50以前close為9000。

那我出現的問題是,當現在10點01分,所以value1就是9200C,而highest(value1[1], 20)會抓到9100C的商品而造成計算錯誤。

我最直接的想法是以現在10:01台指為9100為主,value1是9200C的序列價格,所以不管前20期的close是否有符合 close >= 9050 and close < 9150的條件,highest(value1[1], 20)都應該是要執行9200C的價格序列來抓取資料。

但是實際上,highest(value1[1], 20)抓到的資料是,(0951~1000是9200C的值)與(0941~0950是9100C的值)的最大值,想請問這是bug還是原本語法設定就是如此?

---------------------------

if close >= 9050 and close < 9150 then 

value1 = GetSymbolField("TX4N03C9200.TF","最高價","1")

else if close >= 8950 and close < 9050 then 

value1 = GetSymbolField("TX4N03C9100.TF","最高價","1");

print(file("c:\print\printtest.log"), date, CurrentTime, value1, highest(value1[1], 20));

 

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

Hi Pierce

這其實不算是bug,因為在您的語法中確實規定了value1應該要存什麼值

因此他就會依照您的判斷去存值

如果您完全想要把這兩個分開,其實您就直接用value1與value2去存兩個商品的最高價

再來判斷close再哪個區間,再決定用value1還是value2去取得highest

小幫手寫給您一個範例,您參考看看這樣是否有符合您要的狀況。

value1 = GetSymbolField("TX4N03C9200.TF","最高價","1");
value2 = GetSymbolField("TX4N03C9100.TF","最高價","1");
if close >= 9050 and close < 9150 then 
value3=highest(value1[1],20)
else if close >= 8950 and close < 9050 then 
value3=highest(value2[1],20);  //這樣value3就會依照判斷,去計算他要是9200還是9100履約價的最高價喔

print(file("c:\print\printtest.log"), date, CurrentTime, value1,value2,value3);

 

發表回覆
Close