As I couldn't find a solution anywhere in documentations. So, I come up with workaround (this may not the most efficient approach, it works for me though) I have started placing orders using 3 orders in sequence.
Example Scenario: Buy SOL for $300 at Market price (139.00).
#Place Market Buy Order, Buying volume = 2.15 for $300
ftx.create_order('SOL/USD','market','buy',2.15)
#Place Stop-loss order, volume = 2.15 when price reaches 135.00
ftx.create_order('SOL/USD','stop','sell',2.15,params={'triggerPrice':135.00,'reduceOnly': True})
#Place take-profit order, volume = 2.15 when price reaches 148.00
ftx.create_order('SOL/USD','takeProfit','sell',2.15,params={'triggerPrice':148.00,'reduceOnly': True})
make sure to include reduceOnly parameter so as not to open a new position should either of SL/TP order gets executed.
I realized either of TP/SL orders will be left out in order book as one gets filled, I am not sure what happens then so to avoid conflict with new order for same asset. i am handling that separately before placing new orders using -
ftx.cancel_all_orders(symbol, {'conditionalOrdersOnly':True})