Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Уроки программирования qplie (платный раздел) arrow Язык qpile для Quik. Урок 5. Функции, создание внешней библиотеки, работа с датой и временем
01.03.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Язык qpile для Quik. Урок 5. Функции, создание внешней библиотеки, работа с датой и временем Печать E-mail
Автор megabax   
09.04.2010 г.
Структура программы на примере простейшей программы

Язык qpile для Quik. Урок 5. Функции, создание внешней библиотеки, работа с датой и временем

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Предположим, у нас есть идея торговой стратегии, но,  запустить ее на реальном счете, хотелось бы протестировать, на сколько прибыльная будет данная МТС-ка. Можно написать робота и обкатать его на демо счете. Но это, согласитесь, не выход. Особенно, если мы используем большие интервалы, например, дни. Просто устанем ждать, когда наберется статистика. Но, Quik, к сожалению, не может проверить стратегию на истории котировок. Как же быть? Написать робота, который создаст список сигналов, а уже по ним вручную (или автоматически, используя другие системы программирования), подсчитать параметры системы: прибыльность, просадку и так далее.

Помните, на прошлом уроке мы писали простейшего робота? Там мы создали функцию, которая возвращала признак сигнала по заданным дате и времени. Аналогичный принцип мы используем для создания истории сигналов: в цикле переберем всю историю котировок, с каждой итерацией (шагом цикла) увеличивая дату и время на интервал свечи.

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

...

...А теперь я опишу эти функции и принцип их работы.

Начнем с IsHighYear - определение високосного года...

...

..Функция DaysInMonth возвращает количество дней в заданном месяце заданного года. С учетом того, что год может быть високосный. Работает функция просто - проверяет номер месяц для всех двенадцати месяцев года и возвращает число дней.  Если номер месяца 2, то еще происходит проверка високосного года.

StrToTimeMap - преобразует время из строки  в структуру, содержащую часы, минуты, секунды. Для чего того надо? Дело в том, что некоторые стандартные функции qpile, например, GET_INFO_PARAM("SERVERTIME"), возвращает время в виде строки формата "ЧЧ:ММ:СС". Производить какие либо операции с данным форматом даты неудобно, поэтому лучше всего "расчленить" его и работать уже непосредственно с часами, минутами и секундами....

...

...Переходим к функции TimeMapToTime, она преобразовывает время из структуры в формат ЧЧММСС. С этим форматом вы знакомы из прошлых уроков (пишем простейшего робота и отслеживаем сигналы торговой системы), когда мы читали значения индикаторов.

Эта функция устроена довольно просто, на прошлых уроках вы уже сталкивались с ней, только она была записана не как функция...

... Вы, наверное, уже заметили, что многие переменные имеют какие то странные экзотические имена, например ltmtHours. Дело в том, что в qpile нет такого понятия, как локальная переменная. Иными словами, если вы обзовете перемеренную myVar, используете ее в одной функции, а затем в другой, то та другая функция изменит значение этой переменной. А если у нас одна функция вызывается из другой, то мы рискуем попортить значение переменной и в итоге получить неверный результат Поэтому приходиться извращаться и давать всем переменным внутри функции уникальные имена. В других языках, например в паскале, переменные объявленные в разных функция никак не влияют друг на друга. А тут приходиться выкручиваться....

 

 

Последнее обновление ( 02.12.2010 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги