Files
raptor-trading/invest-python-master/examples/sandbox/sandbox_post_stop_order.py

59 lines
1.8 KiB
Python

import os
import uuid
from _decimal import Decimal
from t_tech.invest import (
PostStopOrderRequest,
PostStopOrderRequestTrailingData,
PostStopOrderResponse,
StopOrderExpirationType,
StopOrderType,
)
from t_tech.invest.sandbox.client import SandboxClient
from t_tech.invest.schemas import Quotation, StopOrderDirection, TrailingValueType
from t_tech.invest.utils import decimal_to_quotation
def main():
token = os.environ["INVEST_TOKEN"]
with SandboxClient(token) as client:
accounts = client.users.get_accounts()
account_id = accounts.accounts[0].id
response = post_stop_order(
client,
account_id,
"BBG004730ZJ9",
stop_order_direction=StopOrderDirection.STOP_ORDER_DIRECTION_BUY,
quantity=1,
price=Quotation(units=10, nano=0),
)
print(response)
def post_stop_order(
sandbox_service, account_id, instrument_id, stop_order_direction, quantity, price
) -> PostStopOrderResponse:
return sandbox_service.sandbox.post_sandbox_stop_order(
request=PostStopOrderRequest(
account_id=account_id,
instrument_id=instrument_id,
direction=stop_order_direction,
quantity=quantity,
price=price,
order_id=str(uuid.uuid4()),
expiration_type=StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL,
stop_price=price,
stop_order_type=StopOrderType.STOP_ORDER_TYPE_TAKE_PROFIT,
trailing_data=PostStopOrderRequestTrailingData(
indent_type=TrailingValueType.TRAILING_VALUE_RELATIVE,
indent=decimal_to_quotation(Decimal(1)),
),
)
)
if __name__ == "__main__":
main()