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

Автор записи: NewDracon
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 6, среднее: 4,33 из 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 звезд (Голосов 2, среднее: 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 звезд (Голосов 4, среднее: 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 звезд (Голосов 13, среднее: 4,62 из 5)
Загрузка...


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

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

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

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

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

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

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

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

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

Добрый день!

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

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

Компиляция скрипта QLua(Lua)

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

Qlua-основыЧтобы скомпилировать(получить байт-код) Ваш скрипт, Вам понадобится файл luac.exe, находится в корневом каталоге Вашей LuaForWindows, если у Вас ее еще нет, то установите отсюда code.google.com
Затем, положите в папку с Вашим скриптом копию файла luac.exe, создайте в этой папке текстовый файл, добавьте в него строчку:
luac.exe -o MyScript.luac MyScript.lua
"MyScript" замените на имя Вашего скрипта и сохраните этот файл под любым названием, главное с расширением .bat
Теперь выполните этот файл и в папке появится еще один файл с расширением .luac, перекиньте его куда-нибудь, поменяйте его расширение на .lua и запускайте в терминале как обычный скрипт.

Тот же результат можно получить программным путем:

1
2
3
local f = io.open(FilePathLuac, 'wb')        -- FilePathLuac по этому пути будет создан скомпилированный файл, например: "C:\\MyScript.lua"
f:write(string.dump(loadfile(FilePathSrc)))  -- FilePathSrc путь к Вашему исходному файлу .lua
f:close()

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

Сохранение параметров скрипта QLua(Lua) между запусками

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

Блоки кода

Функции сохранения и загрузки параметров с примером использования
Данный пример создаст файл ".params" (можно открыть Блокнотом, это обычный текстовый файл, можете назвать его как угодно) со следующим содержимым:

local a = {
   ['a']=10,
   ['d']={
      [1]=100,
      [2]='asdfg',
      [3]=false,
      [4]={
         ['a']=10,
         ['c']=true,
         ['b']='qwerty'
      }
   },
   ['c']=true,
   ['b']='qwerty'
}
return a

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

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

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

Вопросы:

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

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