codeFlowType:
codeWrite
codeFlowLang:
C++
Запрограммируй сложный Lua-скрипт торгового робота под Quik в dll файл на основании параметров:
-- Упрощенные настройки МАНИ 144 для торговли с депозитом от 20 000 руб.
require('MEngineBigLvl') -- Название основного файла робота, который Вы получили после предоставления счёта. Если Вы не переименовывали или он не переименовался автоматически, не трогать.
function ME_Init_GParam
-- ************************* Технические настройки *************************
GParam.ts_id ='SI_20' -- ID торговой стратегии (строка)
GParam.ts_num = 2 -- Уникальный номер торговой стратегии (число от 1 до 100). Используется для вычисления уникального номера транзакции.
GParam.ts_config = getScriptPath().."\\SI_20.ini" -- Путь к файлу конфига торговой стратегии
GParam.ts_levels = getScriptPath().."\\SILvls_20.ini" -- Ссылка на файл массива уровней
GParam.ts_log_m = getScriptPath().."\\logs\\SIm_20.csv" -- Путь к лог файлу сообщений
Создание Lua-скрипта и его упаковка в DLL на C++ - задача, которая требует специального подхода. Для этой задачи мы можем использовать библиотеку Lua
, которая позволяет встроить Lua в приложения на C++. Я предоставлю вам основной шаблон кода на C++ для создания DLL, которая будет загружать ваш Lua-скрипт.
Создать проект DLL: Начните с создания нового проекта DLL в вашей среде разработки (например, Visual Studio).
Добавить библиотеку Lua: Убедитесь, что у вас есть библиотека Lua и вы добавили соответствующие заголовочные файлы и файлы библиотеки в ваш проект.
Создать основной файл C++:
Вот шаблон C++ кода, который создает DLL и инициализирует Lua-скрипт:
// LuaTradingRobot.cpp
#include <lua.hpp>
#include <Windows.h>
extern "C" __declspec(dllexport) void RunTradingRobot();
// Функция инициализации Lua и загрузки скрипта
void RunTradingRobot() {
lua_State* L = luaL_newstate(); // Создаем новое состояние Lua
luaL_openlibs(L); // Открываем стандартные библиотеки Lua
if (luaL_dofile(L, "path/to/your/script.lua") != LUA_OK) {
const char* error = lua_tostring(L, -1);
MessageBoxA(NULL, error, "Lua Error", MB_OK | MB_ICONERROR); // Вывод ошибки, если не удалось загрузить скрипт
lua_pop(L, 1); // Убираем ошибку из стека
}
lua_close(L); // Закрываем состояние Lua
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
RunTradingRobot(); // Запускаем торгового робота при загрузке DLL
break;
}
return TRUE; // Успешное выполнение
}
Теперь создайте Lua-скрипт, используя ваши параметры:
-- script.lua
require('MEngineBigLvl') -- Название основного файла робота
function ME_Init_GParam()
-- ************************* Технические настройки *************************
GParam.ts_id ='SI_20' -- ID торговой стратегии
GParam.ts_num = 2 -- Уникальный номер торговой стратегии
GParam.ts_config = getScriptPath().."\\SI_20.ini" -- Путь к файлу конфига
GParam.ts_levels = getScriptPath().."\\SILvls_20.ini" -- Ссылка на файл массива уровней
GParam.ts_log_m = getScriptPath().."\\logs\\SIm_20.csv" -- Путь к лог файлу
end
path/to/your/script.lua
, замените это на реальный путь к вашему Lua-скрипту.Теперь вы можете использовать DLL в вашем основном приложении или в вашем торговом терминале, который поддерживает использование DLL.