59 lines
1.8 KiB
Python
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()
|