Постов с тегом "программирование роботов": 24

программирование роботов


Qlua: пишем скринер акций Московской биржи

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

Нам понадобятся:

1. Таблица для вывода данных (строить уже умеем).

2. Получение данных из таблицы текущих торгов через getParamEx (проходили там же).

3. Тикеры бумаг. Можно взять конкретный список бумаг и работать с ним, но приятнее и правильнее, чтобы скрипт мог автоматом выгружать все торгуемые тикеры из терминала и далее уже отслеживать их динамику. Попробуем это реализовать.

Через sec_list = getClassSecurities(«TQBR») можно получить строку с тикерами акций на Московской бирже, которые будут разделены запятыми. Чтобы пройтись по всем элементам и записать их в массив используем цикл:

for TIKER in string.gmatch(sec_list, "[^,]+") do
  tikers[#tikers + 1]=TIKER
end


Отслеживать будем параметр LASTCHANGE – процент изменения цены от цены закрытия:



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: завершаем апгрейд советника.

Сегодня дополним наш алгоритм советника следующими пунктами:

1. Пропуск «поздних» сигналов на старте.
2. Обработка советником обрыва связи.
3. Сохранение сигналов и логов в файл.


Еще один пункт, связанный со временем, который был выбран для апгрейда советника – это пропуск сигналов на старте, если запуск скрипта состоялся не в начале торговой сессии (например любой старт после 10:30). Это может быть полезным, если выбрана активная внутридневная стратегия и сигналы полученные на старте скрипта, например в середине дня, могут быть уже не актуальными (с низким потенциалом прибыли) и лучше дождаться новых. Т.е. необходимо разделить сигналы на те, которые сгенерировались на старте и остальные сигналы, которые будем далее брать в работу. Сигнал на старте может закрыться (по обратному/сигналу выхода) и если переоткроется снова, то его уже можно брать в работу как новый.

В нашем скрипте сигналы по каждому инструменту (массив signal) ранее могли принимать значение:

0 – вне позиции по инструменту



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

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

Продолжаем изучать основы qlua. Улучшаем советника, которого писали ранее и уже дополняли в разных вариантах работой со временем.

Сегодня рассмотрим:
Дополним сигналами на закрытие позиции.
Создадим дополнительную таблицу для вывода данных.
Научим скрипт делать расчет финансового результата.

Сигналы на закрытие позиции.

Логика выходов не менее важная часть любой торговой стратегии и должна тестироваться также скрупулезно как и логика сигналов на вход и разные варианты фильтров для лонга и шорта. Также может быть отдельная логика управлением позицией, например часть позы может частично докупаться если движение идет в сторону прибыли, частично резаться если в сторону убытков, могут по-разному управляться стопы: вся позиция или часть закрываться по уровням, вся или часть двигаться трейлингом в разной логике, например, какая-то часть или вся позиция закрываться по времени (перед закрытием основной сессии или через определенное количество часов после входа, если нет сильного движения и цена ни стоп, ни тейк не достигла).



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: получение данных из таблицы текущих торгов, создание таблиц в торговом терминале.

Сегодня рассмотрим:

1. Получение биржевых данных через функцию getParamEx
2. Выгрузка списка параметров функции getParamEx через DDE из торгового терминала
3. Создание пользовательских таблиц в торговом терминале


Одна из особенностей работы через квик это то, что можно получать достаточно большой объем биржевой информации по интересуемым инструментам. Большинство других платформ для алгоритмической торговли и терминалов в РФ будут выдавать только цену открытия, максимум/минимум дня, последнюю цену, цену закрытия, объемы по инструментам и максимум еще 3-5 каких-то дополнительных пунктов. В распоряжении тех, кто использует qlua огромная матрица параметров таблицы текущих торгов.


Получить их можно через функцию getParamEx:

getParamEx(код класса актива, инструмент, параметр), где:

код класса: например в случае акций это «TQBR», а в случае срочного рынка «SPBFUT».
инструмент: тикер.
параметр – один из параметров для соответствующей группы инструментом (об этом подробнее ниже).


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



( Читать дальше )

Qlua: структура скрипта для торгового терминала, обработка обрыва связи и её возобновления, работа с файлами

Сегодня начинаем уже писать полноценные скрипты для терминала, а не отдельные блоки кода на lua.

Пройдем:

  • Структуру типового скрипта qlua с примерами.
  • Обработку скриптом «обрыва связи» с сервером и возобновления работы.
  • Работу с файлами: запись, перезапись и чтение файла.
  • getScriptPath, getWorkingFolder

Структура скрипта

В торговом терминале можно запускать небольшие примеры на lua, как мы это делали ранее, но если говорить о постоянно работающем алгоритме, а не о компактной программе, которая должна выполнить только несколько коротких действий, то минимальная структура скрипта для квика будет содержать следующие функции:

Qlua: структура скрипта для торгового терминала, обработка обрыва связи и её возобновления, работа с файлами

function OnInit – инициализирует глобальные переменные и константы (например, торгуемые бумаги, размеры тейка и стопа, торговый счет и пр.), имена таблиц, необходимых файлов.

function OnStop – функция остановки скрипта, активируется при нажатии клавиши «Остановить» в панели скриптов терминала.

function main – основная функция, создает отдельный поток для выполнения скрипта. Обычно внутри main создается цикл для непрерывной работы, т.к. без него функция выполнит один раз весь код, который в ней прописан и скрипт остановится.



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Автоматизируем торговлю с помощью TradingView

    • 04 ноября 2021, 18:35
    • |
    • MoonMan
  • Еще

Часто вижу на форуме вопросы типа «Как написать простого робота, чтобы автоматизировать торговлю?». Несколько раз отвечал, а сегодня делать нечего и решил в одном посте соединить всё воедино, надеюсь пригодится начинающим писателям скриптов. Если коротко: не занимайтесь написанием роботов, всё что вам нужно для успешной торговли уже реализовано в TradingView: рисуете на графике области, линии тренда и прочие фаллосы. Далее создаёте уведомление, например на выход из области или пересечение линии тренда или на закрытие выше линии или на любое другое событие которых в TV огромное количество. TV позволяет на уведомление повесить webhook, то есть может «дёргать» внешний скрипт. Арендуете сервер с внешним IP адресом (далее IP_сервера) и пишете элементарный скрипт, который делает «продать всё по рынку» или «продать всё по цене, которую передал TV» и т. д. Таким образом вся логика у Вас будет на графике, любые сценарии программируются за 5 минут наглядно рисованием.

А теперь скрипты и примеры их использования:

Webhook скрипт на PHP для фонда (на примере Тинькова): https://telegra.ph/webhookListenerTinokphp-11-04
Для него требуется установить в папку со скриптом с помощью composer пакет github.com/jamesRUS52/tinkoff-invest, запуск скрипта на сервере из консоли командой php -S IP_сервера:80 ./webhookListenerTinok.php
Замечание: в TIAccountId можно вписать идентификатор нужного счёта если их несколько (например брокерский и ИИС), lot нужно указывать только для валютных пар.



( Читать дальше )

Может тут кто-нибудь помочь с MQL 4?

Не так давно начал изучать MQL4, все норм, но есть некоторые вопросы, на которые никак не могу найти ответы. Может кто-нибудь помочь по доброте душевной? Вопросов не много. 

Синтаксис языка MQL4

Господа, всех приветствую. Продолжаем изучение языка MQL4. В прошлом посте речь шла о базовых функциях-обработчиках событий, которые есть в каждом советнике. Сегодня поговорим о синтаксисе MQL4. Для С++ программистов новость хорошая, в плане синтаксиса MQL4 очень похож.

Синтаксис  — это такой набор правил, которые определяют как из символов алфавита языка собирать слова и предложения, которые образуют правильно структурированную и корректно работающую программу или её фрагмент. Таким образом, наблюдение за набором любого корректного кода, можно одновременно считать и изучением синтаксиса языка.

Однако, согласно справке в разделе посвящённом синтаксису языка предлагается рассмотреть: 

  • комментарии;
  • идентификаторы;
  • зарезервированные слова.
Поэтому, будем придерживаться данного плана.

Комментарии  — это пометки к определённым строкам или целым кускам исходного кода программы, в которых программист разъясняет себе, что происходит на данной строке или в данном фрагменте программы. Комментарии не являются частью исполняемого кода. Они нужны для того, чтобы в программе было проще ориентироваться, особенно если её потребовалось модифицировать спустя какое-то время после написания. Комментарии позволяют быстро вспомнить, что делает программный код.

( Читать дальше )
  • обсудить на форуме:
  • MQL4

Типы программ и вспомогательных файлов на языке MQL4

Господа, всех приветствую. Продолжаем цикл изучения языка mql4.

В прошлом посте мы познакомились со средой разработки MetaEditor, в которой и происходит процесс набора кода программ для терминала MetaTrader. Теперь неплохо было бы разобраться с тем, какого рода программы и вспомогательные файлы можно написать на языке mql4.

В этом нам поможет «Мастер MQL4». Чтобы его запустить, достаточно в MetaEditor’e в меню «Файл» выбрать команду «Создать», либо нажать на соответствующую кнопку на панели инструментов, которая находится прямо под главным меню, либо зажать комбинацию горячих клавиш Ctrl + N. Любое из перечисленных действий запустит «Мастер MQL4». Он хорош не только тем, что помогает создать заготовку будущей программы, но он ещё и размещает её в правильном каталоге для выбранного типа программы или файла.
Мастер MQL4

После этого перед нами предстанет выбор из 6 возможных вариантов:

  1. Советник (шаблон)
  2. Пользовательский индикатор
  3. Скрипт
  4. Библиотека
  5. Включаемый файл (*.mqh)
  6. Новый класс


( Читать дальше )

Вопрос к программистам QLUA

Уважаемые программисты!

Подскажите, как сделать простенькую панель управления роботом. Нужно менять несколько параметров в роботе не останавливая его. Может кто знает как это сделать?
  • обсудить на форуме:
  • Quik Lua

....все тэги
UPDONW
Новый дизайн