79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
"""Example - Trailing Stop Take Profit order.
|
|
spread=0.5 relative value
|
|
indent=0.5 absolute value
|
|
"""
|
|
|
|
import json
|
|
import logging
|
|
import os
|
|
from decimal import Decimal
|
|
|
|
from t_tech.invest import (
|
|
Client,
|
|
ExchangeOrderType,
|
|
GetStopOrdersRequest,
|
|
PostStopOrderRequest,
|
|
PostStopOrderRequestTrailingData,
|
|
StopOrderDirection,
|
|
StopOrderExpirationType,
|
|
StopOrderTrailingData,
|
|
StopOrderType,
|
|
TakeProfitType,
|
|
)
|
|
from t_tech.invest.schemas import TrailingValueType
|
|
from t_tech.invest.utils import decimal_to_quotation
|
|
|
|
TOKEN = os.environ["INVEST_TOKEN"]
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
|
|
INSTRUMENT_ID = "TCS00A105GE2"
|
|
QUANTITY = 1
|
|
PRICE = 230.500000000
|
|
STOPPRICE = 230
|
|
INDENT = 0.5
|
|
SPREAD = 0.5
|
|
|
|
|
|
def main():
|
|
logger.info("Getting Max Lots")
|
|
with Client(TOKEN) as client:
|
|
response = client.users.get_accounts()
|
|
account, *_ = response.accounts
|
|
account_id = account.id
|
|
|
|
logger.info(
|
|
"Post take profit stop order for instrument=%s and trailing parameters: indent=%s, spread=%s, price=%s ",
|
|
INSTRUMENT_ID,
|
|
INDENT,
|
|
SPREAD,
|
|
STOPPRICE,
|
|
)
|
|
|
|
post_stop_order = client.stop_orders.post_stop_order(
|
|
quantity=QUANTITY,
|
|
price=decimal_to_quotation(Decimal(PRICE)),
|
|
stop_price=decimal_to_quotation(Decimal(STOPPRICE)),
|
|
direction=StopOrderDirection.STOP_ORDER_DIRECTION_SELL,
|
|
account_id=account_id,
|
|
stop_order_type=StopOrderType.STOP_ORDER_TYPE_TAKE_PROFIT,
|
|
instrument_id=INSTRUMENT_ID,
|
|
expiration_type=StopOrderExpirationType.STOP_ORDER_EXPIRATION_TYPE_GOOD_TILL_CANCEL,
|
|
exchange_order_type=ExchangeOrderType.EXCHANGE_ORDER_TYPE_LIMIT,
|
|
take_profit_type=TakeProfitType.TAKE_PROFIT_TYPE_TRAILING,
|
|
trailing_data=StopOrderTrailingData(
|
|
indent=decimal_to_quotation(Decimal(INDENT)),
|
|
indent_type=TrailingValueType.TRAILING_VALUE_ABSOLUTE,
|
|
spread=decimal_to_quotation(Decimal(SPREAD)),
|
|
spread_type=TrailingValueType.TRAILING_VALUE_RELATIVE,
|
|
),
|
|
)
|
|
|
|
print(post_stop_order)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|