XQ大小於判斷

  •   406 
  • 最後發表   Joshua  2024 七月 26
Joshua 發文於   2024/07/19

大家好,我是剛接觸XS的新手,目前在嘗試寫自己的程式,但跑出來的結果不是我所想的,所以進行了簡單的測試,發現判斷大小的部分很奇怪,怎麼嘗試都不太對,可以麻煩各位前輩指點嗎?謝謝

第一章圖是我的code,29~44行是我拿來測試的段落。 在condition = true的情況下,conditionResult = true

但執行結果中, conditionResult  清一色都是1(true)。以1109信大為例value1 < value2 所以 condition 應該為false。

conditionResult 應該是false(預設值),但還是被改成true。想請問是哪裡有問題嗎?

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/07/19

兩個問題:

(1)使用SwingHighBar,必須留意可能找到轉折高點,這時會傳回-1,weightedClose[-1]會出錯。應該加上判斷是否有找到轉折高點的條件。

(2)你的問題主要出在,之前有condition1為true的情況,造成conditionResult變成true,而後面一直沒有機會讓它變成false,所以conditionResult一直保留true的值。

  • 按讚來自於
  • memorylife9122540
Joshua 發文於   2024/07/19

謝謝教授的回覆,測試了一下果然判斷變正常了。我卡在每執行一支股票時,以為參數會回復成預設值的狀態。原來是沿用的狀態,感覺跟static很像。 

Joshua 發文於   2024/07/20

我根據上述的回覆改了程式碼,感覺還是怪怪的。後來經確認是osc的問題,程式碼如下

判斷式中,當oscValue[swhb1] > 0 和 oscValue[swhb2] > 0 都大於0時才成立

但執行解果發現,oscValue[swhb2]  < 0 時也成立,以2885為例,同時在把對應的swhb2 = 18回去看盤中心查時,對應的osc值也不對,想請問題出在哪裡呢?  我在想是不是setTotalBar太小,所以改成*10,還是oscValue每使用一次要歸零一次呢?

我嘗試過發現好像都對不上。能否幫忙解答呢~感謝

 

虎科大許教授 發文於   2024/07/20

與你之前的condition1為true的情況,造成conditionResult的錯誤一樣。

if condition1=true then conditionResult=true;

要改成

if condition1=true then conditionResult=true else conditionResult=false;

現在的osc也一樣,要修改如下:

if oscValue[swhb2]>oscValue[swhb1] then 

      begin

            result = true;

      end

 else result = false;

Joshua 發文於   2024/07/20

謝謝教授~。自己試了之後正常了,另外發現是我的index參數寫錯了,所以導致osc出現錯誤。

目前都已修正,跑出來正常了,再次謝謝教授幫忙解答XD

XS小編 發文於   2024/07/26

Hello Joshua,

 

小編補充,變數在運作時都會保留前期值,這樣才以透過 [n] 的方式取前期值。

除了上述的作法外,您也可以比照 condition1 的方式,例如:

result = swhb1 <> -1 and swhb2 <> -1 and oscValue[swhb1] > 0 and oscValue[swhb2] > 0 and condition1 and condition2 and condition3 and oscValue[swhb2]>oscValue[swhb1];

conditionResult = condition1 = True;

這樣當條件不符合時, result 和 conditionResult 就會回傳False。

 

感謝 虎科大許教授 的熱心回覆。

發表回覆
Close