nikolz написал: Специально для чайников объясняю: -------------------- 1) отличие LUA от языка для метатрейда (mql) в том, что для луа есть не только подробная инструкция но и куча учебников . ---------------------- 2) справка по qlua - это справочник библиотеки , а не описания языка. Как всякий справочник он предполагает, что Вы изучили язык программирования LUA и умеете писать на нем программ. --------------------------- 3) Создание роботов это вообще не про qLua или Lua, а про умение создавать алгоритмы конечных автоматов, которые автоматизируют некоторые рутинные действия ------------------------ 4) Создание робота , который не сливает счет а даже приносит прибыль - это вообще не про то, что Выше, а про знание рынков и возможно ИИ. ------------------------------ Поэтому для получения бабла с рынка изучайте все 4 указанных выше пункта и не ищите халяву.
Слушай "уважаемый"! Ты по-моему не в ту ветку залез! Здесь люди новички спрашивают знающих людей,что и как в написании робота. И нормальные,знающие люди объясняют нормальным языком,что и как! И за это этим людям огромное спасибо!! А ту хрень,что ты написал выше сфотографируй и повесь у себя на стене,и читай каждый день свои бесполезные советы!! Больших неудач тебе в написании роботов!
Огромное,человеческое спасибо! Обязательно почитаю эту ветку. Значит буду начинать именно с вывода значений различных таблиц. Думаю все так и начинали.
Владимир написал: Maksimus, Ну, не знаю... я-то уже добрым десятком языков владел, когда впервые увидел Lua (сентябрь прошлого года). Другое дело, что после знакомства с С ничего другого искать и писать на чём-то ином просто НЕ ХОЧЕТСЯ - гениальный язык! Ну, а где-то на другом конце помещается Lua. ::
А чего там "с этими таблицами работать"? Строки - они и в Африке строки. А больше тут ничего и нет.
Пугнуть, что ли, каким-нить своим оператором? :: Ну вот, скажем: if tostring(a[12][j][0])==tostring(s.trans_id) and a[12][j][1]==0 then a[12][j][0]=s.order_num;end;
Пугнуть у вас получилось!!!)))) Ну может и я когда нибудь буду с лёгкостью писать такие строки!)
Maksimus написал: Именно так я учился писать на mql4-5. Сначала смотрел видео уроки и пробовал по ним,потом начинал разбираться в каждой строчке кода и в итоге без проблем получается на этом языке. Но qlua для меня пока темный лес-куча дров.
Знакомо. Первые роботы на мкл4 были. Потом перешел на квик и lua - матерился долго. После метатрейдера на квик - это прыжок назад. Но что делать на метатрейдере опционов нет.
Тогда вы конечно меня поймёте,как я сейчас матерюсь!!))) А ещё меня удивило,что в луа нет возможности работы с графическим интерфейсом. Например меню написать для ввода каких-то параметров. Теже линии на графике нарисовать и т.д.. Ну это сейчас не самая главная деталь в самолёте,но тем не менее. Хотелось бы чтоб этот функционал добавили конечно.
самостоятельное изучение - очень много времени уйдет и все равно вопросы останутся (я шел этим путем) возможно есть смысл поучится у кого то, по крайней мере будет первоначальная база
Именно так я учился писать на mql4-5. Сначала смотрел видео уроки и пробовал по ним,потом начинал разбираться в каждой строчке кода и в итоге без проблем получается на этом языке. Но qlua для меня пока темный лес-куча дров.
Владимир написал: Maksimus, Язык поганый, но несложный - разобраться в нём можно без особых усилий. Но подводных камней в софте более, чем достаточно.
Для меня как раз таки очень сложный показался. И самое главное,непонятный абсолютно. Я как то читал вопросы,которые форумчане задают разработчикам квика,и ответ в основном один - К сожалению такой возможности нет,но мы примем к сведению ваше пожелание- ... Вот лично я пока вообще не могу понять,как с этими таблицами работать,как данные получать и т.д... Вообщем одним словом,нужно разбираться.
Владимир написал: Игорь, BlaZed прав насчёт "надо писать самому". И задача эта не из лёгких. В смысле, написать робота, который тебя без штанов оставит, относительно несложно (хотя и там придётся попотеть), а вот зарабатывающего...
И насчёт "я своего писал неделю если не меньше"... мой давно работает (и хорошо работает!), а я всё пишу ТЗ на доработки. Месяц, если не больше. ::
Да тут хоть бы какого нибудь написать!))) Даже который без штанов оставит. На демо счёте конечно чтоб работал. Но пока увы, мозгов не хватает даже на убыточного.
почему так непонятно,а точнее вообще никак написана справка?!
Чтобы жизнь мёдом не казалась. :: Впрочем, хрен с ней, со справкой - почему вся софтина так написана?
На счёт софтины с вами полностью согласен. Хотя может когда разберусь с этим чудо-языком,изменю свое мнение,а пока для меня это полный пипец,а не софт.
BlaZed написал: Бегло пробежавшись по коду, сражу же понятно что его не стоит использовать. 1) CreateDataSource нет проверки что он хоть что нибудь вернул 2) SetEmptyCallback не надо вызывать в цикле, одного раза достаточно 3) getInfoParam("SERVERTIME") в нерабочее время может вернуть все что угодно, будете посылать свои заявки в пустоту и ловить ошибки 4) не учтено время клирингов, в которое будете получать от биржи всякий бред, который надо жестко фильтровать 5) С таблицей futures_client_holding тоже не все так просто, она запросто может оказаться например пустая, хотя позиции есть, но еще не прогрузились. Ну или например сделка уже прошла, но колбек задерживается из-за нагрузки сервера и таблица не успела обновиться, в результате получаем некорректные данные. 6) ну про стратегию торговли по SMA тут и говорить не чего
И это только не сильно всматриваясь в код.
Ну это пример робота для обучения программированию,как я понял. Поэтому стратегия зашитая в этот алгоритм,думая неважна. Главное как вы правильно сказали,это написать робота,который будет правильно реагировать на нестандартные или проблемные ситуации. Вот вы привели 6 пунктов,5 из которых очень важны для новичков типа меня,но почему-то все, что вы описали,не описывают в мануале к языку. Поэтому эта ветка думаю очень важна для новичков. Да и более уверенные кодеры ломаю тоже могут подчерпнуть для себя много чего интересного! Лично я буду регулярно читать эту ветку,и может получится написать самый простейший алгоритм. Хотя я пока вообще не могу даже представить,что тут и как.
Очень хорошая и правильная тема! Тоже недавно начал изучать луа,и очень много непонятного. Пока вообще не пойму как правильно писать на этом языке. Да ещё и справка далека от совершенства. Или дело mql4-5,очень понятная и развернутая справка,большое колличество примеров написания роботов. Поэтому согласен с автором,тоже посмотрел бы на самый простой пример робота. Всем спасибо за ответы.
Владимир написал: Maksimus , Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
Владимир написал: Maksimus, Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
Артем написал: Maksimus, можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
Вот как раз сейчас все это пробую сделать,и пока не получается
Артем написал: Maksimus, в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
Ну это понятно,когда понимаешь. А я еще не пойму как тут все работает.
Владимир написал: Maksimus, Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
Так вот и я о том, что пока для меня этот язык темный лес. Ну будем разбираться.))
Maksimus написал: Я до этого программировал на mql4-5,там мне было более все понятно.
Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.
Цитата
Maksimus написал: И документация по Lua очень скудная.
Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь. https://arqatech.com/ru/support/files/ Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
Любопытно? Мозги включи "уважаемый",и сам себе ответь!!! А то ты "гений" с первой секунды грааль написал. Если тебе нечего написать умного,то проходи тему стороной! Без тебя здесь много нормальных людей. Тем кому не любопытно.
Артем написал: Maksimus , ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
for k, v in pairs ( money ) message ( string.format ( "%s = %s" , k, v ) ) end
Вот как раз для меня пока вообще не понятно, как эти данные выводятся,как их доставать по мере надобности и т.д. Сейчас пробую разбираться с помощью ваших подсказок.
Выдавало ошибку,пока в цикле не добавил do после (money) for k, v in pairs ( money ) do message ( string.format ( "%s=%s" , k, v ) ) end Так работает. Теперь попробую сам докумекать,как вывести все эти данные в окно построчно,чтоб увидеть всю эту таблицу. Вам спасибо большое за подсказки. Буду к вам обращаться по мере надобности.
Артем написал: Maksimus, ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
for k, v in pairs ( money ) message ( string.format ( "%s=%s" , k, v ) ) end
Вот как раз для меня пока вообще не понятно, как эти данные выводятся,как их доставать по мере надобности и т.д. Сейчас пробую разбираться с помощью ваших подсказок.
Артем написал: Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1 , getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits" , i )
Случайно ваше сообщение опубликовал! Вы видимо давно на нем программируете,поэтому для вас этот язык уже как семечки! А для меня этот язык пока темный лес. Я до этого программировал на mql4-5,там мне было более все понятно. И документация по Lua очень скудная. Вам большое спасибо за ответ,сейчас попробую по вашему примеру.
Артем написал: Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1 , getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits" , i )
Доброго времени суток всем форумчанам. Совсем недавно начал изучать Lua, и вот пытаюсь разобраться с этим языком (честно сказать язык вообще не радует)... Как вывести в окно остаток баланс счета? Пытаюсь запустить скрипт из мануала,но он мне выдает одни нули. Помогите разобраться в чем причина.
Код
-- Пример использования функции getMoney
function main()
-- Параметры для запроса берутся из таблицы "Лимиты по дененым средствам"
-- client_code = "Код клиента"
-- firmid = "Фирма"
-- tag = "Группа"
-- currcode = "Валюта"
local money = getMoney("11252", "MB1000100000", "RTOD", "SUR")
message("money_open_limit: " .. tostring(money.money_open_limit))
message("money_limit_locked_nonmarginal_value: " .. tostring(money.money_limit_locked_nonmarginal_value))
message("money_limit_locked: " .. tostring(money.money_limit_locked))
message("money_open_balance: " .. tostring(money.money_open_balance))
message("money_current_limit: " .. tostring(money.money_current_limit))
message("money_current_balance: " .. tostring(money.money_current_balance))
message("money_limit_available: " .. tostring(money.money_limit_available))
end
Подставляю свой код клиента, а дальше не пойму,какие данные подставлять? Спасибо заранее всем ответившим.
Я сегодня уже написал разработчикам, что это гнилой язык. Читаю посты людей, у многих не получается кодить на этом языке. Поддержка очень сухо отвечает! Короче,лично я совсем не доволен данным языком. Синтаксис вообще убожеский!! Наверно не буду его изучать,лучше буду кодить на MQL4-5. Достало этот непонятное подобие языка программирования!!
Доброго времени суток всем форумчанам! Я честно сказать вообще в шоке с такого мягко сказать дерьмового языка! Я изучал HTML,CSS,PHP,MQL4,MQL5 и вот пару дней назад начал изучать LUA. Так вот мое ощущение, что разработчики специально писали язык как можно тяжелее для изучения!!! Скачать справочник по LUA с оф.сайта, там не справка,а просто пару строк о каждой функции написано,и что и как делать,вообще не понятно!!! Например MQL4-5 я изучил примерно за месяц полностью и без проблем пишу на них роботов! И что самое важное,что у этих языков есть свой редактор со встроенной справкой по языку,и для каждой функции приведен конкретный пример!!! Здесь же минимум информации, и максимум "гемора" в написании кода!!! Начал изучать этот ..... не очень хороший язык только из-за того, что со сбербанк использует платформу Quik. Если б сбер использовал MT4,MT5, никогда бы не стал изучать этот язык!!! И самое главное,беру скрипт из справки,запускаю его,и он чудесным образом выдает ошибку! Вот это верх тупизны данного языка!!! Разработчики, меняйте координально язык!