Чайник чайнику о программировании в Квике на языке 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
Все — теперь должно работать, Вася заговорит с нами и нальет.
Пиршествуйте, ну или пируйте.