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



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

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

Пробую наладить двухстороннюю связь между Ami и Quik:
1. Получать данные по из таблиц Quik по открытым позициям, ценам лимитных и стоп-заявок через плагин ODBCa.dll;
2. Отправлять тразакции через Trans2QUIK.dll.

Если по п.1 вопрос решен положительно, то по п.2 в сети ничего не нашел.

На выходных состряпал плагин для отправки транзакций из Ami в Quik.
Старался ничего не выдумывать, просто передавать параметры из Ami в функции библиотеки Trans2QUIK.dll и возвращать коды ошибок чтобы не особо заморачиваться с отладкой кода.

Вроде работает.

Хотелось бы услышать от Вас о выявленных багах, особенностях использования плагина, и других подводных камнях, выявленных при тестировании.

Новая версия плагина 1.1.1:


Последний раз редактировалось: MOAX (Пн Ноя 28, 2011 4:33 pm), всего редактировалось 3 раз(а)
Посмотреть профиль Отправить личное сообщение
spitfire



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

СообщениеДобавлено: Пн Май 23, 2011 8:36 am Ответить с цитатой Вернуться к началу

Очень интересно Smile Спасибо за плагин, буду тестить как закончу с дописыванием системы Exclamation
Посмотреть профиль Отправить личное сообщение ICQ Number
ZDN



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

СообщениеДобавлено: Вт Май 31, 2011 10:08 pm Ответить с цитатой Вернуться к началу

Просто сказка! Спасибо! Будем тестировать.
Посмотреть профиль Отправить личное сообщение
vito333



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

СообщениеДобавлено: Вт Сен 20, 2011 10:50 am Ответить с цитатой Вернуться к началу

zadun писал(а):
Просто сказка! Спасибо! Будем тестировать.


ну и? протестировали?
Посмотреть профиль Отправить личное сообщение
spitfire



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

СообщениеДобавлено: Вт Сен 20, 2011 7:24 pm Ответить с цитатой Вернуться к началу

Неа Smile Я пока полностью удовлетворен работой своего робота. Если понадобится быстрее/функциональней то буду смотреть в сторону Stock#
Посмотреть профиль Отправить личное сообщение ICQ Number
MOAX



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

СообщениеДобавлено: Вс Ноя 27, 2011 9:01 pm Ответить с цитатой Вернуться к началу

Так получилось, что периодически приходят письма по поводу работы с плагином и ODBC, а я эту тему забросил.

Исправляюсь.

Выложил новую версию плагина 1.1.1.



В новую версию плагина добавлены функции для работы с ODBC.

Спрашивается - для чего?

Внутренне представление чисел в AmiBroker - float, т.е. число с плавающей точкой одинарной точности.

Номера ордеров в Quik (возвращаемые через Trans2Quik API или через экспорт в базу данных по ODBC - double, т.е. число с плавающей точкой двойной точности.

При преобразовании из double к float теряются три значащие цифры номера ордера.

Получается что используя плагины ODBCa и предыдущую версию AmiTrans2Quik нормальный учет ордеров невозможен.


Последний раз редактировалось: MOAX (Пн Ноя 28, 2011 4:34 pm), всего редактировалось 2 раз(а)
Посмотреть профиль Отправить личное сообщение
MOAX



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

СообщениеДобавлено: Вс Ноя 27, 2011 9:08 pm Ответить с цитатой Вернуться к началу

Для построения робота с обратной связью по ODBC необходимо из Quik экспортировать таблицы сделок, заявок, стоп-заявок и позиций по клиентским счетам в базу данных примерно в следующем виде:


Последний раз редактировалось: MOAX (Вс Ноя 27, 2011 10:04 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
MOAX



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

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

Пример работоспособного робота, использующего AmiTrans2Quik и обратную связь по ODBC во вложении:
Посмотреть профиль Отправить личное сообщение
MOAX



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

СообщениеДобавлено: Вс Ноя 27, 2011 10:01 pm Ответить с цитатой Вернуться к началу

Соответствие экспортируемых полей между таблицами Quik и полями в файле odbc.mdb:

Из Таблицы позиций по клиентским счетам в таблицу Futures экспортируем столбцы:
Фирма - sFirm;
Тип - sType;
Торговый счет - sAccount;
Код инструмента - sTicker;
Тек. чист. поз. - iTotalNet;
Активная покупка - iActiveLong;
Активная продажа - iActiveShort;
Вариационная маржа - dVarMargin;
Стоимость позиций - dPosValue.

Из таблицы Сделок в таблицу Trades экспортируем:
Код бумаги - sTicker;
Время - sTime;
Операция - sOperation;
Цена - dPrice;
Количество - iQuantity;
Номер - dNumber;
Заявка - dOrder.

Из таблицы заявок в таблицу Orders экспортируем:
Код бумаги - sTicker;
Код класса - sClass;
Выставлена (время) - sTime;
Операция - sOperation;
Цена - dPrice;
Количество - iQuantity;
Остаток - iBalance;
Состояние - sStatus;
Номер - dNumber;
ID транзакции - iTransID.

Из таблицы стоп-заявок в таблицу StopOrders экспортируем:
Код бумаги - sTicker;
Дата - sDate;
Время - sTime;
Тип стоп-заявки - sType;
Операция - sOperation;
Стоп-лимит цена - dCondPrice;
Стоп-цена - dCondPrice2;
Цена - dPrice;
Количество - iQuantity;
Активное количество - iBalance;
Состояние - sStatus;
Номер - dNumber;
ID транзакции - iTransID;
Номер заявки - dOrderNumber;
Сервер - sServer.
Посмотреть профиль Отправить личное сообщение
zxWizard



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

СообщениеДобавлено: Пн Ноя 28, 2011 1:34 am Ответить с цитатой Вернуться к началу

MOAX Спасибо большое!

Но в архиве AmiTrans2Quik 1.1.1 лежит QUIK2AMIBROKER_DataPlugin.dll
квиковский штатный плагин!
Посмотреть профиль Отправить личное сообщение
MOAX



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

СообщениеДобавлено: Пн Ноя 28, 2011 4:36 pm Ответить с цитатой Вернуться к началу

zxWizard писал(а):
MOAX Спасибо большое!

Но в архиве AmiTrans2Quik 1.1.1 лежит QUIK2AMIBROKER_DataPlugin.dll
квиковский штатный плагин!


Не досмотрел, залил по новой, пробуйте.
Посмотреть профиль Отправить личное сообщение
MOAX



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

СообщениеДобавлено: Вт Ноя 29, 2011 6:20 pm Ответить с цитатой Вернуться к началу

Народ, что-то получается или непонятки возникают?
Посмотреть профиль Отправить личное сообщение
zxWizard



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

СообщениеДобавлено: Ср Ноя 30, 2011 12:32 am Ответить с цитатой Вернуться к началу

MOAX писал(а):
Народ, что-то получается или непонятки возникают?


Все получилось! плагин просто чудо все необходимые функции включает в себя! Работает на ура! MOAX огромный респект!

От себя хочу добавить к приложенной инструкции к плагину для тех кто в будущем его будет использовать: При настройке экспорта таблиц из квика через ODBC ставьте галку «Формальные Имена» иначе статус заявки выводится русскими буквами и есть проблемы со считыванием в Ами.

MOAX есть вопрос : я сейчас задумал сделать в Ами расчет средней цены позиции (для моей системы это важно), у тебя не было подобных задач? может есть подобный код с учетом функций твоего плагина?

Я так понял это можно сделать как-то не сложно с помощью SQL запроса чтобы на выходе получить массив данных(из таблицы Trades), но в SQL не селен сейчас пытаюсь разобраться или это все же лучше сделать через цикл с построчным считыванием…?
Посмотреть профиль Отправить личное сообщение
MOAX



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

СообщениеДобавлено: Ср Ноя 30, 2011 3:01 pm Ответить с цитатой Вернуться к началу

zxWizard писал(а):


1) я сейчас задумал сделать в Ами расчет средней цены позиции (для моей системы это важно), у тебя не было подобных задач? может есть подобный код с учетом функций твоего плагина?

2) Я так понял это можно сделать как-то не сложно с помощью SQL запроса чтобы на выходе получить массив данных(из таблицы Trades), но в SQL не селен сейчас пытаюсь разобраться или это все же лучше сделать через цикл с построчным считыванием…?


1) Сделал сделку - запомни цену открытия используя номер заявки:
Код:

sQuery = "SELECT dPrice FROM Trades WHERE dOrder = " + sOrder + ";";

и т.д.

2) Плагин массив не возвращает, только число или строку за один запрос.

Плагин ODBC возвращает массив только когда ключем для выборки является поле DATE/TIME, т.е для котировок.

Я думаю, что другие типы массивов в AFL не поддерживаются и как с ними работать не понятно (Может стоит у Олега уточнить)
Посмотреть профиль Отправить личное сообщение
zxWizard



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

СообщениеДобавлено: Ср Ноя 30, 2011 3:55 pm Ответить с цитатой Вернуться к началу

Не буду усложнять пойду этим путем:

Код:

1) Сделал сделку - запомни цену открытия используя номер заявки:

sQuery = "SELECT dPrice FROM Trades WHERE dOrder = " + sOrder + ";";


Просто у меня на данный момент робот используется только на закрытие сделки, а открываюсь ручками с докупками по тренду от этого и задача такая.

MOAX Спасибо за поддержку!
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen