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 ;