Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Робот для Квика через API Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Сб Янв 07, 2012 10:39 am Ответить с цитатой Вернуться к началу

000 писал(а):
Кажись такое может быть если, например, цена не кратна размеру тика.

Может дело в дробных значениях тика и отступа?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Янв 07, 2012 12:38 pm Ответить с цитатой Вернуться к началу

если не больше двух знаков после запятой, то не должно. А какой класс написал? И лот?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Сб Янв 07, 2012 9:13 pm Ответить с цитатой Вернуться к началу

000 писал(а):
если не больше двух знаков после запятой, то не должно. А какой класс написал? И лот?

else if(Name() == "SBERst2") { //Символ как он называется в Ами
SecCode = "SBER";
Class = "RTSST";
Lots = 1;
TickS = 0.01; // Минимальный шаг цены торгуемой бумаги
Otstup = 0.02;
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Янв 08, 2012 11:30 pm Ответить с цитатой Вернуться к началу

Почти наверняка накосорезил или с аккаунтом или с кодом клиента. Спроси у своей техподдержки.
Если толку не будет - пиши. Попробуем так расковырять причину.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Вс Янв 08, 2012 11:46 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Почти наверняка накосорезил или с аккаунтом или с кодом клиента. Спроси у своей техподдержки.
Если толку не будет - пиши. Попробуем так расковырять причину.

А можно как нибудь сделать, чтобы при отправке транзакции в текстовый файл записались все параметры отправляемой заявки? Тогда мы увидим то ли там пишется и тогда уже можно будет в тех. поддержку обращаться
Кстати нашел описание похожей проблемы на сайте Квика
http://quik.ru/forum/import/82308/82313/
Ответов там пока нет
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Янв 09, 2012 1:18 am Ответить с цитатой Вернуться к началу

Нет. Там не та же проблема. Там Квик типа молча хавает заявку, но на сервер не отправляет, а у тебя он конкретно ругается на неправильные данные.
Можно вот еще что попробовать.
Вот код
Код:

Filter = 1;

connection = 0;

QC = QUIK_CONNECT("C:\\QUIK");

if (QC == 1)
{
   connection = 1;
   text = "Есть соединение с сервером";
   Color = colorGreen;
   connection = 1;
}
else if (QC == -1)
{
   text = "нет соединения с квиком";
   Color = colorRed;   
}
else if (QC == -2)
{
   text = "нет соединения с сервером";
   Color = colorRed;
}
else
{
   text = "фигня какая то";
   Color = colorRed;
}

AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);

order = "-100";
if(connection == 1)
{

   Order = AS_STRING_ORDER("ACCOUNT=NL0080000043; CLIENT_CODE=467; TYPE=L; TRANS_ID=1; CLASSCODE=EQBR; SECCODE=RU0008943394; ACTION=NEW_ORDER; OPERATION=S; PRICE=43,21; QUANTITY=3;");

     AddTextColumn(Order, "Заявка", 1.2, colorDefault, IIf(StrToNum(Order) > 100, colorGreen, colorRed), 90);
}

В функцию AS_STRING_ORDER тупо вставляется строка в таком виде как она должна пойти в tri. Я то просто скопировал из хелпера Квика, а ты замени то, что надо и попробуй.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Пн Янв 09, 2012 9:38 am Ответить с цитатой Вернуться к началу

000 писал(а):
Нет. Там не та же проблема. Там Квик типа молча хавает заявку, но на сервер не отправляет, а у тебя он конкретно ругается на неправильные данные.
Можно вот еще что попробовать.
Вот код
Код:

Filter = 1;

connection = 0;

QC = QUIK_CONNECT("C:\\QUIK");

if (QC == 1)
{
   connection = 1;
   text = "Есть соединение с сервером";
   Color = colorGreen;
   connection = 1;
}
else if (QC == -1)
{
   text = "нет соединения с квиком";
   Color = colorRed;   
}
else if (QC == -2)
{
   text = "нет соединения с сервером";
   Color = colorRed;
}
else
{
   text = "фигня какая то";
   Color = colorRed;
}

AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);

order = "-100";
if(connection == 1)
{

   Order = AS_STRING_ORDER("ACCOUNT=NL0080000043; CLIENT_CODE=467; TYPE=L; TRANS_ID=1; CLASSCODE=EQBR; SECCODE=RU0008943394; ACTION=NEW_ORDER; OPERATION=S; PRICE=43,21; QUANTITY=3;");

     AddTextColumn(Order, "Заявка", 1.2, colorDefault, IIf(StrToNum(Order) > 100, colorGreen, colorRed), 90);
}

В функцию AS_STRING_ORDER тупо вставляется строка в таком виде как она должна пойти в tri. Я то просто скопировал из хелпера Квика, а ты замени то, что надо и попробуй.


Проверил!
Идут заявки!

Filter = 1;

connection = 0;

QC = AS_QUIK_CONNECT("C:\\QUIK-TEST");

if (QC == 1)
{
connection = 1;
text = "Есть соединение с сервером";
Color = colorGreen;
connection = 1;
}
else if (QC == -1)
{
text = "нет соединения с квиком";
Color = colorRed;
}
else if (QC == -2)
{
text = "нет соединения с сервером";
Color = colorRed;
}
else
{
text = "фигня какая то";
Color = colorRed;
}

AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);

order = "-100";
if(connection == 1)
{

Order = AS_STRING_ORDER("ACCOUNT=SPBFUT00RF7; CLIENT_CODE=11369/02; TYPE=L; TRANS_ID=1; CLASSCODE=RTSST; SECCODE=SBER; ACTION=NEW_ORDER; OPERATION=S; PRICE=83; QUANTITY=1;");

AddTextColumn(Order, "Заявка", 1.2, colorDefault, IIf(StrToNum(Order) > 100, colorGreen, colorRed), 90);
}

Что это означает?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Янв 09, 2012 10:26 am Ответить с цитатой Вернуться к началу

Это может обозначать много чего.
Но в нашем случае самое главное, что на стандарт тоже можно отправлять заявки через API. В крайнем случае можно для этого пользоваться функцией AS_STRING_ORDER(), что ни чуть не хуже, просто чуть менее удобно.
Ну давай все таки попробуем отправить заявку функцией AS_QUIK_SEND_SYNC_NEWORDER
Попробуй вот такой код
Код:

Filter = 1;

ACCOUNT = "SPBFUT00RF7";
CLIENT_CODE = "11369/02";
CLASSCODE = "RTSST";
SECCODE = "SBER";

connection = 0;

QC = QUIK_CONNECT("C:\\QUIK");

if (QC == 1)
{
   connection = 1;
   text = "Есть соединение с сервером";
   Color = colorGreen;
   connection = 1;
}
else if (QC == -1)
{
   text = "нет соединения с квиком";
   Color = colorRed;   
}
else if (QC == -2)
{
   text = "нет соединения с сервером";
   Color = colorRed;
}
else
{
   text = "фигня какая то";
   Color = colorRed;
}

AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);

order = "-100";
if(connection == 1)
{
   Order = AS_QUIK_SEND_SYNC_NEWORDER("1", ACCOUNT, CLIENT_CODE, "L", CLASSCODE, SECCODE, "S", 83, 1);
     AddTextColumn(Order, "Заявка", 1.2, colorDefault, IIf(StrToNum(Order) > 100, colorGreen, colorRed), 90);
}

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Пн Янв 09, 2012 10:48 am Ответить с цитатой Вернуться к началу

000 писал(а):
Это может обозначать много чего.
Но в нашем случае самое главное, что на стандарт тоже можно отправлять заявки через API. В крайнем случае можно для этого пользоваться функцией AS_STRING_ORDER(), что ни чуть не хуже, просто чуть менее удобно.
Ну давай все таки попробуем отправить заявку функцией AS_QUIK_SEND_SYNC_NEWORDER
Попробуй вот такой код
Код:

Filter = 1;

ACCOUNT = "SPBFUT00RF7";
CLIENT_CODE = "11369/02";
CLASSCODE = "RTSST";
SECCODE = "SBER";

connection = 0;

QC = QUIK_CONNECT("C:\\QUIK");

if (QC == 1)
{
   connection = 1;
   text = "Есть соединение с сервером";
   Color = colorGreen;
   connection = 1;
}
else if (QC == -1)
{
   text = "нет соединения с квиком";
   Color = colorRed;   
}
else if (QC == -2)
{
   text = "нет соединения с сервером";
   Color = colorRed;
}
else
{
   text = "фигня какая то";
   Color = colorRed;
}

AddTextColumn(text, "Соединение", 1.2, colorDefault, color, 170);

order = "-100";
if(connection == 1)
{
   Order = AS_QUIK_SEND_SYNC_NEWORDER("1", ACCOUNT, CLIENT_CODE, "L", CLASSCODE, SECCODE, "S", 83, 1);
     AddTextColumn(Order, "Заявка", 1.2, colorDefault, IIf(StrToNum(Order) > 100, colorGreen, colorRed), 90);
}


Все понятно! Как я и говорил отправляются заявки с целым числом например 84, а если поставить 83,9 то нет. Выдается ошибка 5. Как это можно решить?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Янв 09, 2012 11:25 am Ответить с цитатой Вернуться к началу

Я думаю надо написать вместо 83,9 -> 83.9

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Пн Янв 09, 2012 12:00 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Я думаю надо написать вместо 83,9 -> 83.9

Да нет, пишется то с точкой
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Янв 09, 2012 12:18 pm Ответить с цитатой Вернуться к началу

А если в вариант с AS_STRING_ORDER написать 83.9 ???
И даже не 83.9 а 83.90 ???

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Пн Янв 09, 2012 12:38 pm Ответить с цитатой Вернуться к началу

000 писал(а):
А если в вариант с AS_STRING_ORDER написать 83.9 ???
И даже не 83.9 а 83.90 ???


Да! В этом варианте проходит!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Янв 09, 2012 1:15 pm Ответить с цитатой Вернуться к началу

В каком? 83.9 или 83.90 ??

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Дмитрий



Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов

СообщениеДобавлено: Пн Янв 09, 2012 1:19 pm Ответить с цитатой Вернуться к началу

000 писал(а):
В каком? 83.9 или 83.90 ??

И в том и в том, и 83.75 тоже проходит. Имеется в виду с функцией AS_STRING_ORDER все проходит
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen