Ошибка в создании транзакции

Страницы: 1
RSS
Ошибка в создании транзакции, ОШИБКА 159
 
Отправляю транзакцию
local Transaction={
 ["TRANS_ID"]   = tostring(trans_id_OPT),
 ["ACTION"]     = "NEW_ORDER",
 ["CLASSCODE"]  = "TQBR",
 ["SECCODE"]    = postable[i][1],
 ["OPERATION"]  = "B", -- покупка (BUY)
 ["TYPE"]       = "L", -- по рынку (MARKET)
 ["QUANTITY"]   = "1", -- количество имеющееся количество - неснижаемый остаток
 ["ACCOUNT"]    = ACCOUNT,--"L01-00000F00",
 ["PRICE"]      = tostring(prc),--tostring(getParamEx("TQBR", postable[i][1], "offer").param_value + 10*getParamEx("TQBR", postable[i][1], "SEC_PRICE_STEP").param_value), -- по цене, завышенной на 10 мин. шагов цены
 ["COMMENT"]    = "Покупка бумаг скриптом"

в функции OnTransReply получаю
[9456] OnTransReply-begin
[9456] OnTransReply-trans_id 5850
[9456] OnTransReply-status 4
[9456] OnTransReply-result_msg ОШИБКА: (159) Указанный тип заявки не разрешен для этого финансового инструмента и режима торгов.
[9456] OnTransReply-time 174118
[9456] OnTransReply-uid 30521
[9456] OnTransReply-flags 262145
[9456] OnTransReply-server_trans_id 518
[9456] OnTransReply-order_num 0
[9456] OnTransReply-price 136.65
[9456] OnTransReply-quantity 24
[9456] OnTransReply-balance 0
[9456] OnTransReply-firm_id MC0007400000
[9456] OnTransReply-account L01+00000F00
[9456] OnTransReply-client_code 130521
[9456] OnTransReply-brokerref
[9456] OnTransReply-class_code TQBR
[9456] OnTransReply-sec_code GAZP

Не могу понять в чем ошибка. Подскажите пожалуйста
 
это наверно на учебном сервере?
возможно не проходит По рынку
и еще
Вы как-то странно задаете, если по рынку то зачем цена если по цене то почему по рынку?
 
Это действительно учебный сервер.
["TYPE"] = "L", -- по рынку (MARKET) - заявка лимитированная. комментарий остался старый.
А что значит "не проходит по рынку"? Заявка должна быть хотя бы зарегистрирована.
 
Цитата
Владимир Киселев написал:
Не могу понять в чем ошибка

Странно: в ответе: [9456] OnTransReply-quantity 24
А в транзакции - 1.
Есть подозрение, что это ответ на другую транзакцию, которая действительно с ошибочными параметрами.
Попробуйте выводить в лог все отправляемые транзакции с их фактическими параметрами, а то по коду это сложно понять.
И потом спаривать их по trans_id и уже сравнивать.
 
trans_id  соответствует тому, который я присвоил транзакции перед отправкой.
Я тоже обратил внимание на quantity. Отправляю 1, а приходит 24.
 
Цитата
Владимир Киселев написал:
["COMMENT"]    = "Покупка бумаг скриптом"

У транзакций нет поля "COMMENT". Это только для импорта из .tri-файла для групповых операций. Правильно так:
Код
["CLIENT_CODE"]="130521/Покупка бумаг скриптом"
ну либо
Код
["CLIENT_CODE"]="/Покупка бумаг скриптом"
 
Супер, спасибо. Попробую
 
Не помогло. Ошибка та же.
 
нет кода клиента CLIENT_CODE
 
Добавил код клиента. Не помогло. Ошибка та же.
 
Цитата
Владимир Киселев написал:
Добавил код клиента. Не помогло. Ошибка та же.
Добрый день.

Вручную заявка проходит с такими же данными?
Обратим внимание, что ошибка ОШИБКА: (159) Указанный тип заявки не разрешен для этого финансового инструмента и режима торгов - биржевая и возвращает ее не сервер QUIK, а именно биржа.  
 

так заявка выставляется руками и проходит.
Из этих параметров я не знаю как установить следующие параметры:
Тип по цене
Тип по остатку
Тип ввода значения цены
назначение заявки
Тип способа активации заявки
Как называются параметры для установки этих параметров. В документации на tri файлы, как-то запутанно - не разобрался.
 
Цитата
Владимир Киселев написал:

так заявка выставляется руками и проходит.
Из этих параметров я не знаю как установить следующие параметры:
Тип по цене
Тип по остатку
Тип ввода значения цены
назначение заявки
Тип способа активации заявки
Как называются параметры для установки этих параметров. В документации на tri файлы, как-то запутанно - не разобрался.
Если использовать пример из документации:

ACCOUNT=NL0080000043; CLIENT_CODE=467; TYPE=L; TRANS_ID=1; CLASSCODE=TQBR;  SECCODE=RU0008943394; ACTION=NEW_ORDER; OPERATION=S; PRICE=43,21; QUANTITY=3;

то заявка уходит с такими параметрами по умолчанию:



Если в меняете условие "ввод цены" и "условия исполнения", то необходимо использовать следующий пример транзакции.

TRANS_ID=1;CLASSCODE=QJSIM;ACTION=Ввод заявки;Код торгового счета=NL0011100043;К/П=Купля;Тип=Лимитированная;Признак расщепления цены=По одной цене;Условие исполнения=Поставить в очередь;Тип ввода значения цены=Цена;Режим=QJSIM;Инструмент=MSNG;Цена=0.0045;Количество=4;Примечание=rise//vv;
 
Цитата
Владимир Киселев написал:

так заявка выставляется руками и проходит.

Приведите здесь полный лог всех параметров отправляемой транзакции (как вы привели ответ на нее). Может, ошибка кроется в совсем малом и незаметном.
 
[9456] Transaction-trans_id 13
[9456] Transaction-ACTION NEW_ORDER
[9456] Transaction-CLASSCODE TQBR
[9456] Transaction-SECCODE GAZP
[9456] Transaction-OPERATION B
[9456] Transaction-TYPE L
[9456] Transaction-QUANTITY 1
[9456] Transaction-ACCOUNT L01+00000F00
[9456] Transaction-CLIENT_CODE 130521
[9456] Transaction-PRICE 143.7
 
Варианты:
1. Попробуйте совсем убрать TYPE = L. Заявки лимитные по умолчанию.
2. Задать цену с 2-мя знаками вместо одного ("143.70").
2. Я ввел аналогичную заявку в карман транзакций и сохранил в файл. Вот что получилось:
Код
TRANS_ID=1;
CLASSCODE=TQBR;
ACTION=Ввод заявки;
Торговый счет=L01+00000F00;
К/П=Купля;
Тип=Лимитная;
Тип по цене=По разным ценам;
Тип по остатку=Поставить в очередь;
Тип ввода значения цены=По цене;
Назначение заявки=По умолчанию;
Тип события активации заявки=Обычная заявка;
Режим=TQBR;
Инструмент=GAZP;
Цена=143.70;
Лоты=1;
Примечание=;
Объем заявки=0.00;
Код внешнего пользователя=;
Время активации=;
Доп. инфо=;
Интересно, что такое параметр "Режим" (равен "CLASSCODE")? Может, проблема в его отсутствии?

Попробуйте сделать также и отправить транзакцию из кармана (предварительно сохранив в файл). Если уйдет нормально: в скрипте составьте точно такую же (именно в этом формате со всеми этими параметрами). Далее, исключая один параметр за другим (необязательные), можно будет понять, в каком из них проблема.
 
Переписал вот так и работает.
Кардинально ничего не менял. Есть некоторое недоумение, но главное, что заработало.

Всем большое спасибо за участие в обсуждении и помощь.

local Transaction={
 ["TRANS_ID"]   = tostring(trans_id_OPT),
 ["ACTION"]     = "NEW_ORDER",
 ["CLASSCODE"]  = "TQBR",
 ["SECCODE"]    = tostring(postable[i][1]),
 ["OPERATION"]  = "B", -- покупка (BUY)
 ["TYPE"]       = "L", -- по рынку (MARKET)
 ["QUANTITY"]   = "1", -- количество имеющееся количество - неснижаемый остаток
 ["ACCOUNT"]    = tostring(ACCOUNT),--"L01-00000F00",
 ["CLIENT_CODE"]= tostring(CLIENTCODE),
 ["PRICE"]      = tostring(prc)--,
 --["COMMENT"]    = "Покупка бумаг скриптом"
}
 
у Вас был
Объем заявки=0.00;
Страницы: 1
Читают тему
Наверх