О торговле на бирже


Как написать торговый робот – сразу к делу



В этой статье я подробно расскажу и покажу как написать торговый робот, о котором шла речь в предыдущей статье. Это будет первый и самый простой урок по созданию биржевых автоматических систем. Но, несмотря на это, в точности проделав все действия, описанные мной, в результате получится самый настоящий торговый робот.

Не буду лить воду, а перейду сразу к делу. Итак, первым делом нужно скачать и установить Delphi 7. Это можно сделать по ссылке – Delphi 7. После этого открываем папку с программой-оболочкой. С программой можно ознакомиться и заказать по ссылке:



Нас интересует файл TradeRobot.dpr . Открываем его и видим то, что изображено на картинке ниже.

Как написать торговый робот – сразу к делу


Окно, на котором написано "Робот" – это Form1, окно Windows проще говоря. Так оно выглядит в разработчике. На него нам нужно поместить элементы управления и контроля робота такие, как: две кнопки и три небольших окна-строки. Первая кнопка будет отвечать за соединение с QUIK, вторая за запуск и остановку нашего робота. В строках окон будет выводиться информация об объемах крайних покупки и продажи и текущий статус программы.

Чтобы поместить необходимые элементы на форму нужно кликнуть мышью на кнопке во вкладке Standard.

Как написать торговый робот – сразу к делу


После этого кликнуть в любом месте на форме. Delphi предложит переименовать кнопку и мы этим воспользуемся. Назовем ее ConnectButton.

Как написать торговый робот – сразу к делу


Далее можно растягивать кнопку как удобно и располагать ее в любом месте.

Точно так же создадим вторую кнопку и назовем ее StartButton.

Теперь создадим 3 окна-строки. Для этого в той же вкладке Standard выберем соответствующую иконку (как на картинке) и поместим ее на форму.

Как написать торговый робот – сразу к делу


Так повторяем три раза и называем их следующим образом:
- левое верхнее BuyVolumeEdit
- правое верхнее SaleVolumeEdit
- нижнее StatusEdit

Теперь нужно изменить надписи на элементах. Это делается в окне ObjectInspector, для кнопок в строке Caption, для окон-строк в строке Text.

Как написать торговый робот – сразу к делу


Должно получиться так, как на картинке ниже.

Как написать торговый робот – сразу к делу


Теперь нам нужно прописать сценарий для каждой кнопки. Для этого кликаем два раза по кнопке Connect to QUIK и откроется код, как на картинке ниже.

Как написать торговый робот – сразу к делу


Перед
begin
вставляем следующий текст:


var  EMsg: Array [0..255] of char;
     EMsgSz:DWord;
     ExtEC,rez:LongInt;
     path:string;
     dOrderNum:double;
     Massage: string;


Между
begin
и
end
вставляем следующее:


EMsgSz:=255;
    ExtEC:=0;
    rez:=-1;
    path:= 'C:\Quik-Junior-Zerich\';
    FillChar(EMsg, SizeOf(EMsg), 0);
    rez:=connect(PChar(path), ExtEC, EMsg, EMsgSz);
    Massage:= ResultToString(rez and 255);

    if Massage = 'EXECUTE' then
    begin
     StatusEdit.Text:= 'Соединен...';
     Status:= 'Соединен...';
    end
    else
    begin
     StatusEdit.Text:= 'Не удалось...';
     Status:= 'Не удалось...';
    end;


В итоге получиться должно следующее:

Как написать торговый робот – сразу к делу


Красным подчеркиванием отмечен путь к QUIK. Если он у вас другой, то измените путь в этом месте.



Теперь переходим к кнопке START. Открываем сценарий двойным щелчком и между
begin
и
end
вставляем следующее:


if StartButton.Caption = 'START' then
 begin
 Status:= 'Запущен';
 StartButton.Caption:= 'STOP';
 end
 else
 begin
 Status:= 'Остановлен';
 StartButton.Caption:= 'START';
 end;
 StatusEdit.Text:= Status;


Должно получиться так:

Как написать торговый робот – сразу к делу


Теперь пропишем глобальные переменные. Для этого найдем часть кода:

Как написать торговый робот – сразу к делу


И вставим следующий код:


DataTable: array of array of string;
BuyVolume, SaleVolume: Real;
Status: String;


Теперь в ObjectInspector выбираем Form1 и во вкладке Events находим строку onshow. Кликаем два раза и открывается код. Между
begin
и
end
вставляем следующее:


SetLength(DataTable,2000000,10);


Как написать торговый робот – сразу к делу


Теперь нам нужно найти место в коде, как на картинке ниже:

Как написать торговый робот – сразу к делу


После
var i, j: integer;
вставляем следующее:


path,transaction:string;
dOrderNum:double;


После
begin
следующее:

StatusEdit.Text:= Status;


После
If (Data.Cells[i-Cells.Top, j-Cells.Left] <> '0') and (Data.Cells[i-Cells.Top, j-Cells.Left] <> '0,00') then begin
вставляем код:


DataTable[i,j]:= Data.Cells[i-Cells.Top, j-Cells.Left];

          if DataTable[0,3] <> '' then
          begin
           BuyVolume:= StrToFloat(DataTable[0,0]);
           SaleVolume:= StrToFloat(DataTable[0,3]);

           If StartButton.Caption = 'STOP' then
           begin
            if (BuyVolume > 10) and (Status <> 'Покупка') then
            begin
              transaction:='ACTION=NEW_ORDER; TRANS_ID=1; CLASSCODE= SPBFUT; SECCODE= SiU6; ACCOUNT= SPBFUT00553; CLIENT_CODE= ; TYPE=M; OPERATION= B; QUANTITY=1; PRICE=0;';
              Status:= 'Покупка';
              dOrderNum:=0;
              send_async_transaction_test(transaction, dOrderNum);
            end;

            if (SaleVolume > 10) and (Status <> 'Продажа') then
            begin
              transaction:='ACTION=NEW_ORDER; TRANS_ID=1; CLASSCODE= SPBFUT; SECCODE= SiU6; ACCOUNT= SPBFUT00553; CLIENT_CODE= ; TYPE=M; OPERATION= S; QUANTITY=1; PRICE=0;';
              Status:= 'Продажа';
              dOrderNum:=0;
              send_async_transaction_test(transaction, dOrderNum);
            end;

           end;
          end;

          BuyVolumeEdit.Text:= DataTable[0,0];
          SaleVolumeEdit.Text:= DataTable[0,3];


Должно получиться так:

Как написать торговый робот – сразу к делу


ВНИМАНИЕ!

В строках типа (их таких две):

transaction:='ACTION=NEW_ORDER; TRANS_ID=1; CLASSCODE= SPBFUT; SECCODE= SiU6; ACCOUNT= SPBFUT00553; CLIENT_CODE= ; TYPE=M; OPERATION= B; QUANTITY=1; PRICE=0;';


в параметре
ACCOUNT=
нужно указать свой счет. Сейчас там указан мой SPBFUT00553.

Все, робот написан. Теперь остается его скомпилировать, т.е. превратить в готовое приложение EXE. Для этого нажимаем на зеленую кнопку Run (или F9), похожую на Play.

Как написать торговый робот – сразу к делу


Если все сделано верно, то в папке с оболочкой появится EXE файл. Это и есть готовый робот.

Как написать торговый робот – сразу к делу


Чтобы проверить работоспособность, сначала запустите его (TradeRobot.exe). Настройте QUIK так, как на картинках ниже.

Как написать торговый робот – сразу к делу


Как написать торговый робот – сразу к делу


Как написать торговый робот – сразу к делу


Как написать торговый робот – сразу к делу


Как написать торговый робот – сразу к делу


Вот и все. Теперь у вас есть свой торговый робот, остается только нажать Connect to QUIK и START и программа начнет работать сама по себе, осуществляя сделки.

В одной статье невозможно описать все, поэтому я специально не стал объяснять, что значит каждая строка кода, это я сделаю в следующем уроке.


Подписывайтесь на обновления и добавляйтесь в друзья (вопросы, советы и т.п.):



Инстаграм:



ПОЧТА:

m_i_zaharov@mail.ru



Теги: торговый робот, QUIK

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам
зарегистрироваться либо войти на сайт под своим именем
  • Посетители
После изменения параметра ACCOUNT= ввести свой счет;
Перед ним стоит параметр фьючерс SECCODE= SiU6;
Учитывайте сезонность фьючерсного контракта на Сишку.
Фьючес сменился, опять компилировать :)

  • 0
  • Администраторы
Цитата: SIZOV_RUSLAN
После изменения параметра ACCOUNT= ввести свой счет;
Перед ним стоит параметр фьючерс SECCODE= SiU6;
Учитывайте сезонность фьючерсного контракта на Сишку.
Фьючес сменился, опять компилировать :)


Ну да, все верно. Я думаю тот, кто будет писать робот по этому уроку - догадается ;)

  • 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.