Архив рубрики: Статьи участников

Обмен данными между DLL (C/C++) и приложением QT Creator (C++)

Автор записи: NewDracon
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 2, среднее: 4,50 из 5)
Загрузка...

Для начала объясню, почему я выбрал для связки с QUIK'ом именно QT и зачем нужен этот "велосипед". Дело в том, что захотелось побольше графических возможностей, а если использовать Visual Studio С++ (а не C#), то готовых компонентов для "рисования" графиков практически нет. А C# или java в сравнению с QT С++ будут уступать в скорости, которая  необходима для тестирования стратегий. (Последнее спорно, но, по моему мнению, все же C++ "ближе" к процессорному языку, и код тестов QT в будущем можно будет перенести на unix)

И тут начались грабли... Если заходил со стороны прямой компиляции LUA для QT, не хотел подключаться QUIK (написанный на MVSC). Затем я попробовал создать DLL на MVSC и подключиться динамически к ней из QT, но export'ы DLL просто не виделась в QT. И тут я наткнулся на замечательную статью Обмен данными между DLL (C/C++) и приложением C# посредством Memory Mapped File (MMF). Ниже привожу мою адаптацию данной статьи на QT Ctreator. При этом использовалась среда Visual Studio 2017 С++ для написания DLL и среда QT Creator 5.3 с компилятором MinGW 4.8.

Смотреть полностью...

Таблица "Портфель" в QUIKе

Автор записи: ram555
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 1, среднее: 5,00 из 5)
Загрузка...

Представляю таблицу для портфельных инвестиций.  Цвет строки меняется если Прибыль%<>5%. Обновление каждые 5 сек. Показаны только бумаги с лимитом Т0, для недопущения дублирования. Если хотите, чтоб были бумаги только с лимитом Т2, замените в двух местах «limitKind<1» на «limitKind>1»


Для её создания необходимо:
1. Создать файл «tablePortfolio.txt» в папке «C:\QUIK\Scripts». Если папки нет, создать её.
2. Скопировать туда код скрипта
3. Сохранить, выбрав кодировку «ANSI», иначе вместо русских букв могут быть кракозябры.
4. Сменить расширение файла с ".txt" на ".lua"
5. Запустить скрипт командой Сервисы-> Lua  скрипты-> Добавить (выбрать файл tablePortfolio.lua) -> Запустить

Код скрипта

ПОСТАНОВКА И СНЯТИЕ STOP-ОРДЕРА В QLUA(LUA)

Автор записи: ram555
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 2, среднее: 5,00 из 5)
Загрузка...

Когда передо мной встала задача удаления поставленного стоп-ордера, наткнулся в интернете на скудность информации по данной тематике.

Самая распространенная ошибка начинающего программиста отправка в SendTransaction в STOP_ORDER_KEY  trans_id стоп-ордера

Робот выставляет стоп-заявку на покупку по определенной цене, затем через 2 секунды снимает её.

Также в коде имеются следующие фишки:

  • Запись удобочитаемого лог-файла.  Записи с интервалом <=1 сек. группируются в пул. Между пулами - пустая строка. После остановки скрипта в файл добавляется двойная линия.
  • Функция преобразования числа в строку с удалением точки и нулей правее нее для отправки этой строки в SendTransaction
  • Функция, возвращающая Entry или Exit в зависимости от trans_id принадлежности транзакций к входу или выходу
Код скрипта

В итоге получается текстовый  лог-файл, удобный для чтения человеком, с которого можно считать данные программой (например на  C#) и подбить статистику

Log.txt

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Робот для Срочного рынка FORTS

Автор записи: Константин
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 6, среднее: 5,00 из 5)
Загрузка...


Описание робота
Код робота

Отображение на графике индикатора из другого графика

Автор записи: Sergey
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 5, среднее: 5,00 из 5)
Загрузка...

Понадобилось мне видеть на 5-и минутном графике индикатор из другого окна. Вот написал свой индикатор, который загружает данные из любого графика, беря его данные по уникальному идентификатору в QUIK.

Чтобы этот индикатор смог найти искомый индикатор, зайдите в свойства этого индикатора, перейдите на закладку Дополнительно, и в поле Идентификатор укажите уникальное имя этого индикатора. В моем случае это "B4H_20_2" (без кавычек).

Сам файл кода нужно положить в папку QUIK, в поддиректорию "LuaIndicators". Если его нет, то создайте.  После этого при добавлении нового индикатора вы увидите его в общем списке.

Вот код, у меня он назван BBfromOtherPeriod_common.lua :Смотреть полностью...

Визуализация сделок на графике

Автор записи: Vlad
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 4, среднее: 5,00 из 5)
Загрузка...

Добрый день!

Все знают, что QUIK  хранит сделки только за текущую сессию. Эта особенность терминала меня, мягко говоря, печалит и я уже давно подумывал найти какой-то способ это исправить. Сам я не программист (но это могу всё же разобраться в несложном коде) и писать собственный скрипт было бы для меня слишком затратно по времени - надо осваивать язык с ноля. По этой причине начал гуглить готовые скрипты. И нашел этот, чему очень рад. Теперь анализ моих трейдов стал гораздо удобнее - не надо пролистывать целую кипу скриншотов и можно проводить анализ на разных таймфреймах.

Оригинальный скрипт берет данные из trades.csv, и наносит метки на графики с указанием объема сделки и цены. Данные хранятся в таком формате: <ГГГГ-ММ-ДД ЧЧ:ММ:СС>;<ТИКЕР>;<ЛОТ>;<ЦЕНА>. Т.е. дата и время хранятся в одной ячейке. Мне такой формат был не удобен, т.к. сделки, которые я совершаю, автоматически выводятся в .csv  в формате <ГГГГММДД>;<ЧЧММСС>;<ТИКЕР>;<ЛОТ>;<ЦЕНА>. Переформатировать каждый раз свои данные - долго. Проще внести изменения в код, что и было сделано, естественно не без помощи Дмитрия - он написал код под новый формат, за что ему большое спасибо. Теперь у меня два варианта скрипта, под разные форматы .csv файла, описанные выше.
Смотреть полностью...

Решил сделать себе индикатор паттерна - прошу ответить на вопросы

Автор записи: arn11555
1 звезда2 звезды3 звезды4 звезды5 звезд (Нет голосов)
Загрузка...

Вопросы:

тф= таймфрейм, вопросы задаются с учетом создания на qlua

  1. возможно ли нанести линии на график с помощью скрипта или нужно создавать индикатор?
  2. возможно ли в ячейке таблицы вывести список выпадающий с набором значений
  3. можно ли в одном скрипте обрабатывать несколько инструментов

Condor V

Автор записи: Константин
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 3, среднее: 5,00 из 5)
Загрузка...

2015122212_7813832_19968812Скрипт торгует опционами виртуально. При первом запуске открываем позицию "бабочка" или "кондор" зависит от настроек (если Start_Call = Start_Put - бабочка если Start_Call > Start_Put - кондор)
Стратегия: если цена фьючерса выше BU_1 (безубыток 1-й Call позиции), то закрываем крыло Call и открываем новое с большими страйками, если цена выше Start_Call, но ниже BU_2 - Step_Strike - закрываем крыло Call и открываем с меньшими страйками. Аналогично для Put только в другую сторону.
Смотреть полностью...