Qpile

Сайт продукта: https://forum.quik.ru/forum9/
QPILE – встроенный алгоритмический язык программирования наиболее популярной в России информационно-торговой системы QUIK
  1. Qpile, вопрос, вывод тиков

    Здравствуйте.
    В интернете на разных ресурсах есть в открытом доступе скрипты, которые выводят данные индикатора.  Интервал от 1 мин. до месяца.
    Но никто не делает вывод данных индикатора на ТИКАХ.
    С чем это связано? Скрипт будет постоянно зависать?
    _____________________________________________________________________________________________________________________

    Ниже выкладываю рабочий скрипт по выводу свечей. 
    Как его можно исправить чтобы выводились данные индикатора по  ТИКАМ.???
    ______________________________

    PORTFOLIO_EX RIH9 1 volume;
    DESCRIPTION RIH9;
    CLIENTS_LIST ALL_CLIENTS;
    FIRMS_LIST ALL_FIRMS;

    PROGRAM


    ' Настраиваемые параметры
    ClassCodeList=«SPBFUT» ' код класса инструмента
    Instrument=«RIH9» ' название инструмента
    Interval=1' интервал (таймфрейм) на графике
    DayToFind=15 ' сколько дней назад искать свечи (можно уменьшить, чтобы ускорить работу программы)
    CandleToFind=50' сколько свечей надо найти
    OutFile = «c:\quotes.csv» ' файл, куда записывать данные в формате CSV
    DELETE_ALL_ITEMS()
    CandleCount=0
    CurYear=get_value(GET_DATETIME(), «YEAR»)
    CurMonth=get_value(GET_DATETIME(), «MONTH»)
    CurDay=get_value(GET_DATETIME(), «DAY»)
    CurHour = GET_VALUE(GET_DATETIME(), «Hour»)
    CurMin = GET_VALUE(GET_DATETIME(), «Min»)
    CurMin = Interval*Floor(CurMin/Interval) ' округляем минуты до «интервальных»
    ID=«ID2» 'идентификатор графика


    читать дальше на смартлабе
  2. Всем привет, кто торгует ботами на QPILE проясните что случилось. Сегодня где то с 18:00 по МСК все скрипты одновременно перестали обрабатывать информацию с ИТС QUIK, ручные сделки проходят нормально.

    Всем привет, кто торгует ботами на QPILE проясните что случилось. Сегодня где то с 18:00 по МСК все скрипты одновременно перестали обрабатывать информацию с ИТС QUIK, ручные сделки проходят нормально.
    читать дальше на смартлабе
  3. Урок 2. Переменные. Торговый робот на QPILE для QUIK.

    Выкладываю второй видеоурок по QPILE для QUIK. Кто не в курсе — смотрим тут превью.
    Поставьте, пожалуйста, лайк за труды

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

Чтобы купить акции, выберите надежного брокера: