Блог им. DubSt

Чайник чайнику о программировании в Квике на языке Opile

Что нужно, чтобы начать работу с алгоритмическим языком Qpile в Квике.  
 
1. Описание языка: можно найти по ссылке zarchive.zerich.com/dist/8_%D0%AF%D0%B7%D1%8B%D0%BA_QPILE.pdf
 
2. Первоначальная чайная (для чайников) пошаговая процедура создания простейшей таблицы
 
(Я сам чайник — описываю, чтобы и самому лучше понять)
 
Читать нужно тем, кто не смог создать свою первую программируемую таблицу в Квике. Это первоначальная процедура создания простейшей таблицы, которая опущена в справочнике  
и соответственно справочник по языку Qpile не всегда можно понять не программисту.  
Если кто-то из опытных людей прочитает, то хотелось бы услышать как можно упростить создание описанной таблицы, и что в описании
не правильно.  
 
Итак, начинаю чайную процедуру.
 
 
Нужно сформировать тело программы
 
PORTFOLIO_EX Вася; «Заголовок» – наименование таблицы и определение основных параметров
 
DESCRIPTION Вася;        «Описание программы»
CLIENTS_LIST ALL_CLIENTS;    (код клиента, т.е. Ваш код, или как здесь неопределенный клиент)
FIRMS_LIST ALL_FIRMS;        (Код Вашего брокера или как здесь неопределенный брокер)  
 
USE_CASE_SENSITIVE_CONSTANTS; (это необязательная константа — можно обойтись без нее на первых порах, но я не смог обойтись — что у меня без нее не заработало)
 
PROGRAM (мозг программы)
 
 
 
END_PROGRAM  
 
 
 
END_PORTFOLIO_EX  «Конец заголовка программы»
 
Это обязательная форма описания программы, дальше можно творить.
Ну как творить — выбирать из придуманных кем-то шаблонов работы программы.
Приведенный код есть как бы оповещение миру, что есть  
человек по имени Вася. Это все что мы о нем знаем — только имя,  
ни внешности, ни умений Васи — только имя.Хотя кое-что мы знаем о Васе —
он работает в КВике и может для нас предоставить из Квика нужную нам информацию.
Чтобы Вася заговорил ему не надо наливать, наливать будет как раз он,  
но ему надо приготовить стаканы, чтобы было куда наливать.  
 
Для этого нам нужно придумать переменные и описать эти переменные.
Переменные — это стаканы, которые будут хранить добытую Васей информацию.
Добывать эту информацию Вася будет из таблиц и графиков Квика.
Переменные мы придумываем исходя из той информации, которую мы хотим добыть.
Допистим, мы хотим знать текущую цену акций Газпрома и объем по текущей сделке.  
Нам нужно три переменные: Ticker,
Preise1,
Volume.
Вставим их в тело программы, не просто в тело — в мозг программы.  
Присвоим нашим переменным первоначальные значения. Здесь мы не описывали тип переменных,  
пользуемся тем, что программа позволяет работать и так.  
 
PORTFOLIO_EX Вася;
DESCRIPTION Вася;         
CLIENTS_LIST ALL_CLIENTS;  
FIRMS_LIST ALL_FIRMS;
 
USE_CASE_SENSITIVE_CONSTANTS;  
 
PROGRAM (мозг программы)
 
Ticker=«GAZP»
Preise1=0
Volume=0
 
 
END_PROGRAM  
 
 
 
END_PORTFOLIO_EX   
 
Эти переменные будут заполнять столбцы нашей таблицы.  
Сейчас мы ее опишем и прикрепим к телу программы, после мозга.
Ниже мозга у нас рабочие органы.  
 
Обязательное описание столбца таблицы:
PARAMETER Preise1; (связывание столбца с одной из наших переменных)  
PARAMETER_TITLE Текущая цена акции; (заголовок стобца)
PARAMETER_DESCRIPTION Цена акции при открытии торгов; (описание действий, производимых в стобце)
PARAMETER_TYPE NUMERIC(10,2); (описание типа содержимого столбца — здесь числовой)
END (конец кода стобца)
 
В результате у нас получится следующий код.  
 
 
PORTFOLIO_EX Вася;
DESCRIPTION Вася;         
CLIENTS_LIST ALL_CLIENTS;  
FIRMS_LIST ALL_FIRMS;
 
USE_CASE_SENSITIVE_CONSTANTS;  
 
PROGRAM (мозг программы)
 
Ticker=«GAZP»
Preise1=0
Volume=0
 
 
END_PROGRAM  
 
PARAMETER Ticker;
PARAMETER_TITLE Ticker;
PARAMETER_DESCRIPTION Ticker;
PARAMETER_TYPE STRING(256);
END
 
 
PARAMETER Preise1;
PARAMETER_TITLE Текущая цена акции;
PARAMETER_DESCRIPTION Цена последней сделки на текущий момент;
PARAMETER_TYPE NUMERIC(10,2);
END
 
PARAMETER Volume;
PARAMETER_TITLE Volume;
PARAMETER_DESCRIPTION Volume;
PARAMETER_TYPE NUMERIC(10,2);
END
 
 
END_PORTFOLIO_EX  
 
Здесь описано таблица из трех столбцов,  три переменных, которые привязаны к трем стобцам таблицы.
 
И вроде бы куда наливать есть, куда выливать тоже есть, но если запустить программу в Квике, то
обнаружится, что Вася молчит.  
Ну как же — бутылки то нет, не из чего наливать. Нам нужна бутылка.  
Бутылка — это таблицы Квик. Возьмем самую обширную таблицу — это таблица текущих торгов.  
На странице 60 описания языка есть информация о Функциях для получения значений Таблицы
текущих торгов и описание полей таблицы.  
 
Вот теперь наши переменные мы должны привязать к этой таблице, к этой дойной корове,  
которая наполнит наши переменные ценным продуктом.
 
Preise1= GET_PARAM («TQBR», «GAZP», «last»)
 
Переменной Preise1 присваивается текущий параметр из таблицы текущих торгов по акции Газпром — последняя цена сделки на текущий момент
 
Volume=GET_PARAM («TQBR», «GAZP», «VALUE»)  
 
Переменной Volume присваивается объем в деньгах по сделке
 
Получается следующий код
 
PORTFOLIO_EX Вася;
DESCRIPTION Вася;         
CLIENTS_LIST ALL_CLIENTS;  
FIRMS_LIST ALL_FIRMS;
 
USE_CASE_SENSITIVE_CONSTANTS;  
 
PROGRAM (мозг программы)
 
Ticker=«GAZP»
Preise1=0
Volume=0
 
Preise1= GET_PARAM («TQBR», «GAZP», «last»)
 
Volume=GET_PARAM («TQBR», «GAZP», «VALUE»)
 
 
END_PROGRAM  
 
PARAMETER Ticker;
PARAMETER_TITLE Ticker;
PARAMETER_DESCRIPTION Ticker;
PARAMETER_TYPE STRING(256);
END
 
 
PARAMETER Preise1;
PARAMETER_TITLE Текущая цена акции;
PARAMETER_DESCRIPTION Цена последней сделки на текущий момент;
PARAMETER_TYPE NUMERIC(10,2);
END
 
PARAMETER Volume;
PARAMETER_TITLE Volume;
PARAMETER_DESCRIPTION Volume;
PARAMETER_TYPE NUMERIC(10,2);
END
 
 
END_PORTFOLIO_EX  
 
 
Запускаем программу в Квике, а Вася молчит и ничего не наливает. При чем что обидно — мозг то у Васи работает, считает, но Вася разговаривать с нами не хочет.
 
Почему? У нас есть привязка переменных к столбцам таблицы, а нам надо еще и строки таблицы вывести.  
Находим в справочнике языка Qpile функцию для вывода строки таблицы — вот она:
 
 
ADD_ITEM (DOUBLE Index, MAP table_string)  
Создать значение (Число с плавающей точкой как индекс строки, массив МАР как строка таблицы)
Я хотел вот так
add_item(0, Вася) — создать значения по первой строке таблицы Вася, но по инструкции так не положено-надо еще массив создавать.
 
 
Объявляем переменную для массива- MD=0
Создаем массив — MD=CREATE_MAP()
Привязываем этот массив к стобцам таблицы
MD=SET_VALUE(MD,«Ticker»,Ticker)
MD=SET_VALUE(MD,«Preise1»,Preise1)
MD=SET_VALUE(MD,«Volume»,Volume)

Если присмотреться, то массив создан как бы из ребра Васи, т.е.идет привязка к тем же самым переменным.
Прямо как Ева из ребра Адама.

Ладно идем дальше.
 
Выводим строку в таблицу
 
add_item(0,MD)
 
Получается следующий код
 
 
PORTFOLIO_EX Вася;
DESCRIPTION Вася;         
CLIENTS_LIST ALL_CLIENTS;  
FIRMS_LIST ALL_FIRMS;
 
USE_CASE_SENSITIVE_CONSTANTS;  
 
PROGRAM (мозг программы)
 
Ticker=«GAZP»
Preise1=0
Volume=0
 
MD=0
MD=CREATE_MAP()
 
Preise1= GET_PARAM («TQBR», «GAZP», «last»)
 
Volume=GET_PARAM («TQBR», «GAZP», «VALUE»)
 
MD=SET_VALUE(MD,«Ticker»,Ticker)
MD=SET_VALUE(MD,«Preise1»,Preise1)
MD=SET_VALUE(MD,«Volume»,Volume)
 
add_item(0,MD)  
 
END_PROGRAM  
 
PARAMETER Ticker;
PARAMETER_TITLE Ticker;
PARAMETER_DESCRIPTION Ticker;
PARAMETER_TYPE STRING(256);
END
 
 
PARAMETER Preise1;
PARAMETER_TITLE Текущая цена акции;
PARAMETER_DESCRIPTION Цена последней сделки на текущий момент;
PARAMETER_TYPE NUMERIC(10,2);
END
 
PARAMETER Volume;
PARAMETER_TITLE Volume;
PARAMETER_DESCRIPTION Volume;
PARAMETER_TYPE NUMERIC(10,2);
END
 
 
END_PORTFOLIO_EX  
 
 
Все — теперь должно работать, Вася заговорит с нами и нальет.  
Пиршествуйте, ну или пируйте.  
 
 
 
 
 
 
 

  • обсудить на форуме:
  • Qpile
★22
14 комментариев

почему Qpile а не Lua ?

на сколько знаю он новее, более продвинут, легче в изучении, если и изучать то - Lua

avatar
Igr,  в изучении примерно одинаково, хотя qpile мне кажется проще
avatar

Stoic, Отказ от поддержки встроенного языка QPILE

forum.quik.ru/forum9/topic1792/

avatar
Igr,  я это, само собой знаю) поддержки не будет, но торговать еще можно будет долго, я думаю. Для знающих Qpile перейти на Qlua вопрос времени.
avatar
Igr, А что они Lua поддерживают? От поддержки отказались, от программы то не отказались.
avatar
Stoic, как я понимаю Lua более близок к Си, и там нужно самому организовывать цикл, а тут он уже организован изначально.
avatar
Igr, То что смог для себя продвинуть в изучении
avatar

Если кто-то из опытных людей прочитает, то хотелось бы услышать как можно упростить создание описанной таблицы, и что в описании
не правильно.

без обид, но скорее всего ни один опытный программист в таком виде код читать не будет.
avatar
Андрей К, конечно без обид — да опытному этот код и не нужен.
avatar
да уж для квика это вчерашний день.
avatar
тогда уж вообще лучшеMQL 4-5 изучать, автор. Там есть встроенный тестер на тиках (не идеальный, конечно, но все же лучше экселя намного), который покажет вам, что ваша стратегия, скорее всего, УГ, и это вам сэкономит кучу денег
avatar
transmega, как я понимаю это значительно дороже.
avatar
Vadi Anslon, МетаТрейдер? БЕСПЛАТНО. И он — для всего мира, Квик же чисто ММВБ
avatar
transmega, спасибо — заинтересовали. Ну еще брокер должен с ней работать?
avatar

теги блога Vadi Anslon

....все тэги



UPDONW
Новый дизайн