Executing Sell and Buy orders of an asset
I have been banging my head around the forum and the internet but could not figure out, how to place sell and buy order in one asset. The code I have just makes a buy trade based on a certain condition and then sells the bought asset off after meeting a different condition. I am trying to instantiate two different trades (long and short) which will be closed on meeting specific conditions.
self.log('Close: %.5f' % self.dataclose) if self.order: return if not self.position: if self.rsi >= 70: self.log('SELL Created: %.5f' % self.dataclose) self.order = self.sell() else: if self.rsi <= 30: self.log('BUY Created: %.5f' % self.dataclose) self.order = self.buy()
It may be to early in the morning, but I fail to understand your problem.
You want to buy when a certain condition is met and buy when another is met. The code apparently does that.
May be the key is here
I am trying to instantiate two different trades (long and short) which will be closed on meeting specific conditions.
But it seems your code already does that.
You probably want to elaborate a bit more.
It was infact early in the morning, but to elaborate, as of now my code only buys the asset i.e it only goes long and closes the position when a certain condition is met. I want to know is how can I initiate a long order and a short order within the code. So go long when RSI below 30 but short it when its is above 70.
If you buy and sell the same quantity you won't obviously go short.
You can either:
- Double the size of the existing position and buy/sell that amount (you obviously need a small exception when the initial position is not existent)
- Use first
self.close()and then buy/sell the exact amount you want.
And you of course:
- Need to check if the position is positive (long)/negative (short) rather than simply test for position existence.
As an alternative you can try the
FixedReversersizer, which does everything automatically for you. See:
@backtrader I tried executing the trade with what you mentioned above, but I got the best execution using the bracket orders with a risk method controlling the sizes.
Really appreciate the timely response, Thank you.