//空單出場
If B程式部位<0 Then ...
If 目前部位(倉位多空) < 0 Then
If 目前部位(口數) >= 出場單位 Then 平倉口數 = 出場單位 建倉口數 = 0
ElseIf 目前部位(口數) < 出場單位 Then 平倉口數 = 0 建倉口數 = 出場單位-目前部位(口數)
End If
ElseIf 目前部位(倉位多空) >= 0 Then 平倉口數 = 0 建倉口數 = 出場單位
End If
If 單K計數器 = 0 Then
...
...
[COLOR=#ff0000]操作訊號(空單平倉,平倉口數#口,出場價位#)[/COLOR]
操作訊號(多單建倉,建倉口數#口,出場價位#)
...
...
單K計數器 = 出場價位
End If
...
...
...
因為下列的判別式在每個進場每個出場都需要加入
If 目前部位(倉位多空) < 0 Then
If 目前部位(口數) >= 出場單位 Then 平倉口數 = 出場單位 建倉口數 = 0
ElseIf 目前部位(口數) < 出場單位 Then 平倉口數 = 0 建倉口數 = 出場單位-目前部位(口數)
End If
ElseIf 目前部位(倉位多空) >= 0 Then 平倉口數 = 0 建倉口數 = 出場單位
End If
甚至於ELSE之後也需要再加入一次
單以上述的"[COLOR=#ff0000]額外再判別需平倉跟需建倉的程式碼[/COLOR][COLOR=#000000]"就多加了幾百行了...已經是原程式碼的1/3以上[/COLOR]
今日實際執行程式時速度降低非常多,會導致滑價變更多
不好意思 上面的策略有打錯
應該為
If 目前部位(倉位多空) < 0 Then
If 目前部位(口數) >= 進場單位 Then 平倉口數 = 進場單位 建倉口數 = 0
ElseIf 目前部位(口數) < 進場單位 Then 平倉口數 = 目前部位(口數) 建倉口數 = 進場單位-目前部位(口數)
End If
ElseIf 目前部位(倉位多空) >= 0 Then 平倉口數 = 0 建倉口數 = 進場單位
End If
你應該用部位總量的觀點來處理,因為就算自動下單的部份也是以「最終部位」來處理,可以這樣寫:
If 目前部位(倉位多空) < 0 Then If 目前部位(口數) >= 進場單位 Then 操作訊號(空單平倉,進場單位#口) ELSE 操作訊號(空單平倉,全數) Va = 進場單位 - 目前部位(口數) 操作訊號(多單建倉,Va口) End If