Stoploss is applied to exit the position of placed order. While it is pending then to cancel it


  • According to this script, when sbi's buy order is placed, then when a stoploss_limit order is placed to exit its position, whose Verity is "STOPLOSS" while it is pending, I want to cancel this pending order. , when I run this script, the order with STOPLOSS Verity is not canceled, please can someone tell me what I am doing wrong, when I run the script, then """ Sell order cancelled: 2d8c042c-2896- 4341-8b55-8b3b075d76be """ is received but still order is not canceled, remains in pending

    import requests
    from SmartApi.smartConnect import SmartConnect
    from SmartApi.smartWebSocketOrderUpdate import SmartWebSocketOrderUpdate
    from SmartApi.smartWebSocketV2 import SmartWebSocketV2
    import pyotp
    from datetime import datetime
    import time
    import threading

    print("Script ko shuru karte hain")

    LIVE_FEED_JSON = {}

    SmartAPI connection shuru karein

    api_key = '7yrR5r'
    username = 'A286220'
    pwd = '1009'
    smartApi = SmartConnect(api_key)

    OTP token generate karein

    try:
    token = "UZTNGOU7FW3QMY5DPC6OB73OEA"
    totp = pyotp.TOTP(token).now()
    except Exception as e:
    print("Invalid Token: Diya gaya token valid nahi hai.")
    raise e

    Session generate karein

    data = smartApi.generateSession(username, pwd, totp)

    Session generation ka response handle karein

    if not data['status']:
    print(data)
    exit()

    authToken = data['data']['jwtToken']
    refreshToken = data['data']['refreshToken']
    feedToken = smartApi.getfeedToken()
    res = smartApi.getProfile(refreshToken)
    smartApi.generateToken(refreshToken)
    exchanges = res['data']['exchanges']

    WebSocket configuration

    AUTH_TOKEN = authToken
    API_KEY = "7yrR5r"
    CLIENT_CODE = "A2220"
    FEED_TOKEN = feedToken
    correlation_id = "abc123"
    mode = 1
    token_list = [{"exchangeType": 1, "tokens": ["3045"]}, {"exchangeType": 2, "tokens": ["3045"]}]

    SmartWebSocketV2 instance initialize karein

    sws = SmartWebSocketV2(AUTH_TOKEN, API_KEY, CLIENT_CODE, FEED_TOKEN)

    WebSocket event handlers define karein

    def on_data(wsapp, message):
    try:
    token = message.get('token')
    ltp = message.get('last_traded_price') / 100
    exchange_timestamp = datetime.fromtimestamp(message.get('exchange_timestamp') / 1000).isoformat()
    oi = message.get('open_interest')

        parsed_data = {
            'token': token,
            'ltp': ltp,
            'exchange_timestamp': exchange_timestamp,
            'oi': oi
        }
    
        print("Parsed data:", parsed_data)
    
        LIVE_FEED_JSON[token] = parsed_data
    except Exception as e:
        print("Data parsing mein error:", e)
    

    def on_control_message(wsapp, message):
    print(f"Control Message: {message}")

    def on_open(wsapp):
    print("WebSocket connection opened")
    sws.subscribe(correlation_id, mode, token_list)

    def on_error(wsapp, error):
    print("WebSocket Error:", error)
    # Retry connection
    sws.connect()

    def on_close(wsapp):
    print("WebSocket connection closed")
    # Retry connection
    sws.connect()

    SmartWebSocketV2 instance ko event handlers assign karein

    sws.on_open = on_open
    sws.on_data = on_data
    sws.on_error = on_error
    sws.on_close = on_close
    sws.on_control_message = on_control_message

    WebSocket connection thread ko start karein

    sws_thread = threading.Thread(target=sws.connect)
    sws_thread.start()
    print('WebSocket connection initiated')

    Order place function define karein

    def place_order(symboltoken, quantity, tradingsymbol):
    try:
    order_params = {
    "variety": "NORMAL",
    "tradingsymbol": tradingsymbol,
    "symboltoken": symboltoken,
    "transactiontype": "BUY",
    "exchange": "NSE",
    "ordertype": "MARKET",
    "producttype": "INTRADAY",
    "duration": "DAY",
    "price": "0",
    "quantity": quantity
    }
    response = smartApi.placeOrderFullResponse(order_params)
    if response and response['status']:
    uniqueOrderID = response['data']['uniqueorderid']
    print("Order successfully placed. Unique Order ID:", uniqueOrderID)
    return uniqueOrderID
    else:
    print("Failed to place order:", response['message'] if response else "Response is None")
    return None
    except Exception as e:
    print("Error placing order:", e)
    return None

    Sell order function define karein

    def place_sell_order(symboltoken, quantity, order_id, tradingsymbol):
    try:
    order_params = {
    "variety": "STOPLOSS",
    "orderid": order_id,
    "tradingsymbol": tradingsymbol,
    "symboltoken": symboltoken,
    "transactiontype": "SELL",
    "exchange": "NSE",
    "ordertype": "STOPLOSS_LIMIT",
    "producttype": "INTRADAY",
    "duration": "DAY",
    "triggerprice": "790",
    "price": "770",
    "squareoff": "0",
    "stoploss": "0",
    "quantity": quantity
    }
    response = smartApi.placeOrderFullResponse(order_params)
    if response and response['status']:
    uniqueOrderID = response['data']['uniqueorderid']
    print("Order successfully placed. Unique Order ID:", uniqueOrderID)
    return uniqueOrderID
    else:
    print("Failed to place order:", response['message'] if response else "Response is None")
    return None
    except Exception as e:
    print("Error placing order:", e)
    return None

    Cancel order function

    def cancelOrder(order_id, variety):
    try:
    orderResponse = smartApi.cancelOrder(order_id, variety)
    return orderResponse
    except Exception as e:
    print("Error cancelling order:", e)
    return None

    Order update event handler define karein

    def on_order_update(wsapp, message):
    print("Order Update Received:", message)

    SmartWebSocketOrderUpdate instance initialize karein

    order_update_client = SmartWebSocketOrderUpdate(AUTH_TOKEN, API_KEY, CLIENT_CODE, FEED_TOKEN)

    Order update event handlers define karein

    def on_order_update_open(wsapp):
    print("Order Update WebSocket connection opened")

    def on_order_update_error(wsapp, error):
    print("WebSocket Order Update Error:", error)

    def on_order_update_close(wsapp, close_status_code, close_msg):
    pass

    SmartWebSocketOrderUpdate instance ko event handlers assign karein

    order_update_client.on_open = on_order_update_open
    order_update_client.on_error = on_order_update_error
    order_update_client.on_close = on_order_update_close
    order_update_client.on_order_update = on_order_update

    Order Update WebSocket connection thread ko start karein

    order_update_thread = threading.Thread(target=order_update_client.connect)
    order_update_thread.start()
    print('Order Update WebSocket connection initiated')

    def monitor_and_place_orders():
    order_1_id = None
    sell_order_id = None
    try:
    while True:
    # Condition A
    if '3045' in LIVE_FEED_JSON and LIVE_FEED_JSON['3045']['ltp'] > 740 and order_1_id is None:
    order_1_id = place_order('3045', '1', "SBIN-EQ")
    if order_1_id:
    print("Order 1 placed:", order_1_id)

            # Condition B
            if order_1_id:
                order_status = smartApi.individual_order_details(order_1_id)['data']['orderstatus']
                if order_status == 'complete':
                    print("Order 1 completed.")
    
                    # Condition C
                    if not sell_order_id and '3045' in LIVE_FEED_JSON and LIVE_FEED_JSON['3045']['ltp'] < 815:
                        # Place sell order to exit position
                        sell_order_id = place_sell_order('3045', 1, order_1_id, "SBIN-EQ")
                        print("Sell order placed to exit position:", sell_order_id)
            # Condition D
            if sell_order_id:
                order_status = smartApi.individual_order_details(sell_order_id)['data']['orderstatus']
                if order_status == 'trigger pending' and LIVE_FEED_JSON['3045']['ltp'] < 817:
                    # Cancel the sell order
                    cancelOrder(sell_order_id, "STOPLOSS")
                    print("Sell order cancelled:", sell_order_id)
                    
    
            time.sleep(10)
            
    finally:
        # WebSocket connections ko band karein
        sws.close_connection()
        order_update_client.close_connection()
    

    monitor_thread = threading.Thread(target=monitor_and_place_orders)
    monitor_thread.start()


  • Sir by the way my api key or password is wrong but by the way i want to ask how to delete the post


  • @as5320029 don't reveal your pwd . user id and Totp key etc .. in general your credential never disclose .

    first delete your mail and repost it6 again without your credentials.