def place_robo_order(
self,
instrument_list: List[Dict[str, Union[str, int]]],
ticker: str,
buy_sell: str,
prices: List[float],
quantity: int,
exchange: str = 'NSE',
) -> Optional[Dict[str, Union[str, int]]]:
"""Place a robo order."""
ltp: Optional[float] = self.get_ltp(instrument_list, ticker, exchange)
if not ltp:
return None
limit_price = ltp + 1 if buy_sell == 'BUY' else ltp - 1
if buy_sell == "SELL":
stop_loss_price = limit_price * 1.01 # 1% above
else: # BUY
stop_loss_price = limit_price * 0.99 # 1% below
capital = 5000
quantity, target_price = calculate_quantity(capital, limit_price, stop_loss_price, risk_pct=0.01, rr=2)
params: Dict[str, Union[str, int, float]] = {
'variety': 'ROBO',
'tradingsymbol': '{}-EQ'.format(ticker),
'symboltoken': token_lookup(ticker, instrument_list),
'transactiontype': buy_sell,
'exchange': exchange,
'ordertype': 'LIMIT',
'producttype': 'BO',
'price': limit_price,
'duration': 'DAY',
'stoploss': round(stop_loss_price, 1),
'squareoff': round(target_price, 1),
'quantity': quantity,
}
try:
print('Payload of robo order:', params)
response = self.smart_api.placeOrder(params)
return response
except Exception as e:
print(e)
return None
my stoploss and traget should be point diffence to the buy price or actual price?