You can cancel an order in two ways: 1. By order_id: Cancels the single
order matching that unique identifier. 2. By client_order_id: Cancels
all orders for your account that share the same client_order_id. Uniqueness
is not enforced, so multiple orders may be cancelled at once.
import osimport grpcfrom port import port_pb2from port import port_pb2_grpcfrom common import common_pb2API_KEY = os.getenv("QFEX_API_KEY")defstream_orders():# Attach API key metadatametadata =(("api-key", API_KEY),)channel = grpc.secure_channel("trade.pfex.io:443", grpc.ssl_channel_credentials())stub = port_pb2_grpc.PortServiceStub(channel)# Generator for sending requestsdefrequest_generator():# Cancenl an buy orderyield port_pb2.OrdersStreamRequest( cancel_order=port_pb2.CancelOrderRequest( symbol="SP500-USD", client_order_id="order-id-123",))# Bidirectional streaming call responses = stub.StreamOrders(request_generator(), metadata=metadata)for response in responses:print("Response:", response)if**name**=="**main**":stream_orders()
import osimport grpcimport port_pb2import port_pb2_grpcimport common_pb2API_KEY = os.getenv("QFEX_API_KEY")defstream_orders():# Attach API key metadatametadata =(('api-key', API_KEY),)channel = grpc.secure_channel('trade.pfex.io:443', grpc.ssl_channel_credentials())stub = port_pb2_grpc.PortServiceStub(channel)# Generator for sending requestsdefrequest_generator():# Add a limit buy orderyield port_pb2.OrdersStreamRequest( add_order=port_pb2.AddOrderRequest( symbol="SP500-USD", side=common_pb2.OrderDirection.BUY,type=common_pb2.OrderType.LIMIT, time_in_force=common_pb2.OrderTimeInForce.GTC, price=560.50, quantity=0.1, client_order_id="order-id-123"))# Modify an existing order.yield port_pb2.OrdersStreamRequest( modify_order=port_pb2.ModifyOrderRequest( order_id="abc12345-12345-12345-12345",# Note, for modifies we must use the order_id not client_order_id symbol="SP500-USD", price=560.60, quantity=0.2))# Cancel an existing orderyield port_pb2.OrdersStreamRequest( cancel_order=port_pb2.CancelOrderRequest( client_order_id="order-id-123",# Note, for cancels we can use either the client_order_id or order_id symbol="SP500-USD"))# Bidirectional streaming call responses = stub.StreamOrders(request_generator(), metadata=metadata)for response in responses:print("Response:", response)if**name**=='**main**':stream_orders()
This response is for an Add Order request. For Modify and Cancel requests, the response will be the same but with the status field set to MODIFIED or CANCELLED respectively. If any field returns the default value, it will not be printed to console.