Skip to content

Commit 25577b6

Browse files
authored
fixed the markdown
The markdown looks fine now.
1 parent fe6f48b commit 25577b6

1 file changed

Lines changed: 26 additions & 17 deletions

File tree

README.md

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ JNA-based Java-wrapper for Trans2Quik.dll version 1.2.0.3 (http://arqatech.com/u
33
("QUIK", Trading Platform by ARQA)
44

55
<h3>Как использовать</h3>
6+
67
1) Инициализируйте экземпляр обёртки библиотеки, используя класс <i>Trans2QuikLibraryLoader</i>:
7-
<code>
8-
...
9-
final Trans2QuikLibrary quikAdapter = Trans2QuikLibraryLoader.LIBRARY;
10-
...
11-
</code>
12-
Необязательно заводить отдельную переменную -- для вызова методов можно обращаться напрямую к <i>Trans2QuikLibraryLoader.LIBRARY</i>.
8+
```
9+
// ...
10+
Trans2QuikLibrary quikAdapter = Trans2QuikLibraryLoader.LIBRARY;
11+
// ...
12+
```
13+
Необязательно заводить отдельную ссылку -- для вызова методов можно обращаться напрямую к <i>Trans2QuikLibraryLoader.LIBRARY</i>.
1314

14-
2) Большинство методов библиотеки Trans2Quik.dll возвращают статус выполнения, а при возникновении ошибки записывают информацию о ней в специальные объекты (обычно, ссылка на код ошибки и буффер под описание ошибки), которые передаются как аргументы метода. Выделим под них место :
15+
2) Большинство методов библиотеки Trans2Quik.dll возвращают статус выполнения, а при возникновении ошибки записывают информацию о ней в специальные объекты (обычно это ссылка на код ошибки и буффер под описание ошибки), которые передаются как аргументы метода. Выделим под них место:
1516
```
1617
NativeLongByReference errorCode = new NativeLongByReference();
1718
byte[] buffer = new byte[255];
@@ -22,16 +23,17 @@ String pathToQuik = "C:\\Programs\\Quik";
2223
NativeLong returnCode = quikAdapter.TRANS2QUIK_CONNECT(pathToQuik, errorCode, buffer, buffer.length);
2324
```
2425
4) Чтобы отправить транзакцию в терминал, необходимо:
25-
<br/>
26-
-- Сформировать строковое представление транзакции (примеры таких представлений можно найти в файле "6 Работа с др приложениями.pdf" из инструкции к API терминала):
27-
Чтобы не усложнять, возьмём уже сформированную строку.
28-
<br/>
29-
-- Вызвать метод библиотеки <i>TRANS2QUIK_SEND_ASYNC_TRANSACTION( ... )</i> и передать ему строковое представление транзации, объекты под код ошибки и сообщение для ошибки. Внимание!: текст транзакции ниже взят из руководства к библиотеке trans2quik.dll, и транзакция, основанная на нём, на сервер отправлена не будет. Для грамотного составления текстов транзакций рекомендую ознакомиться с форматом транзакций в файле "6 Работа с др приложениями.pdf", пункт 6.11.3.
26+
27+
1) Сформировать строковое представление транзакции (примеры таких представлений можно найти в файле "6 Работа с др приложениями.pdf" из инструкции к API терминала). Чтобы не усложнять, возьмём уже сформированную строку.
28+
2) Вызвать метод библиотеки <i>TRANS2QUIK_SEND_ASYNC_TRANSACTION( ... )</i> и передать ему строковое представление транзации, объекты под код ошибки и сообщение для ошибки.
29+
30+
**Внимание!** Строковое представление транзакции взято из руководства к библиотеке trans2quik.dll, и транзакция, основанная на нём, на сервер отправлена не будет, т.к. в ней имеются недействительные значения параметров. Для грамотного составления строк транзакций рекомендую ознакомиться с форматом транзакций в файле "6 Работа с др приложениями.pdf", пункт 6.11.3.
3031
```
3132
String transaction = "ACCOUNT=NL0080000043; CLIENT_CODE=467; TYPE=L; TRANS_ID=1; CLASSCODE=TQBR; SECCODE=RU0008943394; ACTION=NEW_ORDER; OPERATION=S; PRICE=43,21; QUANTITY=3;"
3233
Long result = quikAdapter.TRANS2QUIK_SEND_ASYNC_TRANSACTION(transaction, errorCode, buffer, buffer.length);
3334
```
3435
Расшифровка результата <i>result</i> работы метода следующая (алиасы говорят сами за себя):
36+
3537
```
3638
0 = TRANS2QUIK_SUCCESS
3739
1 = TRANS2QUIK_FAILED
@@ -53,13 +55,15 @@ Long result = quikAdapter.TRANS2QUIK_SEND_ASYNC_TRANSACTION(transaction, errorCo
5355
Подобный подход используется и для вызова других методов.
5456

5557
<h3>Касаемо функций обратного вызова (callbacks)</h3>
58+
5659
Часто терминал после обработки какого-то события может посылать нам информацию. Это может быть, например, обрыв соединения с интернетом или ответ на посланную нами асинхронную транзакцию.
5760
Получение такой информации реализовано через функции обратного вызова: терминал вызывает определённый метод библиотеки с определёнными аргументами, представляющими собой информацию, которую хочет передать терминал.
5861
Обрабатывать эту информацию можно по-разному. Для обработки функций обратного вызова необходимо переопределить их поведение с своём приложении.
59-
Например, мы хотим реагировать на обрыв соединения с Интернетом, логгируя это событие. Для этого в Trans2Quik есть callback под названием TRANS2QUIK_CONNECTION_STATUS_CALLBACK.
60-
В обёртке он представлен интерфейсом ConnectionStatusCallback, наследником общего интерфейса коллбэков StdCallCallback.
61-
Каждый коллбэк имеет у себя метод void callback( ... ) со своим набором аргументов.
62+
Например, мы хотим реагировать на обрыв соединения с Интернетом, логгируя это событие. Для этого в Trans2Quik есть callback под названием _TRANS2QUIK_CONNECTION_STATUS_CALLBACK_.
63+
В обёртке он представлен интерфейсом ConnectionStatusCallback, наследником общего интерфейса коллбэков _StdCallCallback_.
64+
Каждый коллбэк имеет у себя метод _void callback(...)_ со своим набором аргументов.
6265
В своём коде создаём объект интерфейса ConnectionStatusCallback и переопределяем у него метод callback:
66+
6367
```
6468
Trans2QuikLibrary.ConnectionStatusCallback connectionStatusCallback = new Trans2QuikLibrary.ConnectionStatusCallback() {
6569
@Override
@@ -75,6 +79,7 @@ Trans2QuikLibrary.ConnectionStatusCallback connectionStatusCallback = new Trans2
7579
```
7680

7781
Другой пример: реагирование на событие изменения статуса заявки
82+
7883
```
7984
Trans2QuikLibrary.OrderStatusCallback orderStatusCallback = new Trans2QuikLibrary.OrderStatusCallback() {
8085
@Override
@@ -95,16 +100,20 @@ Trans2QuikLibrary.OrderStatusCallback orderStatusCallback = new Trans2QuikLibrar
95100
}
96101
};
97102
```
103+
98104
Разумеется, логгирование -- не единственная возможная ваша реакция на событие.
99-
Например, информацию OrderStatusCallback можно использовать для контролирования работы бота.
105+
Например, информацию _OrderStatusCallback_ можно использовать для контролирования работы бота.
106+
107+
Экземпляры обработчиков коллбэков нужно передать библиотеке Trans2Quik.dll. Для каждого коллбэка в библиотеке существует свой метод для этого. Например, для установки коллбэка на статус соединения (_ConnectionStatusCallback_) используется метод <i>TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK</i>:
100108

101-
Экземпляры обработчиков коллбэков нужно передать библиотеке Trans2Quik.dll. Для каждого коллбэка в библиотеке существует свой метод для этого. Например, для установки коллбэка на статус соединения (ConnectionStatusCallback) используется метод <i>TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK</i>:
102109
```
103110
retcode = quikAdapter.TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK(connectionStatusCallback, errorCode, buffer, buffer.length;
104111
```
112+
105113
Вообще говоря, реализовывать и устанавливать коллбэки -- дело сугубо личное, определяемое исходя из списка событий, которые вам интересны.
106114

107115
Подводя итог: результаты некоторых событий, происходящих в терминале, -- обработки транзакций, изменения статуса заявок и многое другое (см. "6 Работа с др приложениями.pdf") -- получаются посредством коллбэков.
108116

109117
<h3>Как получать информацию из Quik в Java?</h3>
118+
110119
Лично я использую способ, описанный здесь: https://github.com/boscogh/quik_pipe

0 commit comments

Comments
 (0)