Qpile

Сайт продукта: https://forum.quik.ru/forum9/
QPILE – встроенный алгоритмический язык программирования наиболее популярной в России информационно-торговой системы QUIK
  1. Аватар Eugene Unstoppable
    Создать таблицу с помощью Qpile
    Здравствуйте. Возможно ли написать скрипт на Qpile, который бы создавал таблицу со значениями индикатора ATR.
    Заголовками столбцов были бы даты(30 последних торговых сессий), заголовки строк — короткое наименование ТОП-20 фьючерсов по обороту.
    В ячейках таблицы были значения ATR за n-ный день в таком-то фьючерсе.
    Таблица не должна ломаться, если меняется таймфрейм или настройки ATR.
    Готов обсудить цену и уточнить нюансы.
    Спасибо.

    Авто-репост. Читать в блоге >>>
  2. Аватар Tema ☑️
    Скрипт на Qpile
    Скрипт не работает с 7 до 10 утра, дальше работает.
    Подскажите, что подправить/заменить, что бы заработал с 7 часов?
    Я так понял нужно скорректировать этот кусочек:

    servertime=GET_INFO_PARAM («SERVERTIME»)
    hournow=SUBSTR(servertime,0,2)
    minnow=SUBSTR(servertime,3,2)
    secnow=SUBSTR(servertime,6,2)
    SecInfo = GET_SECURITY_INFO("", code)
    Lot = GET_VALUE (SecInfo, «LOT_SIZE»)


    скрипт с интернета, я в этом не разбираюсь

    Авто-репост. Читать в блоге >>>
  3. Аватар Саня
    Вопрос по qpl
    Приветствую! Может есть кто занимается qpl, думаю даже для начинающих вопрос не очень труден. 
    Вроде элементарный код, но перестал код показывать данные по свече. 
    Кто подскажет в чем проблема? Ранние торги не показывает c 7 до 10 утра, основные торги с 10.00 данные идут.
    Что нужно подправить? Если кто знает, подскажите пожалуйста. Я так понимаю что то с серверным временем, но не вижу, где именно проблема. 


    '========= НАСТРОЙКИ
    INSTRUMENT=«Sim1»
    ACCOUNT=«SPBFUT....» ' ПРОПИСЫВАЕМ АККАУНТ НА ФОРТС
    ' *********************
    '========= ПЕРЕМЕННЫЕ

    '========= ДАТА И ВРЕМЯ СЕРВЕРНОЕ
    SERVERTIME=GET_INFO_PARAM(«SERVERTIME»)
    SERVERDATE=GET_INFO_PARAM(«TRADEDATE»)
    TIMESERV=SUBSTR(SERVERTIME,0,2)&SUBSTR(SERVERTIME,3,2)&SUBSTR(SERVERTIME,6,7)
    HOUR=SUBSTR(TIMESERV,0,2)+0
    MIN=SUBSTR(TIMESERV,2,2)+0
    SEC=SUBSTR(TIMESERV,4,2)+0
    TIME=TIMESERV+0
    DATE=SUBSTR(SERVERDATE,6,4)&SUBSTR(SERVERDATE,3,2)&SUBSTR(SERVERDATE,0,2)
    TRID=TIME&DATE
    TRID=TRID+0
    '========= ПРОВЕРКА СОЕДИНЕНИЯ С СЕРВЕРОМ
    IF IS_CONNECTED()<>1
    RETURN
    END IF

    OPEN=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«OPEN»)+0
    HIGH=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«HIGH»)+0
    LOW=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«LOW»)+0
    VOLA=GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«HIGH»)+0-GET_VALUE(GET_COLLECTION_ITEM (GET_VALUE (GET_CANDLE_EX(«P55», DATE, TIME),«LINES»),0),«LOW»)



    Авто-репост. Читать в блоге >>>
  4. Аватар BALLI
    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» 'идентификатор графика


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

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

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

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

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