Closed megaryab closed 2 years ago
а ты лимитные покупки ставишь, или по рыночной цене?
Ставлю и такие и такие. Пытаюсь купить 1 доллар, но не могу.
(async () => { console.log( await api.Orders.PostOrder({figi: "BBG0013HGFT4", quantity : 1, price : {units : 75, nano: 3}, direction : "ORDER_DIRECTION_BUY", account_id : "2142952809", order_type : "ORDER_TYPE_LIMIT", order_id : 2 }) ) } ) ()
(async () => { console.log( await api.Orders.PostOrder({figi: "BBG0013HGFT4", quantity : 1, price : {units : 75, nano: 3}, direction : "ORDER_DIRECTION_BUY", account_id : "2142952809", order_type : "ORDER_TYPE_MARKET", order_id : 3 }) ) } ) ()
Также перепробовал поменять направление сделки. Но всегда одна и та же ошибка
В обоих случаях выдает ошибку. UnhandledPromiseRejectionWarning: Error: 3 INVALID_ARGUMENT: 30042 - Недостаточно активов для маржинальной сделки. Проверьте маржинальные показатели счёта.
На счету деньги есть. Или я делаю что то не так? Или может какие ограничения или настройки.
Помогите пожалуйста
вот я продал только что.
EDIT: а нет, продалось по 1000 долларов! Да, это как-то неправильно
мои request&response:
quantity: 1
price {
units: 75
nano: 230000000
}
direction: ORDER_DIRECTION_SELL
account_id: "2035159231"
order_type: ORDER_TYPE_MARKET
order_id: "7163836807453460708"
order_id: "22917997965"
execution_report_status: EXECUTION_REPORT_STATUS_FILL
lots_requested: 1
lots_executed: 1
initial_order_price {
currency: "rub"
units: 75185
}
executed_order_price {
currency: "rub"
units: 1
}
total_order_amount {
currency: "rub"
units: 75185
}
initial_commission {
currency: "rub"
units: 18
nano: 800000000
}
executed_commission {
currency: "rub"
}
aci_value {
}
figi: "BBG0013HGFT4"
direction: ORDER_DIRECTION_SELL
initial_security_price {
currency: "rub"
units: 75
nano: 185000000
}
order_type: ORDER_TYPE_MARKET
Я так понимаю проблема в том что на бирже валюта торгуется лотами по 1000 штук. То что в приложении есть возможность торговать по 1шт, это я так понимаю не уходит на биржу а обмен идет через брокера (как бы через банковский обменник)
Да, действительно, у инструмента указано lot: 1000
.
Я думал, цена за лот будет указана тогда в, ну, хотя бы initial_security_price. А так, мы видим, что ни в запросе, ни в ответе не фигурирует ни общая цена, ни количество акций на лот
figi: "BBG0013HGFT4"
ticker: "USD000UTSTOM"
class_code: "CETS"
lot: 1000
...
@betslus1 в документации написано, что price в PostOrderRequest это именно цена лота
@betslus1 в документации написано, что price в PostOrderRequest это именно цена лота
мне кажется ошибка в документации, лучше дождаться разработчиков или проверить. я пока не тестил лотные инструменты и временно отказался от них @serejhaaa
Я думал, цена за лот будет указана тогда в, ну, хотя бы initial_security_price. А так, мы видим, что ни в запросе, ни в ответе не фигурирует ни общая цена, ни количество акций на лот
ну так вроде всегда было и везде, с лотными инструментами в принципе очень тяжело работать
initial_order_price { currency: "rub" units: 75185 }
тут ведь указано что общая стоимость лота 75 тысяч рублей
да, initial_order_price правильная.
Разработчикам надо либо исправить докумантацию PostOrderRequest.price, либо исправить хендлинг в соответствии с ней. Также исправить PortfolioPosition в теле ответа Operations.GetPortfolio:
Сейчас возвращается так:
figi: "BBG0013HGFT4"
instrument_type: "currency"
quantity {
units: 2249
nano: 350000000
}
average_position_price {
currency: "rub"
}
expected_yield {
units: -773
nano: -40000000
}
current_nkd {
}
current_price {
currency: "rub"
units: 74
nano: 747500000
}
average_position_price_fifo {
currency: "rub"
units: 75
nano: 90000000
}
quantity_lots {
units: 2249
nano: 350000000
}
неплохо бы вообще унифицировать это всё -- везде всё в лотах, например, писать, или наоборот
Господа, у меня вопрос. Почему в приложении я могу покупать от 1 доллара или евро и прочую валюту. Но в API установлены ограничения размера покупки валюты кратной 1000. Это я чего то не понимаю или Tinkoff не дает делать такие операции через API?