IntrabarPersist的 使用注意

Var: IntraBarPersist B1Pod(False), //尚未委買

(),括弧內指的是(預設型態),不能當作"預設值",更不能當作(初始值),很容易讓思維陷入錯誤

以下為例

若將 B1Pod=False; 以為是指定為初始值,這是錯的

因為缺少指定條件,每當程式執行,就會又判斷為False

建議將該列用 If Position <=POsition[1] then B1Pod=False;

否則程式列中的B1P、B1T的紀錄數值,將會一直因訊號觸發而改變。 B1Pod=True的指定也失效。

//當日觸發訊號買進

B1P=FilledAvgPrice; //先指定委買初始值

B1Pod=False; //先指定初始值尚未委賣

Condition1 = trueAll(Value15 >= Value15[1], 3) AND trueAll(Value14 >= Value14[1], 3)

AND (Value14 - Value15) / Value15 >= 0.05; // 條件1: 最近的低點和高點連續 3 個週期上升,且高低差距超過 5%

if FilledAtBroker <=2 // 檢查庫存數量,最多允許兩筆庫存    

and B1Pod=False //尚未委買    

and Position >=0 //目標部位非放空部位    

and value2 cross Over value3  // 當短期均線 (C2) 上穿中期均線 (C3)    

and Value11 < Value12 // 當前屬於 EMA 金叉階段    

and Condition1 // 符合支撐與上漲條件

then Begin      

SetPosition(Position+1,Market,label:="訊號觸發買進");    

B1P=GetField("收盤價", "Tick");  //紀錄委買價格    

B1T=Getfield("時間","Tick"); //紀錄委買時間    

B1Pod=True; //已經委買  

end ;