Блог им. 3Qu |Quik, DDE, Excel

    • 21 мая 2020, 12:16
    • |
    • 3Qu
  • Еще
Напомню, что обмен по DDE придуман в далеком 1995 году, еще для Windows 3.1.  DDE считается сильно устаревшим методом обмена данными и практически не поддерживается современными приложениями. Остался один Quik, который цепляется за DDE из последних сил.
Вывод по DDE в Excel еще и не удобен для обработки данных. Понадобилось мне, скажем, ввести дополнительно пару-тройку столбцов на опционную доску — в результате, в Excel все столбцы таблицы на листе сместятся, и всю адресацию ячеек листа Excel в программе надо будет переделывать заново.
В MS Access также имеется DDE-сервер, и есть возможность заполнять таблицы БД по DDE, однако Quik c Access по DDE работать не умеет.
В общем, решил, что экспорт таблицы из Quik по DDE надо запихнуть в таблицу базы данных (БД), и уже из БД программно работать с опционной доской. Что, кстати, гораздо удобней для любой таблицы Quik.
Хотел было через Lua — вроде все просто, Lua с таблицами работает. Ан нет, к доске опционов Lua доступа не имеет.
Наверное на С++ или C# связь по DDE надо делать.
И подумалось, а может у Смартлабовцев есть такие уже готовые рабочие решения, чего велосипеды изобретать? По крайней мере, для DDE (никогда программно с ним не работал), а в БД я и сам запихну, и если нужно поделюсь решением — здесь нет никаких ноу-хау.
Помогайте, граждане кто чем может.
  • обсудить на форуме:
  • Quik Lua

Блог им. 3Qu |Алготрейдинг, Quik и Visual Studio 2017.

    • 24 марта 2020, 14:04
    • |
    • 3Qu
  • Еще
Делаю новую алгоритмическую торговую систему (АТС) под Quik. Базовой в системе является достаточно сложная многопоточная C++ DLL, связывающаяся с Quik через Lua. Для разработки с самого начала использовалась VS 2015. Т.к. в настоящее время перешел на х64 Quik занялся перекомпиляций всего своего х86 софта под Quik на платформу х64.
Все бы ничего, но при больших рыночных потоках данных Quik начинал подтормаживать, а при подключении DDL, Quik подтормаживал еще сильнее и через некоторое время падал вместе с DLL. Переход на х64 существенно улучшил ситуацию, Однако эпизодические падения, значительно реже, но продолжались.
Надо сказать, что все эти многопоточности и были ранее введены в DLL для снижения нагрузки на Quik, чтобы не грузить поток событий терминала. Вся обработка событий заключалась лишь в том, чтобы преобразовать данные получаемые из Lua и отдать их соответствующему потоку для дальнейшей обработки.
В общем, о стабильной АТС приходилось только мечтать, и думать что дальше с этим делать.
У меня на компе давно без дела пылилась Visual Studio 2017. Требований к железу она предъявляет больше чем VS 2015, и я ее использовал считанные разы, скорее, чтобы посмотреть что в ней нового и отличия от VS 2015. Существенных отличий не заметил, и продолжал работать на старой VS 2015.

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

Блог им. 3Qu |Переход на 64-бит Quik. Пляски с DLL. 2.

    • 22 марта 2020, 18:00
    • |
    • 3Qu
  • Еще

Не далее как вчера опубликовал топик "Смена x86 Quik 7.27.2.1 на x64 Quik 8.4.1.6. Пляски вокруг DLL", где кратко рассказывалось как перекомпилировать проект С++ с платформы х86 на х64. Надеюсь, что у вас все уже получилось или получится.
Но я «крутой» программист, и, естественно, у меня вначале вообще ничего и никак не получалось. А так как проект большой, да еще и непонятно в чем дело, а своими экспериментами я могу вообще все испортить, то решил сделать маленькую простенькую DLL LuaProba.dll, на ней отработать переход на х64, и потом перенести это в большой проект.
Привожу код С++ DLL целиком:

// LuaProba.cpp: определяет экспортированные функции для приложения DLL.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

//=== Необходимые для Lua константы ============================================================================//
#define LUA_LIB
#define LUA_BUILD_AS_DLL

//=== Заголовочные файлы LUA ===================================================================================//
extern "C" {
#include "Lua\lua.h"
#include "Lua/lauxlib.h"
}

static int forLua_TestFunc(lua_State *L) // Возвращает заданный текст
{
        const char *cc = "Привет из C/C++ и от меня 2 раза"; //str.c_str();
        lua_pushstring(L, cc);
        return(1);
}

//= == Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua == == == == == == == == == == == == == == == ==//
static struct luaL_reg ls_lib[] =
{
        { "TestFunc", forLua_TestFunc },
        { NULL, NULL }
};

//=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================//
extern "C" LUALIB_API int luaopen_LuaProba(lua_State *L)
{
        luaL_openlib(L, "LuaProba", ls_lib, 0);
        return 0;
}
Весь проект DLL для VS 2015 можно скачать по ссылке - 

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

Блог им. 3Qu |Смена x86 Quik 7.27.2.1 на x64 Quik 8.4.1.6. Пляски вокруг DLL.

    • 21 марта 2020, 19:30
    • |
    • 3Qu
  • Еще

Признаться уже достал этот 32-битный Quik 7. Работать стало почти невозможно, начал подвисать практически на пустом месте. А если повесить на Quik Lua, а к Lua прицепить DLL, то вообще все эпизодически вставало. DLL-ки, вообще-то, многопоточные и освобождают вызывающие потоки (события) Lua практически за миллисекунды, но если таких событий много Quik встает. Хотя, он и без Lua и DLL тоже регулярно встает.)

Были и другие причины ухода от 32-бит Quik, но это уже связано с брокером и другими факторами.
Итак, новый брокер — новый 64-битный Quik 8.4.1.6. Наконец сбылась мечта идиота!
Что можно сказать, — х64 Quik работает гораздо лучше, все равно временами немного подвисает, но, вроде, некритично. После логин-пароля, прежде чем работать надо подождать, — потоки обезличенных сделок начинают работать только через 3-4 минуты после старта. В общем, с этим все более-менее ОК.
Следующий этап — надо переводить весь подключаемый к Quik софт с х86 на х64, и если есть исходники, то никаких проблем не должно появиться. Если вы не используете в своем софте каких либо дополнительных DLL, то все должно ограничиваться двумя действиями.
1. Меняете в проекте С++ в разделе Файлы ресурсов 32-битную версию файла Lua5.1.lib на 64-битную версию Lua5.1.lib,
2. Выставляете в свой свойствах проекта компиляцию в x64. Можно даже так:



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

Блог им. 3Qu |Новый брокер. Новый Quik.

    • 16 марта 2020, 23:30
    • |
    • 3Qu
  • Еще
Сегодня дали логин-пароль для Quik. Quik 8.4.1.6. Номер и атрибуты счета пока не прислали, сказали через пару дней.
Сегодня настраивал и тестировал под фьючерсы и опционы. Вроде почти все ОК.
Исключение — после перезапуска самостоятельно не возобновляются потоки данных в таблицах обезличенных сделок. Нужно открывать настройки таблиц и щелкать ОК. Неудобно, но пока таблиц мало, это терпимо. Пока не знаю, м.б. чего еще настроить надо.
Теперь надо перекомпилировать софт под х64 и все проверять-настраивать.

ЗЫ И еще новость для юзеров Lua-QLua. Quik в ближайшее время переводится на версию Lua 5.3. На новых версиях Quik часть старых и самописных индикаторов, скриптов и ТС перестанет работать. Необходимо будет их доработать под версию Lua 5.3.
Новость на сайте Quik - https://forum.quik.ru/forum10/topic5119/
  • обсудить на форуме:
  • QUIK

Блог им. 3Qu |Еще раз о скорой кончине Quik и иже с ним.

    • 04 марта 2020, 23:10
    • |
    • 3Qu
  • Еще
Эта, новость уже была на СЛ здесь, но, как выяснилось, мало кто обратил на нее внимания. Видимо, подвел заголовок темы — "Мосбиржа анонсировала изменения на срочном рынке".
Исходная новость от МОЕХ здесь - https://www.moex.com/n26656/?nt=107

Но, самое интересное в новостях от ARQA по этому поводу -  https://forum.quik.ru/forum1/topic5117/   Все текущие версии QUIK перестают полноценно работать на срочном рынке. Не обольщайтесь, в рамках дальнейшей модификации и фондовый рынок постигнет та же участь.) Придут и за вами.)
Ну, и самое главное, хорошая шутка от ARQA — «Для   решения проблем пп. 5-6 следует установить версию терминала QUIK,  которая на момент публикации данного уведомления еще не вышла, но  планируется к выпуску до того, как данное изменение в торговой системе  будет внедрено.»
  • обсудить на форуме:
  • QUIK

Блог им. 3Qu |Виснет Quik? Возможно вам сюда.

    • 02 марта 2020, 23:26
    • |
    • 3Qu
  • Еще
Если подвисает сам брокер или связь с ним, то этот топик вам не поможет.
Однако, возможно  причина и в самом терминале Quik. Дело может быть в том, что Quik в процессе работы пишет данные в файлы вида *.dat и *.log, и со временем эти файлы сильно разрастаются и запись в них данных занимает значительное время, отнимая процессорное время у других задач.
Простейший выход из этого состояния — периодическое удаление файлов *.dat и *.log из директории Quik. Для этого надо написать небольшой командный файл всего в одну строчку, разместить его в директории Quik, где находятся удаляемые файлы, и, для удобства использования создать ярлык на рабочем столе.
Итак, открываем блокнот и создаем файл Quik_start.cmd В него помещаем всего одну строчку: 
del alltrade.dat curr_data.log info.log
 
После команды не забудьте нажать Enter, чтобы последней в файле была пустая строка.
Сохраняем файл в указанной выше директории (папке), создаем ярлык и переносим его на рабочий стол. Запускаем командный файл перед стартом Quik. При этом файлы, указанные в команде del будут удалены. При запуске Quik их создаст заново.

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

Блог им. 3Qu |Почему я не продолжаю тему "Quik->Lua->C++ DLL".

    • 02 марта 2020, 20:12
    • |
    • 3Qu
  • Еще
Посмотрите на тематику сайта последние 2-3 недели — коронавирус, кризис — уже наступил, или еще только собирается, покупать или продавать, обсуждение падения, от все пропала до мы еще о-го-го, и счас как отскочим в небеса.
До каких-то Lua, DLL и автоторговли сейчас нет никому никакого дела. Кто сейчас это будет читать, когда и в более спокойные времена читали лишь немногие. Писать просто так не хочется, писать для себя — мне это тоже не нужно.
В общем, решил подождать с этой темой до лучших, более спокойных, времен. А там посмотрим, м.б. высохнет, и само отвалится.
  • обсудить на форуме:
  • Quik Lua

Блог им. 3Qu |Брошенная стратегия. Дневник разработчика.

    • 06 февраля 2020, 16:47
    • |
    • 3Qu
  • Еще
Сегодня окончательно сделал и протестировал DLL. DLL через Lua получает из Quik реал-тайм данные о истории, состоянии текущей свечи, стакане, ленте сделок и пр., и поставляет все эти данные в ТС. Также DLL считает (пока не все) необходимые данные для оценки вектора текущего состояния инструмента, и также передает их ТС. Сама ТС еще не написана, только данные получает. DLL также пишет все получаемые данные в БД Sqlite, где они, при необходимости, доступны ТС.
И, чтобы не быть голословным, картинки.
История, последние 15 записей:
Брошенная стратегия. Дневник разработчика.

Лента сделок, последние 15 сделок.
Брошенная стратегия. Дневник разработчика.

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

Блог им. 3Qu |Quik->Lua->C++DLL. Опыт разработки и немного кода.

    • 04 февраля 2020, 13:54
    • |
    • 3Qu
  • Еще

Начал вчера работы по реализации "Брошенной стратегии". Хорошо когда есть наработки: взял готовые куски кода, немного доработал под новые нужды, соединил их вместе и уже все готово — почти все необходимые данные передаются в DLL, расставляются по местам и готовы к использованию. С этим почти закончено, остальное будет делаться по ходу пьесы, и по мере необходимости.

С передачей данных закончено, а стратегия даже не начиналась. Система новая и архитектора системы пока не ясна, есть несколько вариантов, выбрать из которых не так просто.
Пока суд, да дело, решил написать о передаче данных из Quik в С++DLL.
О том как сделать простую С++DLL для работы с Quik-Lua написано на сайте https://quikluacsharp.ru  здесь и о передаче данных из Lua — здесь и в других материалах сайта. Наверняка многие из вас все это видели и знают, а некоторые это даже применяют. Я это все не использую, не очень разбирался, но, тем не менее, сам сайт



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

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