For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/
Different commissions for each order type
-
I would like to set different commissions depending on the order type, if it is buy/sell operations, it should charges a percentage comm = X, and if it is a close operation, it should charge double: 2X.
def next(self): if condition1: self.broker.setcommission(0.0045) self.buy() elif condition2: self.broker.setcommission(0.009) self.close()
Is there any way through commission scheme or other method to do this?
Thank you in advance. -
As you can see here:
For order management 3 primitives:
- buy
- sell
- cancel
For order execution logic the following execution types:
- Market
- Close
- Limit
- Stop
- StopLimit
So I think this should work:
if self.p.exectype == 'Close': self.broker.setcommission(0.009) else: // can be Market, Limit, Stop, or StopLimit self.broker.setcommission(0.0045)
-
@balibou thank you for your reply, I think exectype == 'Close' refers to the "close price" rather than close operation.
I've made a simple solution:commissions = []
class CommInfo_My(bt.CommInfoBase): global commissions def _getcommission(self, size, price, pseudoexec): if commissions: comm = commissions[0] * size * price if not pseudoexec: commissions.pop(0) return comm
def next(self): if condition1: commissions.append(0.0045) self.buy() elif condition2: commissions.append(0.009) self.close()
cerebro.broker.addcommissioninfo(strategyDraft.CommInfo_My())
-
@anas-laamrani-0Thanks for code:) Also how would I add leverage to this commotion scheme?
PS. I am trying to simulate margin trading on BTC/USD in Phemex.