當訊號持續滿足時,策略可能會重複執行下單事件。
如何實現每次訊號只買或賣一次呢?下面介紹兩種最簡單的方法。
場景1:通過持倉判斷
如果“下單卡片”使用的是可以快速成交的訂單類型(例如:市價單),此時可以通過持有數量來間接判斷開倉/平倉是否成功。
● 如果運行標的的持有數量 > 0,則證明已開倉成功,此時將直接走平倉條件路徑;
● 如果該運行標的持有數量 = 0,則證明已平倉成功或未開倉,此時將走開倉條件路徑。
注意:此方法要求訂單必須快速成交,否則仍可能出現重複下單的情況。
場景2:通過計數器判斷
如果“下單卡片”使用的是不一定快速成交的訂單類型(例如:限價單),此時可以通過新建數值型全局變量作為計數器,來標記是否下過訂單。
第一步:我們在開始——屬性——全局變量處新建一個計數器”a“,用於標記是否下過買/賣單。
● 如果下過買單,且有持倉不為 0,則用1表示;
● 如果沒有下過單,且持倉為 0,則用0表示;
根據以上規則,”a“的初始值記為0(表示未下過單且持倉為 0)。
第二步:我們需要在策略開始運行的時候,優先對”a“和持有數量進行判斷:
● 如果”a" = 0,且持有數量 = 0 時,表示未下過單且沒有持倉,此時直接走開倉條件路徑;
● 如果”a" = 1,且持有數量 > 0 時,表示下過買單且有持倉(買單已成交),此時直接走平倉條件路徑;
第三步:在“下單卡片”後增加賦值事件,對”a"重新賦值:
● 平倉條件路徑:將”a"重新賦值為 0,標記為下過賣單。
● 開倉條件路徑:將”a"重新賦值為 1,標記為下過買單。