請問警示的XSCRIPT 計算數目

  •   71 
  • 最後發表   Peter54321  2021 五月 18
Peter54321 發文於   2021/05/17

我的CODE如下

 

variable:aa(0);

 

variable:count(0);

 

aa=GetField("成交量", "D")[1]/270*4;

 

count=count+1;

 

if GetField("成交量", "1") > aa

 

then count=count+1;

 

if GetField("成交量", "D")[1] = 107575 and GetField("成交量", "1") > aa //and count=2

 

then ret=1;

 

 

 

 

 

 

 

這樣可以回測出來7筆的交易

 

可是假如把and count=2加進來

 

 

 

variable:aa(0);

 

variable:count(0);

 

aa=GetField("成交量", "D")[1]/270*4;

 

count=count+1;

 

 if GetField("成交量", "1") > aa

 

 then count=count+1;

 

 if GetField("成交量", "D")[1] = 107575 and GetField("成交量", "1") > aa and count=2

 

 then ret=1;

 

 

 

沒有條件會符合

 

 

 

請問這是為什麼?

 

 

 

請問有關於我這種count機制的文章可以看嗎?

 

 

 

我試過大於或小於

 

 

 

數出來的數字也和我想的不一樣

 

 

 

 

 

 

 

下面是我的回測條件

執行頻率 分鐘

停利停損都是0.1%

沒有逐筆洗價

時間是2021/05/14

組合是所有上市櫃股

 

 

XQ小幫手 發文於   2021/05/18

Hello Peter54321,

 

小幫手測試了您的腳本,運算上是沒有出錯的。

由於您想了解 count 是怎麼運作的,基本上每一根 bar 腳本都會運算一次,讓count的數目增加1。

如果您設的條件 GetField("成交量", "1") > aa 符合的話會再多加1。

由於您沒有將 count 重置,所以count的值會一直向上增加。

您可以使用 print 函數來將 count 印出來觀察就會很容易懂其運算的方式。

 

另外,由於資料讀取筆數的關係,所以count在進到回測區間的範圍時就已經大於2了,所以您設條件 count = 2 會不符合導致沒有進場。

關於資料讀取筆數的詳細資訊您可以參考此連結

 

 

發表回覆
Close