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



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

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

spitfire писал(а):
Думаю только для тех кто торгует по дневкам и выше Smile Остальные идут мимо.
Дело в том, что для биржи нет такого понятия как сделка по рынку. У биржи идут только лимитные в стакан и в глубь стакана. Вот и интересно стало, может не стоит шибко заморачиваться про проскальзывание и прочие дела, если Квик нормально маркет-заявки исполняет?
Посмотреть профиль Отправить личное сообщение ICQ Number
spitfire



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

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

Я заморачиваюсь по одной простой причине. Важно чтобы реальные торги как можно лучше соответсвовали тестам. В тестах мы явно указываем цену сделки. Поэтому и тут я предпочитаю использовать лимитники. Маркет-заявки имеют смысл если ликвидность инструмента достаточна высока для системы на рабочем таймфрейме.
Посмотреть профиль Отправить личное сообщение ICQ Number
kosbar



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

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

spitfire писал(а):
Маркет-заявки имеют смысл если ликвидность инструмента достаточна высока для системы на рабочем таймфрейме.
Ну если выставлять в стакан, и ждать пока тебя проглотят - да. Но я в тестах тоже вхожу как бы по рынку и проскальзывание ставлю пожирнее.
Олег у меня тут случайно два раза было обращение к функции AS_QUIK_SEND_SYNC_NEWORDER() и на второй раз она вернула 0 вместо номера ордера, я было подумал что лимита не хватило, глянул в Квик, а там нет никаких системных сообщений, кроме того, что я приконнектился в начале торгов.
Что означает такой ноль? И может быть при отправкой API никаких системных сообщений и не должно быть?
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

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

Хм. 0 возвращается когда транзакция успешно отправлена на сервер. В таком случае из квика приходить номер заявки в другой переменной и в плагине 0 подменяется на номер заявки.
Ноль мог вернуться в двух случаях.
1. не подменился 0 на номер заявки в моем плагине (тогда это глюк плагина)
2. квик не прислал номер заявки (тогда это глюк квика)
На счет системных сообщений квика не знаю.

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



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

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

Прикол ещё в том, что я это по записи в лог вижу, которая ну никак не должна была состоятся (либо я не шарю в операторе switch). В Квике при этом чисто и нет никаких не исполненных или повисших заявок. Нет так же и сообщений о нехватке лимитов или отвергнутых ордеров по причине какой-либо ошибки.

Мне бы узнать, как брать время события и переводить его в нормальный читаемый строковый вид, а то такая вот штука - NumToStr(DateTime(), formatDateTime) - выдаёт мне время бара.
Посмотреть профиль Отправить личное сообщение ICQ Number
000
Site Admin


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

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

Вмсто DateTime() пиши Now()

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



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

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

Такая схема запуска робота в связке Ами-Квик решает проблему пропуска заявок на тиковом графике? Когда сканирование идет раз в 1 сек, а сигнал был 10 тиков назад и поэтому робот на него не отреагировал.
Посмотреть профиль Отправить личное сообщение
knell009



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

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

Question Можно ли с разных АМИ отправлять транзакции через АPI одного терминала Квик?

_________________
knell
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

А можно ли с одного квика отдавать котировки в несолько Ами?

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



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

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

000 писал(а):
А можно ли с одного квика отдавать котировки в несолько Ами?

Нельзя! Но для меня это не важно.., вопрос был в другом. Мне нужно знать можно ли торговать на одном счете из разных АМИ.

_________________
knell
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Да хрен его знает. Попробуй. Только как это реализовать если в 2 ами реалтайм котировки засунуть проблематично?

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


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

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

kosbar писал(а):
spitfire писал(а):
Маркет-заявки имеют смысл если ликвидность инструмента достаточна высока для системы на рабочем таймфрейме.
Ну если выставлять в стакан, и ждать пока тебя проглотят - да. Но я в тестах тоже вхожу как бы по рынку и проскальзывание ставлю пожирнее.
Олег у меня тут случайно два раза было обращение к функции AS_QUIK_SEND_SYNC_NEWORDER() и на второй раз она вернула 0 вместо номера ордера, я было подумал что лимита не хватило, глянул в Квик, а там нет никаких системных сообщений, кроме того, что я приконнектился в начале торгов.
Что означает такой ноль? И может быть при отправкой API никаких системных сообщений и не должно быть?

Нашел случай когда AS_QUIK_SEND_SYNC_NEWORDER() возвращает 0. Если в заявке прописать РАЗМЕР ЗАЯВКИ == 0, то аозвращает 0. Имей ввиду.

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



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

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

knell009 писал(а):
Question Можно ли с разных АМИ отправлять транзакции через АPI одного терминала Квик?

Ответ: Нет. Проверено! При постоянном соединении с одним АМИ, связь с другим не устанавливается.

_________________
knell
Посмотреть профиль Отправить личное сообщение
Osiris



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

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

000 писал(а):
А можно ли с одного квика отдавать котировки в несолько Ами?

Почему нельзя, конечно можно! Я так делал много раз Very Happy
Жаль, что нельзя передавать заявки из нескольких Ами по API. Sad
Можно одну Ами через API, а другую через TRI Smile
Посмотреть профиль Отправить личное сообщение
kosbar



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

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

000 писал(а):
Нашел случай когда AS_QUIK_SEND_SYNC_NEWORDER() возвращает 0. Если в заявке прописать РАЗМЕР ЗАЯВКИ == 0, то аозвращает 0. Имей ввиду.

А что такое размер заявки? Количество лотов?
У меня с оператором switch ссора вышла, он умудряется войти в два case, не смотря на то, что заданному условию соответствует только один из них. Вот заходя во-второй вариант он умудряется послать заявку с ответом 0.
Переделал всё на if, теперь в логах все заявки с 0 =)))
Чо к чему аще не понимаю...
Код:
SetBarsRequired(sbrAll, sbrAll);
Filter = 1;
INDX = LastValue(BarIndex());
ACC = "SPBFUT*****";
CCODE = "SPBFUT*****";
LOTS = 1;
SLIPP = 500;
ROBO = "robot";
LOGS = "logs.ini";
CLASS = "SPBFUT";
FUT = "RIH2";
QUIK = "C:\\QUIK";
//PR[0] = 0;
//NORD = "";

////ORDER////
AS_QUIK_CONNECT(QUIK);


function ORDER (LOT, OPER, PR)
{
   AS_QUIK_CONNECT(QUIK);
   NORD = AS_QUIK_SEND_SYNC_NEWORDER("555", ACC, CCODE, "L", CLASS, FUT, OPER, PR, LOT);
   return NORD;
}
   
/////////////

////SYS/////

GO_LONG = 0;
GO_SHORT = 0;

AlertIf(GO_LONG[BarCount-1], "SOUND C:\\Windows\\Media\\tada.wav", "Audio alert", 1 );
AlertIf(GO_SHORT[BarCount-1], "SOUND C:\\Windows\\Media\\Ringin.wav", "Audio alert", 2 );


////////////

BAR = AS_READ_PARAM(ROBO, FUT, "BAR");
POS = AS_READ_PARAM(ROBO, FUT, "POSITION");

if(GO_LONG[BarCount-1] AND (INDX[BarCount-1] > BAR))
{
POS = AS_READ_PARAM(ROBO, FUT, "POSITION");
   if(POS = -1)
      {
            PR = LastValue(C)+SLIPP;
            NORD = ORDER (2*LOTS, "B", PR);
            STR = "№ Order " + NORD + ", № Bar " + NumToStr(INDX,1.0) + ", Time "
            + Now()+ ", REVOLVER_LONG" + ", Price " + NumToStr(PR);
            AS_WRITE_FILE(LOGS, STR);
            AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
            AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
      }
POS = AS_READ_PARAM(ROBO, FUT, "POSITION");
   if(POS = 0)
      {
            PR = LastValue(C)+SLIPP;
            NORD = ORDER (LOTS, "B", PR);
            STR = "№ Order " + NORD + ", № Bar " + NumToStr(INDX,1.0) + ", Time "
            + Now()+ ", GO_LONG" + ", Price " + NumToStr(PR);
            AS_WRITE_FILE(LOGS, STR);
            AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
            AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
      }
}

POS = AS_READ_PARAM(ROBO, FUT, "POSITION");
BAR = AS_READ_PARAM(ROBO, FUT, "BAR");

if(GO_SHORT[BarCount-1] AND (INDX[BarCount-1] > BAR))

{
POS = AS_READ_PARAM(ROBO, FUT, "POSITION");
   if(POS = 1)
      {
            PR = LastValue(C)-SLIPP;
            NORD = ORDER (2*LOTS, "S", PR);
            STR = "№ Order " + NORD + ", № Bar " + NumToStr(INDX,1.0) + ", Time "
            + Now()+ ", REVOLVER_SHORT" + ", Price " + NumToStr(PR);
            AS_WRITE_FILE(LOGS, STR);
            AS_WRITE_PARAM(ROBO, FUT, "POSITION", -1);
            AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
      }
POS = AS_READ_PARAM(ROBO, FUT, "POSITION");   
   if(POS = 0)
      {
            PR = LastValue(C)-SLIPP;
            NORD = ORDER (LOTS, "S", PR);
            STR = "№ Order " + NORD + ", № Bar " + NumToStr(INDX,1.0) + ", Time "
            + Now()+ ", GO_SHORT" + ", Price " + NumToStr(PR);
            AS_WRITE_FILE(LOGS, STR);
            AS_WRITE_PARAM(ROBO, FUT, "POSITION", -1);
            AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
       }
}

POS = AS_READ_PARAM(ROBO, FUT, "POSITION");
BAR = AS_READ_PARAM(ROBO, FUT, "BAR");

//AddTextColumn(Name(), "Символ", 1.0, colorDefault, colorDefault, 60);
AddColumn( C[BarCount-1], "Последняя цена", 1.2, colorDefault, colorDefault, 100 );
AddColumn( AS_READ_PARAM(ROBO, FUT, "POSITION"), "Позиция", 1.0, color

Вроде всё правильно... Косяк где-то в функции ORDER, но там всё проще некуда...
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen