ПРИЕМЫ ПРОГРАММИРОВАНИЯ НА QPILE для QUIK (МЕТКИ)

23 февраля, 2010

В алгоритмическом  языке  QPILE  программирования для QUIK  согласно руководству пользователя имеется возможность отображать на графиках метки, вид которых задается в формате BMP.

 В качестве примера приведу график с изображением уровней сопротивления и поддержки

Вычисляемых программой на языке QPILE по значениям свечей изображенных на графике.

При реализации отображения меток встретилась следующая проблема. Как выяснилось у разработчиков нет возможности программно управлять флагом   «Прозрачный фон». По умолчанию, данный флаг должен быть сброшен, что не создавало бы проблем. Так это и происходит при запуске программы.

Однако, при дальнейшей работе программы, флаг  «Прозрачный фон» становиться активным.  С этого момента, выводимые на график метки становятся не видимыми.

Я решил эту проблему следующим образом:

В начале программы на график выводится максимальное количество меток на уровень «ноль». Так как задано нулевое значение цены, то метки остаются вне экрана.

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

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

ПРИЕМЫ ПРОГРАММИРОВАНИЯ НА QPILE для QUIK ( ЦИКЛ )

23 февраля, 2010

Автор: Николай Камынин

В алгоритмическом  языке  QPILE  программирования для QUIK  согласно руководству пользователя имеются два типа операторов ЦИКЛ:

FOR переменная IN список значений
                последовательность инструкций
END FOR

выполняет «последовательность инструкций» для каждого значения «переменной», входящего в «список значений». «Список значений» определяется переменной типа «STRING» со значениями, перечисленными через  запятую.

———————————————

FOR переменная FROM значение1 TO значение2
    последовательность инструкций
END FOR

выполняет последовательность инструкций для каждого значения переменной в диапазоне от «значение1» до «значение2» с шагом 1, в качестве которых могут выступать математические выражения. Если «значение2» < «значение1», цикл не обрабатывается.

Вложенность операторов цикла не ограничена.

————————————

Для организации цикла типа WHILE  я использую следующую конструкцию:

    FOR переменная FROM  1   TO    10  (граница цикла любая)

 В тело ЦИКЛА ставим следующий условный блок:

IF   условие цикла BREAK     ELSE  переменная=1  END IF

   последовательность инструкций
END FOR

Если надо, чтобы цикл исполнялся хотя бы раз,  то условный блок ставим  в конце цикла,

иначе условный блок помещаем сразу после оператора FOR.

   ПЕРЕМЕННАЯ   в теле цикла (последовательность инструкций)   для вычислений не используется.

Если такой цикл применяется в функции и надо выйти из функции,

 то оператор BREAK заменяем на RETURN

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

FOR переменная  FROM значение1  TO   значение2

   переменная2 = значение2  + значение1   — переменная

В теле цикла для вычислений используется переменная2, которая убывает от значение2 до значение1.