私の取引アルゴリズムで少し苦労してください。次の onBars() が呼び出される前に注文が完了しないようで、数量がめちゃくちゃになります。enterLongLimit() を使用して取引を開始し、終了時に onEnterOk() を呼び出しますが、limitOrder を使用してテクニカル インジケーターに基づいてポジションの一部を終了しますが、onExitOk() を呼び出していないようです。
def onExitOk(self, position):
print("Exit ok", position.getExitOrder().getExecutionInfo().getDateTime())
def onEnterOk(self, position):
print("Enter ok", position.getEntryOrder().getExecutionInfo())
def _closePosition(self, price, qty, reason, date):
print("Closing position with price", price, "and closing qty", qty)
brk = self.getBroker()
shares = brk.getShares(self.instrument) * qty
print("Cash now before sell: ", brk.getCash(self.instrument))
self.info("Sell BTC %s at %s because %s on %s " % (shares, price, reason, date))
self.position = self.limitOrder(self.instrument, price, shares*-1)
print("Cash now after sell: ", brk.getCash(self.instrument))
実行:
価格 746.3 で終値 0.5 の終値
販売前の現金: 17.423283999999967
販売後の現金: 17.423283999999967
limitOrderの前後の現金は同じなので、イベントが来るのを待たなければなりません。