Issues with closing multiple positions
-
Hi, during live trading, I noticed if have multiple positions open such as:
EUR/USD Buy 1 EUR/USD Buy 2 EUR/USD Buy 3
and I call
self.close()
there are instances where either they just won't close, or it'll only close one of the positions, instead of the entire net position. My code involves adding many times to a position, so I guess multiple ones get formed that way.Has anyone else encountered this? If so, what is the remedy? I want to make sure positions get closed when they get the signal, else it gets bad when they go the other direction.
I was also wondering if you open a position, then restart the program, does it have a way of knowing the net position that was entered before the program was started?
-
on oanda, close will always close the whole position. You could create own limit orders which reduces the total open positions.
-
@dasch Hello my friend! This is what I mean:
TREND ENDED, CLOSE 2020-06-03: Order ref: 3 / Type Sell / Status Submitted / ExecType Market / Size -2936.0 / Alive True / Price 0.0 / Position 2936.0 LIVE, 4, Data0, 0536, 06-03 21:05:00, O 0.692110, H 0.692110, L 0.691570, C 0.691590, ema_fast 0.691988, ema_mid 0.692127, ema_slow 0.692318, C[1] 0.692110, ema_anchor_fast 0.692384, ema_anchor_slow 0.691245, ema_anchor_baseline 0.672130, -0.0005199999999999649 🔴, PnL -7.046400 trend=0 TREND ENDED, CLOSE 2020-06-03: Order ref: 4 / Type Sell / Status Submitted / ExecType Market / Size -2936.0 / Alive True / Price 0.0 / Position 2936.0 LIVE, 4, Data0, 0537, 06-03 21:10:00, O 0.691590, H 0.692010, L 0.691590, C 0.692010, ema_fast 0.691993, ema_mid 0.692110, ema_slow 0.692290, C[1] 0.692110, ema_anchor_fast 0.692384, ema_anchor_slow 0.691245, ema_anchor_baseline 0.672130, +0.00041999999999997595 🟢, PnL -5.813280 trend=0 TREND ENDED, CLOSE 2020-06-03: Order ref: 5 / Type Sell / Status Submitted / ExecType Market / Size -2936.0 / Alive True / Price 0.0 / Position 2936.0 LIVE, 4, Data0, 0538, 06-03 21:15:00, O 0.692060, H 0.692060, L 0.691100, C 0.691100, ema_fast 0.691795, ema_mid 0.691966, ema_slow 0.692182, C[1] 0.692110, ema_anchor_fast 0.692384, ema_anchor_slow 0.691245, ema_anchor_baseline 0.672130, -0.0009099999999999664 🔴, PnL -8.485040 trend=0 TREND ENDED, CLOSE
As you can see, it tries many times to close the position. Market order is
Submitted
but notAccepted
orCompleted
. So order stays and I lose money! :C -
Actually, this is strange.
I think it is saying it was Long => 2936, and tried to Close => 0, but closed twice, so now it is Short => -2936.
I do not mean to reverse the position, simply close once so it should be 0 and the position should be gone. I will add some more clear logs to see if it works as intended.
-
@dasch Ok, I looked into this more.
Say I have the open position:
USD/CHF 2359 Sell
But I am seeing logs like:
NO DOWNTREND, CLOSE SELL => BUY 2020-06-04: Order ref: 4 / Type Buy / Status Submitted / ExecType Market / Size 9736.0 / Alive True / Price 0.0 / Position -9736.0 LIVE, 4, Data0, 0522, 06-04 01:05:00, O 0.961700, H 0.961730, L 0.961550, C 0.961560, ema_fast 0.961758, ema_mid 0.961704, ema_slow 0.961619, C[1] 0.961660, ema_anchor_fast 0.961527, ema_anchor_slow 0.961770, ema_anchor_baseline 0.964495, -9.999999999998899e-05 🔴, PnL -1.431505 trend=0 NO DOWNTREND, CLOSE SELL => BUY 2020-06-04: Order ref: 5 / Type Buy / Status Submitted / ExecType Market / Size 9736.0 / Alive True / Price 0.0 / Position -9736.0 LIVE, 4, Data0, 0523, 06-04 01:10:00, O 0.961520, H 0.961600, L 0.961500, C 0.961530, ema_fast 0.961708, ema_mid 0.961679, ema_slow 0.961611, C[1] 0.961660, ema_anchor_fast 0.961527, ema_anchor_slow 0.961770, ema_anchor_baseline 0.964495, -2.999999999997449e-05 🟢, PnL -1.139425 trend=0 NO DOWNTREND, CLOSE SELL => BUY 2020-06-04: Order ref: 6 / Type Buy / Status Submitted / ExecType Market / Size 9736.0 / Alive True / Price 0.0 / Position -9736.0 LIVE, 4, Data0, 0524, 06-04 01:15:00, O 0.961570, H 0.961720, L 0.961550, C 0.961720, ema_fast 0.961710, ema_mid 0.961685, ema_slow 0.961621, C[1] 0.961660, ema_anchor_fast 0.961527, ema_anchor_slow 0.961770, ema_anchor_baseline 0.964495, +0.00019000000000002348 🟢, PnL -2.989265 trend=0 NO DOWNTREND, CLOSE SELL => BUY 2020-06-04: Order ref: 7 / Type Buy / Status Submitted / ExecType Market / Size 9736.0 / Alive True / Price 0.0 / Position -9736.0 LIVE, 4, Data0, 0525, 06-04 01:20:00, O 0.961680, H 0.961720, L 0.961600, C 0.961700, ema_fast 0.961708, ema_mid 0.961687, ema_slow 0.961628, C[1] 0.961660, ema_anchor_fast 0.961527, ema_anchor_slow 0.961770, ema_anchor_baseline 0.964495, -2.0000000000020002e-05 🟢, PnL -2.794545 trend=0 NO DOWNTREND, CLOSE SELL => BUY 2020-06-04: Order ref: 8 / Type Buy / Status Submitted / ExecType Market / Size 9736.0 / Alive True / Price 0.0 / Position -9736.0 LIVE, 4, Data0, 0526, 06-04 01:25:00, O 0.961740, H 0.961750, L 0.961700, C 0.961750, ema_fast 0.961717, ema_mid 0.961696, ema_slow 0.961639, C[1] 0.961660, ema_anchor_fast 0.961527, ema_anchor_slow 0.961770, ema_anchor_baseline 0.964495, +4.999999999999449e-05 🟢, PnL -3.281345 trend=0 NO DOWNTREND, CLOSE SELL => BUY 2020-06-04: Order ref: 9 / Type Buy / Status Submitted / ExecType Market / Size 9736.0 / Alive True / Price 0.0 / Position -9736.0 LIVE, 4, Data0, 0527, 06-04 01:30:00, O 0.961700, H 0.961910, L 0.961670, C 0.961890, ema_fast 0.961756, ema_mid 0.961724, ema_slow 0.961662, C[1] 0.961660, ema_anchor_fast 0.961527, ema_anchor_slow 0.961770, ema_anchor_baseline 0.964495, +0.000140000000000029 🟢, PnL -4.644385 trend=0 NO DOWNTREND, CLOSE SELL => BUY
This is wrong because backtrader thinks I have a position
-9736.0
, so it tries to buy9736
. In reality, I have position-2359
, so it should be trying to buy2359
.In addition, all of these orders get canceled.
USD/CHF 9 736 Buy Market 0.96189 Cancelled 6043 USD/CHF 9 736 Buy Market 0.96190 Cancelled 6057 USD/CHF 9 736 Buy Market 0.96189 Cancelled 6063 USD/CHF 9 736 Buy Market 0.96208 Cancelled 6073 USD/CHF 9 736 Buy Market 0.96216 Cancelled 6085
So it seems I am unable to properly close positions. Backtrader appears to be storing the wrong size and the close orders get canceled.
-
this is not a backtrader issue, but mostly a btoandav20 issue or something with your strategy.
do you store the position size somewhere?
but without some workable code I cannot help you that much with your issues.