腳本內可以直接使用Condition變數,不需要預先宣告,但是程式編寫及執行時的疑惑:
1. XS程式若在各個Condition執行前,未事先寫入 ConditionX=False; 在後面行號直接寫入 if ..... then ConditionX=True;
這樣子程式執行會有問題嗎?
2. if ..... then ConditionX=True; 與 ConditionX=.......; 這兩種寫法,完全一樣嗎?
若以 ConditionX=.......; 方式編寫,就不必事先寫入 ConditionX=False; 嗎?
3. 若程式中有 Condition1 及 Condition2,而且 Condition1 行號在 Condition2 之前,若有下列情形:
Condition1= ..... and/or Condition2 .....; (也就是 Condition1內有 Condition2 )
程式執行到 Condition1 時會將 Condition2 也併入考量嗎?
編譯時會主動出現錯誤訊息嗎?
是否需要將 Condition2 行號位置,移到 Condition1 之前?
腳本內可以直接使用Condition變數,不需要預先宣告,但是程式編寫與執行時的疑惑
- 58
- 最後發表 塞繆爾 2026 一月 30
(1)不需要宣告的變數condition1~condition999,預設值為False。
(2)兩者雖然看起來一樣,其實有差異,例如if c cross over highest(h[1],3) then condition1=True; 與condition1=crossover(c, highest(h[1],3)); 在突破當下,兩種寫法結果相同,但若之前曾突破,目前沒突破,則第一種寫法的condition1會一直是True,而第二種寫法的condition1卻是False。
(3)condition2會保留更早之前的數值或預設值,編譯不會出錯,但可能會有邏輯錯誤。
謝謝教授,
(2)兩者雖然看起來一樣,其實有差異,例如if c cross over highest(h[1],3) then condition1=True; 與condition1=crossover(c, highest(h[1],3)); 在突破當下,兩種寫法結果相同,但若之前曾突破,目前沒突破,則第一種寫法的condition1會一直是True,而第二種寫法的condition1卻是False。
以盤後選股程式而言,兩種寫法應該沒有差別,至於:
[ 第一種寫法的condition1會一直是True,而第二種寫法的condition1卻是False]
我尚無法理解,是否跟我沒購買的 [ 策略雷達盤中監視模組 ] 可以重複地即時運作程式有關?尚請教授解惑
(1)選股或警示程式也是一樣。只要有跑前面的K棒讓condition1為True,除非後面的K棒有機制讓它變False,不然它會一直保留True。
(2)這與模組無關。
謝謝教授
幫忙補充一下
1."ConditionX="是邏輯值,只要"="後面的條件全成立了就是True,反之為False。
2.Condition邏輯值搭配intrabarpersist標籤可以成為布林值,取代條件式後的ConditionX=True; ,寫出更多層的邏輯判斷選項。
3.Condition內或外的and、or等同值或附帶值最好用括號區隔,才不會如同教授說的出現邏輯錯誤。
5 評論