Вопрос от новичка

Страницы: 1
RSS
Вопрос от новичка, Как вывести в окно остаток баланс счета?
 
Доброго времени суток всем форумчанам. Совсем недавно начал изучать 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

Подставляю свой код клиента, а дальше не пойму,какие данные подставлять? Спасибо заранее всем ответившим.
 
Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.

Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.

Код
for i = 1, getNumberOf ( "money_limits" ) do
  money = getItem ( "money_limits", i )
 
Пардон, в этих таблицах индексы начинаются с нуля.

Код
for i = 0, getNumberOf ( "money_limits" ) - 1 do
 
Цитата
Артем написал:
Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.

Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через 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 )  
Выдает вот так
 
Maksimus, ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.

Код
for k, v in pairs ( money ) message ( string.format ( "%s=%s", k, v ) ) end
 
Цитата
Артем написал:
Maksimus, ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.

Код
   for  k, v  in  pairs ( money )  message  ( string.format (  "%s=%s" , k, v ) )  end 
  
Вот как раз для меня пока вообще не понятно, как эти данные выводятся,как их доставать по мере надобности и т.д. Сейчас пробую разбираться с помощью ваших подсказок.
 
Значения полей можно получать квадртаными скобками, либо если ключ представляет собой валидное имя то через точку.
Код
leverage = money[ 'leverage' ]
leverage = money.leverage
Через квадратные скобки можно в качестве ключа что угодно передавать - число, строку, таблицу, и т.п. Нельзя только nil.
 
От себя порекомендую прочитать онлайн-книгу Programming In Lua, и инструкцию QUIK Интерпретатор Языка Lua.
 
Цитата
Maksimus написал:
Цитата
Артем написал:
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
Так работает. Теперь попробую сам докумекать,как вывести все эти данные в окно построчно,чтоб увидеть всю эту таблицу.
Вам спасибо большое за подсказки. Буду к вам обращаться по мере надобности.
 
Цитата
Артем написал:
От себя порекомендую прочитать онлайн-книгу Programming In Lua, и инструкцию QUIK Интерпретатор Языка Lua.
Обязательно прочту,спасибо!!
 
Цитата
Maksimus написал:
Я до этого программировал на mql4-5,там мне было более все понятно.

Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.

Цитата
Maksimus написал:
И документация по Lua очень скудная.

Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь.
https://arqatech.com/ru/support/files/
Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
 
Maksimus, можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
 
Maksimus, Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
 
Цитата
swerg написал:
Цитата
Maksimus написал:
Я до этого программировал на mql4-5,там мне было более все понятно.

Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.

Цитата
Maksimus написал:
И документация по Lua очень скудная.

Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь.
https://arqatech.com/ru/support/files/
Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
Любопытно? Мозги включи "уважаемый",и сам себе ответь!!! А то ты "гений" с первой секунды грааль написал. Если тебе нечего написать умного,то проходи тему стороной! Без тебя здесь много нормальных людей. Тем кому не любопытно.
 
Цитата
Владимир написал:
Maksimus, Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
Так вот и я о том, что пока для меня этот язык темный лес. Ну будем разбираться.))
 
Maksimus, в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
 
Цитата
Артем написал:
Maksimus, в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
Ну это понятно,когда понимаешь. А я еще не пойму как тут все работает.
 
Цитата
Артем написал:
Maksimus, можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
Вот как раз сейчас все это пробую сделать,и пока не получается
 
Maksimus, Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!

Насчёт таблицы: вот здесь это обсуждалось: https://forum.quik.ru/messages/forum10/message55233/topic6454/#message55233
 
Цитата
Владимир написал:
Maksimus, Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!

Насчёт таблицы: вот здесь это обсуждалось:  https://forum.quik.ru/messages/forum10/message55233/topic6454/#message55233
Спасибо Владимир,обязательно сейчас прочту
 
Цитата
Maksimus написал:
Цитата
Владимир написал:
Maksimus , Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!

Насчёт таблицы: вот здесь это обсуждалось:   https://forum.quik.ru/messages/forum10/message55233/topic6454/#message55233  
Спасибо Владимир,обязательно сейчас прочту
Спасибо еще раз,очень полезная тема! Сейчас поглубже попробую разобраться!
 
Цитата
Maksimus написал:
Если тебе нечего написать умного,то проходи тему стороной!

Чета я забыл, что getMoney возвращает таблицу.
Не в строчку выступил, извиняюсь.  ;)
Страницы: 1
Читают тему (гостей: 4)
Наверх