Главная Quikprofit twiiter Quikprofit Rss

«Что он там делает?» Следим за работой робота.

Декабрь 10, 2009 | Нет комментариев

«Что он там делает?» Следим за работой робота.

Написали робота, либо портфель, который облегчает Вам торговлю? Отладили, отладчик Quik, говорит, что синтаксических ошибок нет, все работает. Отлично!
Но Вы не застрахованы от логических ошибок, и часто много времени уходит на то, чтобы найти ответ на вопрос «Почему робот открыл/закрыл эту позицию?» Сидеть и постоянно запускать портфель в режиме отладки, не самый лучший вариант, потому, что смоделировать ситуацию при которой торговый робот принял решение, очень сложно. Поэтому у каждого торгового робота должен быть алгоритм «журналирования» своих действий.

Журналы торгового робота, условно можно разделить на две группы:

  • Торговый журнал. В этом журнале, мы будем вести запись действий робота, т. е. примерно такие события: «Ого, индикатор показывает сигнал к открытию позиции, надо открывать! Открываюсь по цене 5 руб / 10 лотов»
  • Технический журнал. В этом журнале будет хранится информация о том как робот пришел к решению, об открытие/закрытие позиции, т. е. в этом журнале нам необходимо хранить техническую информацию. Например, такую: «12:30 — Значение переменной N = 20, значение индикатора M = 1. Открытие позиции»

К сожалению, язык программирования qpile не умеет сохранять данные куда либо, кроме как текстовых файлов, то есть вести журналы мы будем в текстовых файлах.
В языке qpile существует всего пять функций для работы с файлами:

  • CLEAR_FILE
  • WRITE
  • WRITELN
  • GET_FILE_LEN
  • READ_LINE

Для наших целей нам понадобятся лишь одна из них, это WRITELN.
WRITELN — Записывает в конец файла «target_file» строку «string_to_write» с последующим переводом строки.
Пример использования:

WRITELN (“c:\test.log”,“Hello world!!!“)

После выполнения данного фрагмента кода, на диске будет создан файл с названием “test.log” и в нем будет одна строчка «Hello world!!!».
Ну а теперь создадим свой первый технический журнал работы нашего робота.
К примеру возьмем небольшой кусок кода одного условного торгового робота:

IF fIndx != -1
Message(“Hello world”, 1)
ELSE
Message(“Goodbye world”, 1)
END IF

Смысл этого фрагмента  кода нам не Важен, теперь добавим ведение журнала:

IF fIndx != -1
Message(“Hello world”, 1)
WRITELN(“C:\logs\teh.log”, “Hello world!!!”)
ELSE
resprice = longprice
WRITELN(“C:\logs\teh.log”, “Goodbye world!!!”)
END IF

Теперь при срабатывании условия fIndx != -1 в наш технический журнал будет добавлена строка со словами  «Hello world!!!» иначе «Goodbye world!!!»
Отлично это будет работать, но данный способ ведение журналов не самый лучший. Для ведения журнала лучше создать отдельную функцию и использовать ее.
Функция ведения журнала:

FUNC fDebugLog(valuetosave)
localTradeDate = GET_INFO_PARAM(«TRADEDATE»)
localTradeTime = GET_INFO_PARAM(«LASTRECORDTIME»)
WRITELN(«c:\logs\» & localTradeDate & «.log», «[" &         localTradeTime & "]    » & valuetosave)
END FUNC

Переписываем код робота на следующий:

IF fIndx != -1
Message(“Hello world”, 1)
fDebugLog(“Hello world!!!”)
ELSE
resprice = longprice
fDebugLog(“Goodbye world!!!”)
END IF

В итоге мы получаем отлично читаемые журналы, которые будут сохранятся в папке “c:\logs\10.12.2009.log” в которой будут красиво записано:

[12:30:00]    Hello world!!!

Для удобства советую создать подобную функцию и назвать ее, к примеру fLog, которая будет вести отдельный файл, и использовать ее тогда когда необходимо записать событие в торговый журнал.
Чем чаще Вы будет журналировать действия торгового робота, тем легче Вам будет понять правильно ли работает Ваш торговый робот.

Готовый файл в архиве можно СКАЧАТЬ

P.S. Очень важный момент. Если Вы используете операционную систему Microsoft Vista, Microsoft Seven, Microsoft Windows Server 208, не создавайте журналы в корне диске, возможны проблемы с UAC.

Понравилось? Следите за обновлениями по RSS! Также можете следить за обновлениями в Twitter.
* * * * * 2 проголосовавших

Комментарии

Оставить комментарий





Поля помеченные (*) обязательны к заполнению

Страница 1 из 11
  • Меню

  • Облако тегов

  • Рубрики

  • Для пользователя