Анатолий (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Время свечи
 
Здравствуйте, вдруг задался глупым вопросом, но всё же, чем самому гадать лучше думаю спросить - время свечи, как на графике так и возвращаемое параметром T ( ds:T(index) ) в Луа скрипте - это что за время - время начала формирования свечи или конца?
QUIK 8.0
 
Цитата
Nikolay написал:
А зачем под Lua 5.3? В Квике 5.1
Естественно что для 5.3 это уже не для квика надо, ненашел пока SSL 64 битного для луа 5.3, тебе же не трудно просто перекомпилить по 64 бита с луёвыми сорсами от 5.3 если у тебя уже проект готовый есть
QUIK 8.0
 
Цитата
Nikolay написал:
Если кому еще необходимо. Я бился над сборкой socket и ssl под x64. Вроде собрал
Незаработали они у меня потому что собрал ты их строго под Луа 5.1, может будешь так добр что соберешь все это еще и под Луа 5.3?
QUIK 8.0
 
Цитата
Nikolay написал:
бился над сборкой socket и ssl под x64. Вроде собрал, но как-то нестабильно оно работало
У меня в ZerobraneStudio вообще не заработали твои бибилиотечки, зеробран ругается:
C:\distr\ZeroBraneStudio\bin\lua53.exe: error loading module 'ssl.core' from file 'C:\distr\ZeroBraneStudio\bin/clibs53/ssl.dll': %1 ( Какие-то кракозябры) Win32.
Восстановление связи QUIK с сервером
 
Здравствуйте, мне вот стало интересно - если произошел разрыв связи КВИКа с сервером, вызывается функция OnDisconnected,  при восстановлении связи вызывается функция OnConnected и после нее работа скрипта возобновляется, если он написан достаточно правильно чтобы не отваливаться из за разрыва связи конечно, так вот в какое место скрипта переходит его выполнение после возобновления связи КВИКа и вызова функции OnConnected? я так понимаю что ни в какое место не переходит а скрипт просто работал вхолостую, если в нём такое было предусмотренно - не выполнять команды которые чреваты остановкой скрипта при отсутствии связи, и при возобновлении связи просто все начнет выполняться где предусмотрена проверка isConnected,  или же функция OnConnected передаст управление скрипта в какую либо из предусмотренных функций типа main()?
И если я в OnConnected  сам пропишу переход к функции main() или OnInit() ? Потому как хочу чтобы скрипт после восстановления связи начал работу с самого начала, правильно ли так сделать?
QUIK 8.0
 
Запускал также msvcbuild с опцией debug-5.1 - все равно не компилится
QUIK 8.0
 
Цитата
swerg написал:
Там надо аккуратно разобраться с bat-файлом.В нём указаны абсолютные пути до lib-файлов и до lua.exe (на диск Z:)Эти пути надо просто поправить на свои.Кроме того, часть h-файлов генерируется тут же при сборке через lua-скрипты, опять же надо разобраться и все настроить, чтобы генерация отрабатывала (запускалась Lua.exe) и сделать.

Пути есс-но правил все пути, это же очевидно, к папке с Zerobranestudio - c:\ZeroBraneStudio\bin\   к примеру, правил и lua.exe на lua52.exe в разделе

Код
@set LUA_INCLUDE=Z:\c\lua-5.2.0\src
@set LUA_LIB=Z:\c\lua-5.2.0\lua5.2.lib
@set LUA_EXE=Z:\c\lua-5.2.0\lua.exe

закидывал и соответствующие lib'ы в c:\ZeroBraneStudio\bin\ отсюда
https://sourceforge.net/projects/luabinaries/files/  т.к. в комплекте с zerobrane они не идут,  ( но может надо было не только либы а и все остальное - exe и dll? )

Все равно не компилится, тут уже надо копать глубоко
Лучше уж сразу эту библиотеку себе скомпилить потом разберусь какие именно функции мне понадобятся, эта же библиотека встроена в LuaJit - т.е. если запускать луа-скрипты через луаджит то эту либу можно require'ить без проблем, но хочется иметь её отдельно
QUIK 8.0
 
Хедер  hmac_sha512.hpp если надо  https://cloud.mail.ru/public/FCfU%2FeuqRPJMBw
остальные хедеры из сорсов opessl -   https://www.openssl.org/source/openssl-1.1.1d.tar.gz
QUIK 8.0
 
Цитата
 
QUIK 8.0
 
Цитата
swerg написал:
Я не вижу что там сейчас на картинке за код и ошибки.Приведите их здесь, пожалуйста. И полный ваш код.
Если кликнуть по картинке она увеличится, вроде на ней все разборчиво видно
Вот полный код:


Код
// Hm512.cpp: определяет экспортированные функции для приложения DLL.
//
#define LUA_LIB
#define LUA_BUILD_AS_DLL

//
// Пример простой библиотеки на C++ для вызова ее из LUA
// http://quik2dde.ru/viewtopic.php?id=18
//
#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include <hmac_sha512.hpp>


// в случае вызова функций из LUA-кода во внешней DLL
// необходимо определить эти константы до подключения заголовочных файлов LUA


extern "C" {
#include <lauxlib.h>
#include <lua.h>
#include <lualib.h>
#include <luaconf.h>
}





BOOL APIENTRY Hm512(HMODULE hModule,
   DWORD  ul_reason_for_call,
   LPVOID lpReserved
)
{
   switch (ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
   case DLL_PROCESS_DETACH:
      break;
   }
   return TRUE;
}



static int forLua_Hmacsha512(lua_State *L) {

   const std::size_t l = 0;
   std::string secret = luaL_checklstring(L, 1, l);
   std::string params = luaL_checklstring(L, 2, l);

   HMAC_SHA512 hmac_sha512(secret, params);
   std::string d = hmac_sha512.hex_digest();

   // помещаем в стек результат умножения
   lua_pushstring(L, d.c_str());

   return(1);  // эта функция возвращает одно значение
}


// регистрация реализованных в dll функций, чтобы они стали "видимы" для LUA   Hmacsha512

static struct luaL_reg ls_lib[] = {
   { "Hm512", forLua_Hmacsha512 },
{ NULL, NULL }
};

extern "C" LUALIB_API int luaopen_Hm512(lua_State *L) {
   luaL_openlib(L, "Hm512", ls_lib, 0);
   return 0;
}



Вот еще раз картинка, ошибки как раз в строках с номерами на картинках, все делал один в один с вашего образца, правда у вас там функция вызываемая из луа должна возвратить число, а мне надо строку текста, поэтому функцию возвращающую текст взял из примера на 1ой странице - https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/, нехватает еще знаний в Си конечно, учу...
QUIK 8.0
 
Цитата
Anton написал:
Раз он настолько крут, что бат-файлом проекты собирает
Это у него батник для запуска в командпромте визуалстудии
QUIK 8.0
 
Цитата
swerg написал:
Просто взять готовый проект и на его основе делать. Только переименовать )
Вообщем все равно ошибки лупит, делаю все как в вашем образце а ошибки там где я даже ничего и не трогал:

 
QUIK 8.0
 
Вроде вот так ошибка пропала:

Код
   const std::size_t l=0;
    const char* url = luaL_checklstring ( L, 1, l);
    const char* method = luaL_checklstring (L, 2,l);
    const char* parameters = luaL_checklstring (L, 3,l);
QUIK 8.0
 
Цитата
swerg написал:
Просто взять готовый проект и на его основе делать. Только переименовать )
Стал делать по вашему образцу, думаю сделать полезную подключаемую библиотечку
Код
static int forLua_httprequest(lua_State *L) {
1        const char* url = luaL_checklstring ( L, 1 );
2   const char* method = luaL_checklstring (L, 2);
3   const char* parameters = luaL_checklstring (L, 3);
4   double SomeCounter = luaL_checknumber (L, 4);

   somefunc1 (url, SomeCounter);

   somefunc2 = api.call(method, parameters, "");

   

   lua_pushstring(L, response);
   return(1); 
}


Т.е. - первые три аргумента  в функцию будут передаваться строчными, четвертый - число, MSVStudio 2107 лупит мне ошибки:
с 1 по 4ую строки - слишком мало аргументов в вызове функции,  в чем ошибка? Вроде все по вашему примеру...
QUIK 8.0
 
Привет, слушай выручи пожалуйста - можешь помочь скомпилить библиотечку https://github.com/jmckaskill/luaffi  я бился бился ничего не получилось, все  по мануалу автора делал неполучается
QUIK 8.0
 
Цитата
Владимир написал:
Вот свинью подложили квиковцы с 64 версией
А какая у вас необходимость то была переходить на 64? У меня потому что было желание внести в скрипт некоторые функции из-за которых скрипт стал выжирать более 2Гб и стал отваливаться с ошибкой not enough memory, а у вас?
Цитата
Владимир написал:
Библиотеку перекомпилил под x64
Может неправильно перекомпилили как-то
Цитата
Владимир написал:
Запускается пять секунд работает и quik падает
Ошибку пишет какую?


Цитата
Владимир написал:
У меня скрипты были написаны которые вели учет операций и их доходность на luasqllite3
В квике,  с помощью луа скрипта,  учет и доходность можно вообще вести дешево и сердито - выгружая данные по ходу дела в текстовые логи  а потом  анализируя их также в скрипте, в луа для этого есть много мощных средств обработки текстовой информации из текстовых файлов - быстро просто надежно,  и не нужно никаких sql
Иерусалимчий как раз для этого (и не только) луа и написал
QUIK 8.0
 
Цитата
Anton написал:
Саму openssl настоятельно рекомендую скачать собранную, они есть
Есть то есть, но вот чтобы 64х битную и для луа51 сгодилась это поискать надо
Да и теперь другие проблемы появились, попробовал уже законнектится к брокеру новым квиком 64бит - похоже что не получится пока брокер у себя тоже на 64бит не поставит, https://forum.quik.ru/messages/forum1/message39956/topic4529/#message39956
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Всех приветствую! Поделитесь у кого какие результаты по прикручиванию нового квика 8.0 64бит к своему брокеру, у которого по прежнему на стороне сервера стоит 32-ух битный квик?
Вообщем я попробовал, перекинул из своего прежнего 32х битн. квика 7.27 все что касается коннекта квика с брокером, ключи, ini и cfg файлы и прочее, раньше такое легко прокатывало пока квик был 32-х битн и я хотел версию квика поновее, брокер то неспешит обновлять свой квик, и новый квик у меня без проблем коннектился, теперь же квик при попытке коннекта выдает


Ясно что все дело в новых дллках на 64 бит, а у брокера старые, на 32 бит, в частности проблема тут в MP_Pr.dll

Нехочет с ней коннектится 32х битный квик на стороне брокера,  попытки насильно прикрутить MP_Pr.dll от старого 32битн. квика бесполезны, да оно и понятно


 
QUIK 8.0
 
Цитата
Anton написал:
Общая длл, скорей всего, получилась, только, видимо, через require луа ее не загрузит, а через package.loadlib сможет.
Проверил только что - моя скомпиленная дллка 2 в 1 норм подключилась скриптом в квик юниор 64 бит и её функции работают - скрипт отправляет емейлы норм!  А вот оригинальные компиленные дллки из нехабовского проекта скрипт даже несмог подключить

error loading module 'socket.core' from file 'C:\QUIK-Juniorx64\lua\socket\core.dll':
   Не найдена указанная процедура.

- я так понимаю это потому что что дллки для луа53, уже не раз пробовал - дллки от луа51 неработают в луа53 и наоборот
QUIK 8.0
 
Цитата
Anton написал:
В общем, качнул я с гитхаба эту штуку, посмотрел
Anton написал:
В общем, качнул я с гитхаба эту штуку,Может будете так добры что поможете еще и библиотечку SSL под луа 64бит скомпилить? Отсюда я так понимаю должна пойти https://github.com/zhaozg/lua-openssl  ,  вообщем там ппц полный, слишком долго будет расписывать ошибки,   вообщем создал также проект с нуля, добавил в него хедеры и исходники,  все прописал как и раньше, и началось, при  сборке проект начал ругаться  на нехватку многих хедеров, которых в исходниках вовсе и небыло, я  нашел их в оригинальных исходниках от Openssl - https://www.openssl.org/source/, например в  этих - https://www.openssl.org/source/openssl-1.1.0l.tar.gz,
можно  было бы и оригинальные openssl конечно скомпилить но там еще все  сложнее, они под компиляцию перлом и в x86 - тогда скомпилить будет  просто а в x64 это надо будет еще дольше разбираться  как этим перлом  компилить,
вообщем взял оттуда все недостающие хедеры, и еще проект ругался на нехватку таких хедеров как compat-5.3.h
Его взял отсюда
https://github.com/keplerproject/lua-compat-5.3
и  compat.h - его вообще толком ненашел,  потом еще проект при сборке  ругался на нехватку хедера subsidiar.h вызываемой из openssl.h,  subsidiar.h - вообще нигде ненашел, как так - подключают в свои  исходники библиотеки  но сами эти библиотеки в исходники не добавляют,  мол если у вас их нет то ищите их где хотите, вообщем хоть я subsidiar.h  и  ненашел но потом почему то сообщение о нехватке этого хедера пропало  когда все хедеры что были из сорсов openssl перекинул в проект, ну и в  итоге все сообщения о нехватке хедеров пропали и теперь только куча  ошибок валится, аж целых 1294:
https://cloud.mail.ru/public/2m4q/2dfroxagV
QUIK 8.0
 
Цитата
Anton написал:
#pragma comment(lib, "ws2_32.lib")
Как то только вот это вставил в luasocket.c, жамкнул пересобрать проект - и сборка прошла до конца без ошибок,
но только вот есть размышления - собралась у меня значится одна библиотечка dll,  с названием проекта, как я его назвал, так как проект я создал сам прилепив в него чисто .c и .h файлы из src папочки сорсов luasocket-master, в самой же этой папочке в корне были уже готовые файлы проекта под MSVC Studio,



я сначала их трогать не стал, решил дай думаю сам попробую, сделал сначала получается по своему, теперь наконец то получилось, и сразу сейчас открыл готовый проект от Диего, тоже пришлось чуток помучаться но там все проще - я стал делать по предыдущему образцу, но сборка не пошла во первых он стал ругаться - не вижу мол либы lua53.lib, я думаю зачем ему либа от луа53? я же дал ему либу от луа51, потом в ошибках прочитал - дословно непомню что в командной строке задано - lua53.lib и ненаходится - захожу в Свойства - C/C++ -  Командная строка - там действительно прописано - lua53.lib причем изменить невозможно,



хорошо, тогда просто переименовал либу lua5.1.dll в  lua53.lib - но не прокатило на компиляции повалились ошибки

Вижу непрокатит подстановка, скачал тогда луабинарии 5.3 x64 отсюда https://sourceforge.net/projects/luabinaries/files/5.3.5/Windows%20Libraries/Dynamic/lua-5.3.5_Win64...

закинул либу и хедеры в проект от Нехаба - жамкнул Пересобрать проект - все прошло сразу до конца и без ошибок
Но в отличие от того что у меня собралась одна dll'ка  размером  108 Кб в проекте у Нехаба собралось две dll'ки  -  core.dll размером 18,5 Кб и 52 Кб  в двух разных каталогах -  mime и socket соответственно,  так что же в итоге получилось у меня и у Нехаба? У меня что получилась одна совмещенная из двух длл? Совсеми функциями из двух нехабовских длл?
И почему у Нехаба проект лупил ошибки когда я ему подсунул либу и хедеры от луа51 вместо луа53 а у меня не ругался и скомпилился? В проекте Нехаба я тоже пробовал #pragma comment(lib, "ws2_32.lib")  прописывать в луасокет.с
(да у него это итак в свойствах прописано) непомогло, и почему параметры командной строки в свойствах жестко заданы и не меняются? Т.е. Нехаб получается изначально задумал исходники строго под луа53? А под Луа5.1 что? Надо более ранние качать или эти все таки могут пойти? Надо будет конечно попробовать в работе дллку что я скомпилил, может и заработает, и вообще возможно ли заставить заработать дллки от луа53 в луа51? (В квике ведь Луа51, разрабы не спешат за прогрессом а жаль)
QUIK 8.0
 
Цитата
Anton написал:
система та же
Вписал в препроцессор _WINSOCK_DEPRECATED_NO_WARNINGS, теперь другие ошибки  ))))))))))  
QUIK 8.0
 
Цитата
Anton написал:
А где именно искать надо вписать в
Вписал, теперь другие ошибочки полезли  
QUIK 8.0
 
Теперь другой трабл, с компиляцией простенького исходника состоящего из одного си сорс файла разобрались (несовсем конечно но лучше чем ничего, спасибо вам) теперь далее - это был наверно один из редких случаев когда в исходниках один си сорс, а так в основном сишник там не один и не несколько, а много, значится качнул я сорсы луасокетов от диего нехаба https://github.com/diegonehab/luasocket  распаковал, создал пустой проект, вообщем все как по той инструкции с предыдущей страницы из qluasharp, создал в папке нового проекта папку lua, закинул в неё луёвые хедеры и либу lua5.1.lib, путь к ней есс-но в свойствах проекта прописал, хедеры из сорсов закинул тоже в папку lua, сишные же сорсы закинул в корневую папку проекта, потом в обозревателе решений в пункт "исходные файлы"  добавил все сишные сорсы  а в пункт "Файлы заголовков" все хедеры, в итоге повалилось много ошибок что сишные сорсы не видят хедеры, странно, все же делал как в прошлом разе с LuaFileSystem, разница только в том что там создавал пустой cоpс и закидывал в него код копипастой а теперь просто добавил сорсы в проект, но не думаю что в этом есть какая то разница, причем что странно - смотрю что в сорсах хедеры инклюдятся в одних местах окруженные скобками " ",  в других местах окруженные скобками < >, поправил везде на < > но ничего не изменилось, вообщем что делать непонятно и из за чего ошибки, отключение варнингов препроцессора непомогло
QUIK 8.0
 
Цитата
Anton написал:
хотя тут у арки надо спрашивать
Уже тут же на форуме подымал эту тему, арки помочь не смогли, да и дело тут явно не квике а в винде, офисы тоже перепробовал с 2003 по 2010, непомогает, что то там в билде 1607 с механизмом DDE не так, изучить бы этот механизм и понять, может удастся найти проблему, не посоветуете ли где об устройстве ДДЕ почитать можно?
QUIK 8.0
 
Раз уж на то пошло и тут появились такие серьезные спецы то хотелось бы задать еще вопрос, правда это уже будет оффтопик, потому что другая тема, вообщем может кто из вас может разобраться со следующим:
Почему в Винде 10 билд 1607 упорно не хочет работать экспорт по DDE из Квика в Эксель? Все что можно нагуглить перепробовал - ничего не помогает, в тоже время как в Винде 7 и во всех билдах 10ки после 1607 экспорт по ДДЕ работает без проблем, сразу же как только установил Квик, установил МС Оффис, без каких либо настроек, жамкнул в квике - вывод через ДДЕ сервер, и вывод в эксель пошел, в 1607 все перепробовал уже - ни в какую не идёт, советы поставить где нибудь какую нибудь галочку негодятся, уже все галочки перепробовал, - и убирал в экселе игнорировать запросы от сторонних ДДЕ
и в Квике ставил - новый поток на отдельный ДДЕ сервер, все ставил и убирал в различных комбинациях - ничего не помогает, проблема именно где то в самой системе, может надо какую то dll'ку перекинуть из билда 1703?
Смотрю зависимости DDE2EXCEL_PR.dll, может какую то из dll с которыми он имеет зависимости надо перекинуть от более старших билдов 10ки? И почему у C:\windows\system32\kernel32.dll и  C:\windows\system32\user32.dll так много dll горят красным? т.е. их попросту нет в системе и kernel32.dll и user32.dll их не могут найти? Может в этом проблема?
QUIK 8.0
 
Цитата
Anton написал:
Расписывать реально долго
А есть хорошие ссылочки по которым можно на эту тему просветится более подробно, как правильно все эти несьюрные функции заменить на секьюрные? Или же это надо вообще Си изучать полностью?
QUIK 8.0
 
Цитата
QApplication написал:
Эта либа точно x64?
Вы про какую - liblua5.1.a  или  lua5.1.lib?
Качал отсюда - https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/
Там же написано вроде - lua-5.1.5_Win64_mingw6_lib.zip       и  lua-5.1.5_Win64_vc15_lib.zip    64х битные вроде должны быть  
QUIK 8.0
 
Цитата
Anton написал:
Но это пока в сторону отложите, пусть компилятор сначала до конца отработает, потом будете линкер мучать. А чтобы компилятор отработал, разберитесь с вызовами strerror, sprintf и прочими, в ошибках написано даже как именно, либо заменить на sprintf_s сотоварищи (рекомендуется)
Заменил все те функции на их рекомендуемые секьюрные аналоги с добавкой _s, ошибок полезло еще больше, теперь в этих всех функциях стало нехватать аргументов, вы не забывайте что не продвинутые юзеры, и даже программисты могут похвастаться тем что в Сях разбираются, большинство неразбираютя совсем, ошибки на скринах, может разложите их что к чему да и все вместе тут научимся чужие гвнкоды править
Цитата
Anton написал:
либо в препроцессор вписать D_CRT_SECURE_NO_WARNINGS
Вписал _CRT_SECURE_NO_WARNINGS заодно и _CRT_NONSTDC_NO_WARNINGS
как мелкософт советуют:
https://docs.microsoft.com/ru-ru/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4996...
После этого библиотечка скомпилилась на ура, без ошибок и предупреждений, уже подключил её в квик юниор 64бит
и она там в скрипте отлично работает, спасиб, ну а то что исходники из 946 строк кода написаны как то несекьюрно совсем не вызывает опасений - явно там сложновато запихнуть трояны бэкдуры и вирусы
QUIK 8.0
 
Цитата
s_mike@rambler.ru написал:
вы бы вместо рассуждений о несовершенстве вселенной помогли человеку и собрали бы ему библиотеку.
Надо самому научится, раз пошла такая тема массового перехода на 64 бит )))
QUIK 8.0
 
Цитата
Анатолий написал:
Цитата Anton  написал:в проекте стоит char type = UNICODE, а должен быть MULTIBYTE
Извиняюсь лишних скриншотов навставлял
QUIK 8.0
 
Цитата
QApplication написал:
В проекте настроили линковку для lua.lib?
QUIK 8.0
 
Цитата
Anton написал:
1. Чтобы студия компилировала как си без плюсов, надо расширение сделать .c, а не .cpp, либо кликнуть по файлу в дереве проекта правой кнопкой, открыть настройки файла и поставить ему "компилировать как си".
Выставил непомогло,
Цитата
Anton написал:
Ваша qlua.dll, куда вы ее ни кладите, компилятору не нужна, он ее, как того Джо, не находит, потому что и не ищет. Даже линкеру она не нужна, ему нужна qlua.lib, как ее вытащить из qlua.dll тут где-то тема была.
Тем более вытаскивать ничего ненадо, в луабинариях с сорсефоржа https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/,  которые для мингв64 есть либа - liblua5.1.a ,  это она ведь нужна?
я её закидывал в папку для либ мингв64   - c:\mingw64\x86_64-w64-mingw32\lib\
поскольку мингв64 - это не один компилятор а целый набор, а компилирую я с помощью x86_64-w64-mingw32-gcc.exe - и он ищет 64х битные либы именно по тому пути, пробовал также туда закидывать и либу  lua5.1.lib,  которая в луабинариях64  для msvc - все равно один и тот же результат - валятся те ошибки что сверху, скрины из MSVC studio 2019 прилагаю
Цитата
Anton написал:
а) исходный код является говнокодом (E0144, C2440, C2664)
Не является, т.к. 32-х битный mingw компилит эту библиотечку lfs.c в lfs.dll без каких либо проблем, и так же без каких либо проблем её функции потом из луа скрипта работают
Цитата
Anton написал:
в проекте стоит char type = UNICODE, а должен быть MULTIBYTE
Включил multibyte ненпомогло
QUIK 8.0
 
Цитата
QApplication написал:
В проекте настроили линковку для lua.lib?
ну да, все как в инструкции по той ссылке qluacsharp, завтра ещё раз попробую
QUIK 8.0
 
Всем привет, ребята помогите откомпилировать в 64 бит, я в 64х битном компилировании и в MSVC Studio  почти ноль, немного компилировал на Mingw 32х битном, делал руководствуясь примерами выше https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/, неполучается,  скачал MSVC Community 2019, но не думаю что проблема в отличии версии 2019 от 2013, сделал все один в один, в точности как в странице по ссылке, а компилировать пробовал библиотечку Lua file system - https://github.com/keplerproject/luafilesystem
скачал https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/lua-5.1.5_Win64_...

закинул хедеры от исходников и из луабинов 5.1.5  в созданную папку с проектом, повторил все шаги, на этапе сборки система ругается, см.скриншот, я так понимаю потому что исходник lfs.c - это С а не С++, но в msvc я не вижу нигде возможности задать чтобы исходники были С, только С++ или C#,
Причем на mingw (32-ух битном я компилил эту библиотечку вообще без проблем, так что ошибок никаких там в коде быть не может)  решил поэтому попробовать на Mingw-w64, скачал установил, скачал под мингв64 и луабинарии - https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/lua-5.1.5_Win64_...

распаковал, раскидал всё по нужным папкам в мингв64, путь к исполняемым файлам мингв64 в винде в системных переменных установил в path - c:\mingw64\bin
захожу в папку с распакованными исходниками lfs, где lfs.c лежит и выполняю -

x86_64-w64-mingw32-gcc-4.8.3 lfs.c -o lfs.dll
В итоге вываливается -


Код
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x15): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x3a): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x68): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x81): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc5): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf0): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x111): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x13d): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x152): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1dc): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x250): undefined reference to `luaL_checkudata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x277): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x2ee): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x394): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x3cb): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x3e9): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x479): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x495): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x4ad): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x4ce): undefined reference to `lua_newuserdata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x4f2): undefined reference to `lua_getfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x500): undefined reference to `lua_setmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x52c): undefined reference to `luaL_checkudata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x59b): undefined reference to `luaL_checkoption'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x5ed): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x636): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x667): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x6f5): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x70d): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x724): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x76a): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x77a): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x79f): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x7e3): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x7fa): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x83f): undefined reference to `lua_pushboolean'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x84f): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x874): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x8d5): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x920): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x97a): undefined reference to `luaL_checkudata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x9a6): undefined reference to `luaL_argerror'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x9fe): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xa1f): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xa4d): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xab2): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xada): undefined reference to `lua_touserdata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb3e): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb58): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb66): undefined reference to `lua_newuserdata'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb7f): undefined reference to `lua_getfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xb8d): undefined reference to `lua_setmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xbce): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc15): undefined reference to `luaL_newmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc29): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc3f): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc54): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc6a): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc7f): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xc94): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xcaa): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xcbf): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xce6): undefined reference to `luaL_newmetatable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xcfa): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd10): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd25): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd3a): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd50): undefined reference to `lua_pushcclosure'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xd65): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe20): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe2d): undefined reference to `lua_gettop'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe4e): undefined reference to `luaL_optnumber'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xe6c): undefined reference to `luaL_optinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xecd): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xef8): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf26): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf55): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xf84): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xfb3): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0xfdf): more undefined references to `lua_pushinteger' follow
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1163): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x118e): undefined reference to `luaL_checklstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x11ad): undefined reference to `lua_pushnil'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x11d9): undefined reference to `lua_pushfstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x11f2): undefined reference to `lua_pushinteger'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x120a): undefined reference to `lua_isstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1226): undefined reference to `lua_tolstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12bd): undefined reference to `luaL_error'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12d0): undefined reference to `lua_settop'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12de): undefined reference to `lua_type'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x12f7): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1323): undefined reference to `lua_pushstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1353): undefined reference to `lua_rawset'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x13e3): undefined reference to `lua_isstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x13fb): undefined reference to `lua_tolstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1463): undefined reference to `lua_type'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x148f): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14ba): undefined reference to `lua_pushlstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14cf): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14e5): undefined reference to `lua_pushlstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x14fa): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1510): undefined reference to `lua_pushlstring'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1525): undefined reference to `lua_setfield'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x155e): undefined reference to `lua_createtable'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1573): undefined reference to `luaL_register'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1581): undefined reference to `lua_pushvalue'
C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o:lfs.c:(.text+0x1596): undefined reference to `lua_setfield'
c:/mingw64/bin/. ./lib64/gcc/x86_64-w64-mingw32/4.8.3/. ./. ./. ./. ./x86_64-w64-mingw32/bin/ld.exe: C:\Users\Me\AppData\Local\Temp\cc0DX3v3.o: bad reloc address 0x0 in section `.data'
collect2.exe: error: ld returned 1 exit status
Это функции из интерпретатора луа, который в квике зовется как qlua.dll
т.е. в хедерах которые подключаются в lfs.c идет подключение к интерпретатору и запрашиваются его функции но компилятор нигде не может увидеть lua.dll (еще непонятно под каким названием он её ищет - lua51.dll или lua5.1.dll
или lua.dll или еще как то?)

я уже куда только под какими только названиями ни пробовал qlua.dll закидывать в папки c:\mingw64\..
во все папки закидывал, в папку с компилируемыми исходниками закидывал, нигде не видит
подключение к dll идёт как я вижу в luaconf.h, вот эти строчки:

Код
*/
#if defined(_WIN32)
/*
** In Windows, any exclamation mark ('!') in the path is replaced by the
** path of the directory of the executable file of the current process.
*/
#define LUA_LDIR   "!\\lua\\"
#define LUA_CDIR   "!\\"
#define LUA_PATH_DEFAULT  \
      ".\\?.lua;"  LUA_LDIR"?.lua;"  LUA_LDIR"?\\init.lua;" \
                   LUA_CDIR"?.lua;"  LUA_CDIR"?\\init.lua"
#define LUA_CPATH_DEFAULT \
      ".\\?.dll;"  LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll;" \
      LUA_CDIR"clibs\\?.dll;" LUA_CDIR"clibs\\loadall.dll;" \
      ".\\?51.dll;"  LUA_CDIR"?51.dll;" LUA_CDIR"clibs\\?51.dll" 

#else
#define LUA_ROOT   "/usr/local/"
#define LUA_LDIR   LUA_ROOT "share/lua/5.1/"
#define LUA_CDIR   LUA_ROOT "lib/lua/5.1/"
#define LUA_PATH_DEFAULT  \
      "./?.lua;"  LUA_LDIR"?.lua;"  LUA_LDIR"?/init.lua;" \
                  LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua"
#define LUA_CPATH_DEFAULT \
      "./?.so;"  LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" \
      "./lib?51.so;" LUA_CDIR"lib?51.so"
#endif
 
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Цитата
Kolossi написал:
Я так понимаю, что все дело в 32-х битной версии Wine
Конечно, создавай для квика 64х битный префикс в вайне теперь, а проще накатить винду в виртуалбоксе в своем маке/линухе  и без проблем поставить в неё квик и не заморачиваться
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Подскажите, ARQATECH теперь совсем переходит на создание только 64х разрядных версий квика? Где можно скачать последний 32х разр. Квик  (не Junior)
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Цитата
s_mike@rambler.ru написал:
Нужно пересобирать из исходных тестов библиотеку socket под x64
Так как персобирать придется не только socket а вообще все дополнительно используемые, это только на socket вылетает ошибка потому как эта библ. стоит первой подключаемой в скрипте, после ошибки дальше выполнение скрипта не идет есс-но,  а за ней и другие библы идут, да и дальше там еще неизвестно что может приключится
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Цитата
s_mike@rambler.ru написал:
Нужно пересобирать из исходных тестов библиотеку socket под x64
Логично, но проще пока забить на новый 64х разр. квик и пользоваться старым добрым 32х разрядным )))
QUIK 8.0 x64: что нужно знать перед обновлением на новую версию
 
Цитата
Alexey Ivannikov написал:
Рабочее место QUIK версии 8.0 является 64-разрядным приложением. Перед тем как запускать обновление на новую версию, необходимо обязательно ознакомиться со следующими особенностями новой версии.1. Новая версия может некорректно работать с LUA-скриптами, использующими внешние библиотеки dll. Перед обновлением рекомендуем обратиться к разработчикам скриптов за их обновлением.
Как раз возникла соответствующая проблема, уже хотел было открывать тему но прочитав это понимаю что видимо в этом дело, и что же теперь делать?
А проблема вот в чём - Имеется QUIK 7.27.1.18, в нём все норм работает, захотел немного потренироваться на демо счете от arqatech, скачал самый последний QUIK Junior 8.0
установил, перенес из QUIK 7.27.1.18 в новый QUIK Junior 8.0 скрипт и все его сторонние библиотеки в по точно таким же путям в в квик юниор, при запуске скрипта вылетает ошибка - error loading module 'socket.core' from file 'Z:\QUIK-Junior\lua\ssl\socket\core.dll':
    не является приложением Win32.
То есть в QUIK 7.27.1.18 все тоже самое лежит по точно таким же путям и все работает нормально

Что теперь делать?
quik выдает сообщение "Превышено ограничение на количество котировочных окон...", А их в программе открыто всего 3 штуки
 
Иван Ру, Здравствуйте! Решилась ли ваша проблема с сообщением "Превышено ограничение на количество котировочных окон"?
У меня тоже вот такая же проблема началась после того как я скачал и установил QUIK от другого брокера, но той же версии - 7.27.2.1, что и у предыдущего, перенес в новый квик из предыдущего файл wnd с настройками и скрипт, скрипт не привязан к каким либо параметрам прошлого квика, к путям например, и параметрам брокера, и при запуске скрипта, когда сразу когда через некоторое неопределенное время квик начинает сыпать сообщениями - "Превышено ограничение на количество котировочных окон. Одновременно может быть открыто не более 200 окон" всего выскакивает примерно 60-70 таких сообщений одно за другим потом все тихо, и причем скрипт не выполняет тех операций что он совершал в предыдущем квике, но и сообщений об ошибках никаких, и все нужные для работы скрипта библиотеки я перенес в новый квик, все как в предыдущем, как я подозреваю на каком то моменте выполнения скрипта и просходит эта проблема, но почему так - непонятно, ведь всё тоже самое
Вопрос по скрипту индикатора Bollinger Bands
 
Цитата
Николай Камынин написал:
поясню откуда что берется.Данная формула берется из следующей гипотезы.Полагаем что цена отклоняется от оценки среднего значения случайным образом по гауссовскому закону плотности вероятности отклонения тогда с вероятностью 0.95 имеем 1.96*ср.квадр-----------------Но это гипотеза не верна (доказано в прошлом веке)так как закон распределения цены не нормальныйследовательно центр тяжести нельзя считать как среднееследовательно закон двух сигма не работает
Можно ссылочку на какой нибудь ресурс почитать поподробней об этом?

Цитата
Николай Камынин написал:
Вообще-то  зачем городить расчет индикатора когда он есть в КВИКЕпоставьте метку и читайте значения в своем скрипте Зачем изобретать дырку от бублика.
Есть некоторые совершенно очевидные причины иногда "загородить" собственный расчет индикатора в скрипте, но впрочем я не буду распространятся на эту тему, кому это непонятно тому это и ненадо
Вопрос по скрипту индикатора Bollinger Bands
 
Я и говорю что ваши формулы для расчета верхней и нижней полосы такие же как и везде в остальных источниках
То есть BBLower/BBUpper = MA(P,N) –+ k * StDev(P,N)
Но вот среднеквадратичное отклонение  StDev(P,N) у вас рассчитывается иным методом:
StdDev = SQRT ( (SUM(CLOSE(N)^2)-SUM(CLOSE(N-P)^2)) - 2*MA(C,N-P)*(SUM(CLOSE(N))-SUM(CLOSE(N-P))) + P*MA(C,N-P)^2
То есть кв.корень разницы сумм цен, разницы скользящей средней умноженной на 2 и плюс период умноженный на  скользящую средню в квадрате! О как!
В то время как везде где только можно нагуглить среднеквадратичное отклонение  StDev(P,N) рассчитывается намного проще:
StdDev = SQRT (SUM ((CLOSE — SMA (CLOSE, N))^2, N)/N)
то есть кв.корень из суммы разниц цен(обычно закрытия потому и CLOSE) и скользящей средней некоторого периода цен
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
Я тоже подозреваю, что с интерпретатором lua в Квике не все ладно. У меня также из ZeroBraneStudio все работает. Также не все библиотеки можно подключить в Квике, для примера strict -  Квик падает без слов. Также обнаружил, что внутри фунции SearchItems (в функции проверки) у меня почему-то проверка nil как false не срабатывает. Приходится явно писать ~= nil
Кстати забыл сразу рассказать: у меня тоже по началу были такие проблемы с квиковским интерпретатором луа, но они решились все и больше не появлялись, а вызваны как мне кажется следующим - ты как и все остальные делаете так:
В папку со сторонними библиотеками ложите файл qlua.dll переименовав его в lua51.dll, еще хуже если люди берут lua51.dll откуда нибудь со стороны, из Zerobrane например, не переименовав оригинальный qlua.dll, тогда всякие глюки 100% будут, но и в первом случае - с помощью переименовывания qlua.dll  в lua51.dll я тоже наблюдал различные глюки и сообщения о некоторых ошибках во время выполнения скрипта, все эти ошибки у меня решились так:
1. В каждую папку со сторонними библиотеками ложится оригинальный qlua.dll а всякие lua51.dll удаляются.
2. Есть такая хорошая программка Dependency walker, с её помощь можно посмотреть с какими другими dll связана нужная тебе dll библиотека, но еще удобнее это посмотреть с помощью Total Commander Extended - просто становишся на dll'ку курсором, жамкаешь F3, вкладка Dll Dependency - смотрим - эта библиотека, к примеру ssl.dll требует для своей работы библиотеку lua51.dll, и кстати там будет показано - может ли нужная тебе библиотека связаться со всеми далее необходимыми ей библиотеками, если нет то возле нее будет гореть красный крестик
3. Далее любым HEX редактором, например WinHex, открываем ssl.dll для записи, ищем текст - lua51.dll
находим, далее осторожно! Необходимо стать курсором в текстовое поле отображения файла! не в шестнадцатиричное!  необходимо написать qlua вместо lua51, но при этом существующее положение точки т.е. символа разделения имени файла и расширения не должно измениться, т.е. точку трогать нельзя! qlua это на один символ меньше чем lua51, поэтому "q" писываем вместо "u" и т.д. итого у нас должно получится - lqlua.dll,  после того как писали qlua осторожно переходим в шестнадцатиричное поле и в ту позицию (байт) в которой содержится шестнадцатиричное значение буквы l ставим два нуля - "00" и буква l должна исчезнуть, сохраняем все изменения, открываем ssl.dll в Total'е, или в Dependency walker, смотрим - ssl.dll уже запрашивает не библиотеку lua51.dll а qlua.dll! Так проделываем со всеми своими сторонними библиотеками подключаемыми в скрипте самостоятельно - после этого у меня все проблемы с интерпретатором луа в квике пропали!
Вопрос по скрипту индикатора Bollinger Bands
 
Здравствуйте, написал для своего скрипта индикатор вычисления полос Боллинджера, опираясь на предыдущее написание написание индикатора AD которое я обсуждал с вами тут https://forum.quik.ru/messages/forum10/message37868/topic4504/#message37868
тогда у меня возникли вопросы - почему мои показания AD не совпадают с вашими показаниями AD из AD.lua на графиках, эти вопросы были решены, а именно вычисление AD (как и практически всех ваших индикаторов) идут у вас начиная с самой 1ой свечи которая получается с биржи и до последней, т.е. за весь диапазон, свой скрипт я поправил после чего мои показания AD стали идти точь в точь с вашими,  но при однако же значения вычисляемых полос Боллинджера опять стали несовпадать хоть в этот раз я сразу написал их вычисление с самого начала диапазона как и у вас, причем средняя линия у меня везде совпадает с вашей но несовпадают верхняя и нижняя полосы, т.е. отклонения полос, стал изучать ваш скрипт BB.lua в итоге вижу что у вас полосы боллинджера вычисляются по какой то совсем другой формуле а не по оригинальной, потому и не совпадение, а именно сама формула в целом у вас
стандартная -

1. Средняя линия ML (обычное скользящее среднее) рассчитывается по формуле:

ML = SUM (CLOSE, N) / N = SMA (CLOSE, N),

где:
— SUM (…, N) — сумма за N периодов;
— CLOSE — цена закрытия;
— N — количество периодов, используемых для расчета;
— SMA — простая скользящая средняя.

2. Верхняя линия TL (средняя линия ML, смещенная вверх на определенное число D стандартных отклонений StdDev) рассчитывается по формуле:

TL = ML + (D * StdDev),

3. Нижняя линия BL (средняя линия ML, смещенная вниз на число стандартных D отклонений StdDev) рассчитывается по формуле:

BL = ML — (D * StdDev).

StdDev - среднеквадратичное отклонение

Далее же - везде где только можно нагуглить чтолибо о полосах Боллинджера везде формула расчета среднеквадратичного отклонения

такова:
StdDev = SQRT (SUM ((CLOSE — SMA (CLOSE, N))^2, N)/N)

или же графически

Верхняя линия
Нижняя линия

Источников масса:
https://fortrader.org/indicators-forex/bollinger-bands-bb.html
http://tlap.com/o-lentah-bollindzhera/
https://privatfinance.com/indikator-polosyi-bollindzhera/
https://kbrobots.ru/roboty/11-torgovyx-robotov-dlya-quik/polosy-bollindzhera/
И еще много других, и все они содержат одинаковую формулу вычисления отклонения от средней линии

проанализировав же ваш скрипт BB.lua, а именно место вычисления отклонения от средней линии в функции SD ():
Код
function SD() --Standard Deviation ("SD")
    local SD_MA=MA()
    local sum = {}
    local sum2 = {}
    local it = {p=0, l=0}
return function (I, Fsettings, ds)
local Fsettings=(Fsettings or {})
local P = (Fsettings.Period or 20)
local M = (Fsettings.Metod or SMA)
local VT = (Fsettings.VType or CLOSE)
if (P>0) then
    if I == 1 then 
        sum = {}
        sum2 = {}
        it = {p=0, l=0}
    end
    local t_ma = SD_MA(I, {Period=P, Metod = M, VType=VT}, ds)
    if CandleExist(I,ds) then
        if I~=it.p then it={p=I, l=it.l+1} end
        local Ip,Ipp,Ippp = Squeeze(it.l,P),Squeeze(it.l-1,P),Squeeze(it.l-P,P)
        sum[Ip]=(sum[Ipp] or 0) + GetValueEX(it.p, VT, ds)
        sum2[Ip]=(sum2[Ipp] or 0) + GetValueEX(it.p, VT, ds)^2
        if it.l >= P and t_ma then
            return math.sqrt((sum2[Ip]-(sum2[Ippp] or 0) - 2*t_ma*(sum[Ip]-(sum[Ippp] or 0)) + P*(t_ma^2)) / P)
        end
    end
end
return nil
end
end
Из которого непосредственно само вычисление отклонения:
Код
sum[Ip]=(sum[Ipp] or 0) + GetValueEX(it.p, VT, ds)
sum2[Ip]=(sum2[Ipp] or 0) + GetValueEX(it.p, VT, ds)^2

И итоговая формула вычисления:

math.sqrt((sum2[Ip]-(sum2[Ippp] or 0) - 2*t_ma*(sum[Ip]-(sum[Ippp] or 0)) + P*(t_ma^2)) / P)

Я понял что ваша формула имеет иной вид, математически её можно записать примерно так:

StdDev = SQRT ( (SUM(CLOSE(N)^2)-SUM(CLOSE(N-P)^2)) - 2*MA(C,N-P)*(SUM(CLOSE(N))-SUM(CLOSE(N-P))) + P*MA(C,N-P)^2

Графически она будет выглядеть примерно так:
Ваша формула среднекв. отклонения

соответственно - формула другая, дает другие значения ( не совпадающие с оригинальной формулой) в итоге значения верхней и нижней полос отличаются


Хотелось бы услышать ваши обьяснения - что это за формула, откуда она взята, чем обьясняется её использование, для того чтобы лучше понимать её смысл и смысл использования полос Боллинджера вашего вида.

Кстати нехитрым путём я подправил ваш скрипт чтобы он рассчитывал отклонение по стандартной формуле:

Код
function SD() --Standard Deviation ("SD")
   local SD_MA=MA()
   local sum = {}
   local sum2 = {}
   local sum3 = {}
   local it = {p=0, l=0}
return function (I, Fsettings, ds)
local Fsettings=(Fsettings or {})
local P = (Fsettings.Period or 20)
local M = (Fsettings.Metod or SMA)
local VT = (Fsettings.VType or CLOSE)
if (P>0) then
   if I == 1 then 
      sum = {}
      it = {p=0, l=0}
   end
   local t_ma = SD_MA(I, {Period=P, Metod = M, VType=VT}, ds)
   if CandleExist(I,ds) then
      if I~=it.p then it={p=I, l=it.l+1} end
      local Ip,Ipp,Ippp = Squeeze(it.l,P),Squeeze(it.l-1,P),Squeeze(it.l-P,P)
      sum[Ip]=(sum[Ipp] or 0)+(GetValueEX(it.p, VT, ds)-(t_ma or 0))^2
      if it.l >= P and t_ma then
         return = math.sqrt((sum[Ip]-(sum[Ippp] or 0))/P)
      end
   end
end
return nil
end
end

И этот индикатор стал давать значения (и рисовать на графике линии соответственно) в точности совпадаемые с рассчетными в скрипте по оригинальной формуле, только лишь что из за этого места
Код
sum[Ip]=(sum[Ipp] or 0)+(GetValueEX(it.p, VT, ds)-(t_ma or 0))^2
Значения полос неправильны в самом начале диапазона на нескольких самых первых свечах, это можно поправить но нет смысла поскольку те давние свечи и значения индикаторов по ним уже никому ненужны а далее же на всем остальном диапазоне расчет идет правильный

И что интересно - мои, т.е. оригинальные полосы Боллинджера, на всём графике во многом совпадают с полосами вычисляемыми вашим скриптом но только в местах  где свечи начинают убывать, т.е. снижаться, ваши полосы резко сужаются следуя за свечами, оригинальные же полосы сужаются плавно и неспеша, что исключает вероятность ложных пробоев, зато после окончательного сужения полосы совпадают и с началом нового расширения расширяются одинаково так же полностью совпадая дос следующего сужения и т.д.
В общем хотелось бы услышать обьяснение по поводу вашей формулы расчета
Вопрос по скрипту индикатора AD
 
Лол ))))) Вообщем с помощью отладки вашего скрипта индикатора AD.lua выяснил что итоговое значение AD он выдает суммируя мгновенные значения (по формуле для каждой свечки) за весь диапазон доступных с биржи свечей, от самой последней до самой первой, однакож вам видимо трудно было об этом сразу сказать.. ))))
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
socket  = require("socket")
А у меня такой строчки нету и все работает, короче у меня все прописано вот так:
package.cpath  =  getScriptPath () .. "\\ssl\\?.dll;C:\\ZeroBraneStudio\\bin\\clibs\\?.dll;C:\\ZeroBraneStudio\\bin\\?.dll;C:\\ZeroBraneStudio\\bin\\socket\\?.dll"
package.path  =   getScriptPath () .. "\\?.lua;"..package.path

smtp = require("socket.smtp")
mime = require("mime")
ltn12 = require("ltn12")
ssl = require("ssl")
https = require("ssl.https")

В папке квика - папка lua, в ней папки socket и ssl в них я закинул dll'ки, ssl.lua в самой папке lua, надо подумать какой прогой можно сделать чтобы сделать удобный листинг папок и закинуть их сюда,
Но есть еще один удобный выход который я и предпочел т.к. у меня либа ssl хоть и подключилась и работает однако она доставляет неудобства - с ней скрипт очень долго стартует - минут 5 наверно, почему непонятно, поэтому я от неё отказался и воспользовался прогой Stunnel, ищи в инете, она создает прокси SSL туннель и переправляет направляемый на неё траффик по ssl, и тогда в скрипте


ты отправляешь через неё мыло вот так:


function sendmail (message)
local r,e

r, e = smtp.send{
 from = "somemail@mail.ru",
 rcpt = "recepient@mail.ru",
 source = smtp.message(message),
 password = "password",
 user = "somemail",
 domain = "mail.ru",
 server = "127.0.0.1",
 port = 25,
}

return r,e

end

а в настройках Stunnel указываешь:

[mail-pop3]
client = yes
accept = 127.0.0.1:110
connect = pop.mail.ru:995
verifyChain = yes
CAfile = ca-certs.pem
checkHost = pop.gmail.com
OCSPaia = yes

[mail-smtp]
client = yes
accept = 127.0.0.1:25
connect = smtp.mail.ru:465
verifyChain = yes
CAfile = ca-certs.pem
checkHost = smtp.mail.ru
OCSPaia = yes

Все просто и понятно
И тогда твое мыло и без подключения ssl.dll уйдет на почту на порт 465 по SSL
Кто как решил вопрос уведомления о сделках?
 
Сложно так сказать не видя что у тебя в скрипте и в папках квика, покажи тогда свой кусок скрипта где обьявляются пути

package.cpath  = ...
package.path  = ...

и идет подключение библиотек командой require
Кто как решил вопрос уведомления о сделках?
 
Цитата
Nikolay написал:
Я тоже подозреваю, что с интерпретатором lua в Квике не все ладно. У меня также из ZeroBraneStudio все работает.
С интерпретатором луа в квике все ладно, просто там есть нюансы, у меня были все эти проблемы и я их решил, помоему ты всетаки не все скопировал из окна ошибок, полностью все оттуда скопируй и вставь сюда, или лучше сделай скрин и выложи
Вопрос по скрипту индикатора AD
 
К томуже количеством свечей по которому рассчитывается AD не является количество свечей отображаемых на графике - я хотьь увеличиваю хоть уменьшаю диапазон отображаемого графика, т.е. кол-во свечей на графике, но знаения AD для каждой свечи остаются неизменными, отсюда  вывод что количество свечей у вас в индикаторе фиксированное но не пойму где оно задается
Страницы: 1 2 3 След.
Наверх