請教2種condition邏輯變數的寫法

  •   559 
  • 最後發表   米奇林  2024 十一月 19
米奇林 發文於   2024/11/06

condition1= A cross over B ;

condition2=  A1 > B1 ; 

if condition1 and condition2 then ret=1 ;  

==================================

condition1=false;

condition2=false;

if A cross over B then condition1=true;

if A1 > B1 then condition2=true;

if condition1 and condition2 then ret=1 ;  

====================================

請問這兩種寫法,在執行上有什麼不同嗎? 謝謝!

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

由於每次洗價都有運算條件,所以兩種寫法的結果一樣。A寫法比較有效率。

  • 按讚來自於
  • 0936680360
米奇林 發文於   2024/11/06

謝謝教授,因為看到系統內語法範例才有此一問(疑問)。

 

//就像value1~value99是系統內建變數,其回傳值是一個數值

//condition1~condition99是系統內建回傳true或false邏輯值的變數名稱

//於是我們在口語上的如果~而且~就通知我,這樣的語法很容易用這個方式來撰寫

//========範例:融資餘額前十天大減超過2000張且減幅超過兩成===================

//1.宣告參數:利用input宣告輸入的參數。

input: range1(2000);

input: percent(0.2);

condition1=false;//將condition1設成false狀態,一旦符合條件才轉成true

//4.運用函數

//利用getfield取得外資買賣超資料

value1=getfield("融資餘額張數")[1];

value2=getfield("融資餘額張數")[10];

if value2-value1>range1 and (value2-value1)/value2>percent//計算融資增減張數

then condition1=true;//融資餘額前十天大減超過2000張且減幅超過兩成

//6.設定警示條件:if.. then ret=1;

//多重條件交易才觸發警示

if condition1 and average(close,20)/close[1]>1.05 and q_ask>open//近20天跌幅超過5%且現在外盤超過開盤價

then ret=1;

XS小幫手 發文於   2024/11/15

米奇林 您好,

第一種寫法,condition在變true之後就不會還原為false,會持續成立觸發ret=1

第二種寫法,會在每次洗價的時候先將condition還原為false,後續才判斷是否成立觸發ret=1

  • 按讚來自於
  • 0936680360
米奇林 發文於   2024/11/18

感謝小幫手回覆,,這種的寫法可以嗎?

 

condition1=false;

condition2=false;

////

condition1=  A cross over B ;

condition2=  A1 > B1;

if condition1 and condition2 then ret=1 ;  

 

GammaCEO 發文於   2024/11/19

其實Condition在導入運算或洗價前預設值都是False

偷懶省字就直接Ret=Condition1 And Condition2 ;

  • 按讚來自於
  • 0936680360
米奇林 發文於   2024/11/19

感謝GammaCEO熱心回答

可請教如果是交易腳本的話呢? 例如:

condition1= GetField("Open", "D") >= GetField("close", "D"); //今開 >= 昨收

condition2= C > Average(close,5); //現價 > 5日均線

if condition1 and condition2 then setposition(1,market);

這樣子前面還要在加上condition1=false;   condition2=false;  嗎?

GammaCEO 發文於   2024/11/19

洗價時條件未成立自然就是False不用特地去強調

但若是你的資料讀取筆數預設很大

開盤前可能會先觸發了Intrabarpersist

或在某條件成立前不做Condition1和Condition2的判定

保險起見還是加上condition=False

  • 按讚來自於
  • 0936680360
米奇林 發文於   2024/11/19

感謝! 我試試看

 

發表回覆
Close