blackchestnut/invest_tinkoff

Не работает ни маркет ни лимит order

brandeurs opened this issue · 9 comments

client.create_order(
account_id: 'ВАШ_ID_СЧЁТА',
figi: 'BBG000BL9C59',
quantity: 1,
price: 11.35,
direction: InvestTinkoff::V2::OrderDirection::BUY,
order_type: InvestTinkoff::V2::OrderType::LIMIT,
order_id: 'ВАШ_ВНУТРЕННИЙ_ID_ЗАЯВКИ'
)

order_id - генерю по дате и секундам уникальный
ошибка 400 и все. Остальное работает.

@brandeurs хм, странно... на текущей версии библиотеки проверил

client.create_order(account_id: '***', figi: 'FUTSI0923000', quantity: 1, price: 86000, direction: InvestTinkoff::V2::OrderDirection::BUY, order_type: InvestTinkoff::V2::OrderType::LIMIT, order_id: 'test_1_20_06_2023')

Результат

=> #<struct InvestTinkoff::V2::Response
 payload=
  {"orderId"=>"1892948522941182087",
   "executionReportStatus"=>"EXECUTION_REPORT_STATUS_NEW",
   "lotsRequested"=>"1",
   "lotsExecuted"=>"0",
   "initialOrderPrice"=>{"currency"=>"rub", "units"=>"86000", "nano"=>0},
   "executedOrderPrice"=>{"currency"=>"rub", "units"=>"0", "nano"=>0},
   "totalOrderAmount"=>{"currency"=>"rub", "units"=>"0", "nano"=>0},
   "initialCommission"=>{"currency"=>"rub", "units"=>"34", "nano"=>400000000},
   "executedCommission"=>{"currency"=>"rub", "units"=>"0", "nano"=>0},
   "aciValue"=>{"currency"=>"", "units"=>"0", "nano"=>0},
   "figi"=>"FUTSI0923000",
   "direction"=>"ORDER_DIRECTION_BUY",
   "initialSecurityPrice"=>{"currency"=>"rub", "units"=>"86000", "nano"=>0},
   "orderType"=>"ORDER_TYPE_LIMIT",
   "message"=>"",
   "initialOrderPricePt"=>{"units"=>"86000", "nano"=>0},
   "instrumentUid"=>"1f9e6a2e-aff1-4e9c-8b22-17de45443e2b"},
 http_code=200>

P.S. Сделал ордер так, чтобы он сразу исполнился, т.к. цена, по которой хочу купить, выше чем текущая... результат:

Monosnap 2023-06-20 21-28-41

@brandeurs попробую влить и протестировать изменения #4 от @SRadyukov возможно это влияет на ваш случай, но предполагаю, что не в этом причина

@brandeurs да, как и предполагалось, эти изменения не повлияли на результат в моих тестах... Для больше информации вам нужно прислать сообщение об ошибке, которое возвращает Тинькофф. Например:

=> #<struct InvestTinkoff::V2::Response payload={"code"=>3, "message"=>"not enough assets for a margin trade", "description"=>"30042"}, http_code=400>

@brandeurs Эх, вы видимо просто в лоб скопировали пример... обращайте внимание на ошибки и требования к бумаге... ошибка у вас скорее всего - "only for qualified investors". Цена то же могла поменяться, тогда ошибка была бы другой

@brandeurs Сложно понять в чем у вас дело, попробуйте новый токен создать в тинькофф, может у вас он "протух". На сколько я помню, если не пользоваться несколько месяцев токеном, то он становится не активным.

В старой версии ответ гема :: client.accounts #<struct InvestTinkoff::V2::Response payload= {"accounts"=> [{"id"=>”****", "type"=>"ACCOUNT_TYPE_TINKOFF", "name"=>"Брокерский счёт", "status"=>"ACCOUNT_STATUS_OPEN", "openedDate"=>"2019-11-28T00:00:00Z", "closedDate"=>"1970-01-01T00:00:00Z", "accessLevel"=>"ACCOUNT_ACCESS_LEVEL_FULL_ACCESS"}]}, Новая версия гема --- gem install invest_tinkoff Fetching invest_tinkoff-0.9.6.7.gem Successfully installed invest_tinkoff-0.9.6.7 1 gem installed client.accounts ArgumentError: wrong number of arguments (given 2, expected 1) from /Users/adm/.rvm/gems/ruby-3.1.2/gems/json-1.8.6/lib/json/common.rb:155:in `initialize'

Изменения в последней версии метод accounts совсем не затрагивали
v0.9.6.6...v0.9.6.7