Orders getting executed multiple times
-
Hi everyone,
I am new on backtrader. I was trying out a code on minute frequency data but it gave weird results2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for FCX 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for BWA 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for F 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for ESS 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for AME 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for DRE 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for EXR 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for AVY 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for FE 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for FRC 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for GE 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for GM 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for GNRC 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for GPC 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for HPE 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for HST 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for ICE 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for INFO 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for INTC 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for KO 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for KSU 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for LNT 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for LKQ 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for L 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for IEX 2019-04-08T23:59:00, ORDER ACCEPTED/SUBMITTED for LRCX 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: 464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05 2019-04-08T23:59:00, SELL EXECUTED for F , Price: 9.29, Cost: -464.50, Comm 0.05
I don't understand why this is happening
Here's the code
def notify_order(self, order): if order.status in [order.Submitted, order.Accepted]: self.log('ORDER ACCEPTED/SUBMITTED for {}'.format(order.data._name)) return elif order.status in [order.Expired]: self.log('BUY EXPIRED for {}'.format(order.data._name)) elif order.status in [order.Completed]: if order.isbuy(): self.log( 'BUY EXECUTED for %s, Price: %.2f, Cost: %.2f, Comm %.2f' % (order.data._name, order.executed.price, order.executed.value, order.executed.comm)) else: # Sell self.log('SELL EXECUTED for %s , Price: %.2f, Cost: %.2f, Comm %.2f' % (order.data._name, order.executed.price, order.executed.value, order.executed.comm))
Orders are accepted for every symbol but only executed for one of them? Any help would be appreciated.
-
@new_trader Please share all of your code. Thanks.
-
@new_trader based on the printed time stamps, it seems that your data feed is passed to
bt
as a daily data feed. Import it as minute data feed with the appropriatetimeframe
andcompression
parameters, should fix the issue. At least this one. -
@ab_trader Hi ab_trader. I did submit it as timeframe=minute. On closed inspection, I noticed that it was submitting more sell requests before the last one was executed. I don't know how this lead to this specific behavior but after changing that, I don't think that it's an issue anymore.