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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 72 След.
DNS влияет на скорость работы Квика?
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
 Serge123  ,
А Вы знаете, зачем нужен DNS?
----------------------
Судя по вопросу, Вы этого не знаете.
----------------------
Прочитайте в интернете и вопрос отпадет сам собой.  
Я когда-то знал это, даже своей программкой получал пакет по UDP с корневого сервера. Сейчас поискал в Гугле, зачем нужен DNS, оказалось, что для того же, для чего и раньше:

===
DNS (система доменных имен) преобразует доменные имена, удобные для человеческого восприятия (например,  www.amazon.com ), в IP-адреса, понимаемые машиной (например, 192.0.2.44).
===

и вдобавок

===
Какой DNS самый быстрый?
1.1.1.1 — самый быстрый в мире, ориентированный на конфиденциальность DNS-резолвер
===

А в чём был замечен криминал у этой темы?
Криминала нет, есть бессмысленность вопроса.
----------------------
Система доменных имен (DNS)  представляет собой распределенную систему хранения и обработки информации о доменных зонах.
Она необходима, для соотнесения IP-адресов устройств в сети и более удобных для человеческого восприятия символьных имен.
----------------------------
Ну скажите на кой хрен КВИКУ доменные имена?
----------------------------
У Вас в квике уже прописан IP адрес сервера брокера.  
--------------------
DNS - это список имен типа "ВАСЯ ПУПКИН " и напротив него записан  IP адрес.
------------------
В Квике нет надобности искать васю пупкина.
Снять защиту с робота на LUA, Снять защиту с робота на lua, привязанного к закрытому счёту
 
Выкладываю скрипт mos.lua, в котором устанавливается номер счета.
отредактируйте его сами как хотите и потом скомпилируйте и замените в папке робота.
Код
EDP = "NO"
FIRMID = "не об\255зателе\237"
RISK_CHANGE = "NO"
RISK_CONST = 6
LICENSE_RISK = "NO"
VEDLOG = "Ведётс\255"
PAPER = "RTS"
ACCOUNT_DEPO = "99999"
CLIENTCODE = "11111"
MODULD = "10092021"
SALUT = "1000000000"
MODULPRO ="10092021"
RISK_LIC = 6
Trade = function(Type)
  -- function num : 0_0 , upvalues : _ENV
  local temp = nil
  trans_id = trans_id + 1
  local spred = 100
  local Price = 0
  local operation = ""
  if Type == "BUY" then
    for j = 0, 9 do
      Price = (getParamEx(CLASS_CODE, SEC_CODE, "offer")).param_value
      if Price == 0 then
        do
          temp = (getParamEx(CLASS_CODE, SEC_CODE, "bid")).param_value
        end
      end
    end
    spred = Price + spred
    operation = "B"
  else
    for j = 0, 9 do
      Price = (getParamEx(CLASS_CODE, SEC_CODE, "bid")).param_value
      if Price == 0 then
        do
          temp = (getParamEx(CLASS_CODE, SEC_CODE, "offer")).param_value
        end
      end
    end
    spred = Price - (spred)
    operation = "S"
  end
  local Transaction = {ACCOUNT = ACCOUNT_DEPO, TYPE = "L", TRANS_ID = tostring(trans_id), CLASSCODE = CLASS_CODE, SECCODE = SEC_CODE, ACTION = "NEW_ORDER", OPERATION = operation, PRICE = tostring(spred), QUANTITY = "1"}
  for j = 0, 10 do
    sendTransaction(Transaction)
    while not stopped and trans_Status == nil do
      sleep(10)
    end
    local Status = trans_Status
    trans_Status = nil
    if Status ~= 3 then
      row = t:AddLine()
      t:SetValue(row, "Дата", Data.date, i)
      t:SetValue(row, "Врем\255", TimeF, i)
      t:SetValue(row, "Событи\229", (string.format)("Зайт\232 \226 сделку не удалос\252 по цене %d! Статус %d: %s", Price, Status, trans_result_msg), i)
      i = i + 1
      f:write("\n", Data.date, " ", TimeF, " ", (string.format)("Зайт\232 \226 сделку не удалос\252 по цене %d! Статус %d: %s", Price, Status, trans_result_msg))
      f:flush()
      f:seek("end", 0)
      ;
      (bot.sendMessage)(from_id, (string.format)("Zajti v sdelku ne udalos` po cene %d! Status %d", Price, Status))
      if j == 9 then
        return false
      end
    else
      row = t:AddLine()
      t:SetValue(row, "Дата", Data.date, i)
      t:SetValue(row, "Врем\255", TimeF, i)
      t:SetValue(row, "Событи\229", (string.format)("\194 сделку зашл\232 по цене: %d", Price), i)
      i = i + 1
      f:write("\n", Data.date, " ", TimeF, " ", (string.format)("\194 сделку зашл\232 по цене: %d", Price))
      f:flush()
      f:seek("end", 0)
      ;
      (bot.sendMessage)(from_id, (string.format)("V sdelku zashli po cene: %d", Price))
      sleep(10)
      return true
    end
  end
  CountVolat = function(period, interV)
    -- function num : 0_0_0 , upvalues : _ENV
    tCandle = CreateDataSource(codeclass, codebum, interV)
    NumEndCandle = tCandle:Size()
    Sum = 0
    for j = 1, period do
      Volat = tCandle:H(NumEndCandle - j) - tCandle:L(NumEndCandle - j)
      Sum = Sum + Volat
    end
    avgVolat = Sum / period
    target = avgVolat / 2
    Hi = tCandle:H(NumEndCandle - 1)
    Lo = tCandle:L(NumEndCandle - 1)
    HiO = tCandle:H(NumEndCandle - 2)
    LoO = tCandle:L(NumEndCandle - 2)
    trd = "ничего"
    if HiO < Hi and LoO < Lo then   trd = "Лонг"
    else
      if Hi < HiO and Lo < LoO then   trd = "Шорт"
      else
        if HiO < Hi and Lo < LoO then  trd = "Внеш.свеч\224"
        else
          if Hi < HiO and LoO < Lo then
            HiOO = tCandle:H(NumEndCandle - 3)
            LoOO = tCandle:L(NumEndCandle - 3)
            if HiOO < HiO and LoOO < LoO then   trd = "Лонг(внут\240.свеч\224)"
            else
              if HiO < HiOO and LoO < LoOO then   trd = "Шорт(внут\240.свеч\224)"
              else   trd = "ХЗ"
              end
            end
          else      trd = "ничего"
          end
        end
      end
    end
    trend = trd
    return avgVolat, target, Hi, Lo, trend
  end
  insertLabel = function(labelType, labelDate, labelTime, yValue)
    label_params = {}
    if labelType == 1 then
      label_params.IMAGE_PATH = "C:\\pic_qlua\\купл\255.bmp"
    else
      if labelType == 2 then
        label_params.IMAGE_PATH = "C:\\pic_qlua\\продаж\224.bmp"
      end
    end
    label_params.TIME = labelTime
    label_params.DATE = labelDate
    label_params.YVALUE = yValue
    label_params.ALIGNMENT = TOP
    AddLabel(id_grafic, label_params)
  end
end


Снять защиту с робота на LUA, Снять защиту с робота на lua, привязанного к закрытому счёту
 
Maater,
в личке ссылка на измененный скрипт. Попробуйте и сообщите что и на что изменить.
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Полагаю, что программирование на луа и строение VMLua - это две большие разницы,
подобно как руление на  авто и строение двигателя авто.  
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Цитата
Виталий написал:
Цитата
nikolz написал:
QLUA - это библиотека функций, написанная на СИ
---------------------------
VMLua - это виртуальная вычислительная машина ,
тоже написанная на CИ ,
интерпретирующая байт-код скрипта Lua.  
Но ведь ветка называется "Программирование на языке Lua".
Но вопросы не  о программировании на луа,
а о внутреннем строении функций  на СИ.  
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
QLUA - это библиотека функций, написанная на СИ
---------------------------
VMLua - это виртуальная вычислительная машина ,
тоже написанная на CИ ,
интерпретирующая байт-код скрипта Lua.  
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
вообще-то,
это форум по QUIK, а не про луа.
-------------  
Тут постоянно путают qLua с VMLua.  
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Цитата
Виталий написал:
Цитата
nikolz написал:
1. Вы ошибаетесь. NULL и nil это не одно и то же. Это одно и тоже в objective-c, но не в луа. В Lua  нет NULL.
Допустим, но глобально в текущей ситуации это разве что-то меняет? Это пусто, 0, ничего, false.

Цитата
Serge123 написал:
Но если сравнить различные языки, то ,  если в данных присутствуют значения NULL, логические операторы и операторы сравнения могут возвращать, кроме TRUE или FALSE, также и третий результат — UNKNOWN.
Только JS встречал, с которым сейчас в основном и работаю. Больше нигде.

Цитата
nikolz написал:
2.  Этот способ адресации  делает VMLua не только стековой машиной, но и регистровой машиной.Отрицательный индекс удобен, когда  работаем с вершиной, положительные, когда работаем с фактическими параметрами функций.
Ну вот примерно про это я и спрашивал. Получается, что это просто работа со стеком таким образом, чтобы не превращать его в массив. Стек - это первый зашел и последний вышел. А если читать стек по положительным индексам - это массив получится. Получается, что это просто выбор разраба, как читать - ок. Меня это и интересовала: это правило или просто так сложилось.

Цитата
nikolz написал:
4.   Зря Вы не читаете учебники и документацию, а придумываете объяснение сами. Проблема Вашего непонимания в том, что Вы не знаете архитектуры процессоров.Пытаетесь разобраться в "железе" на основе знания какого-либо языка программирования. --------------------  Очевидно, что Ваши ощущения - это и есть результат незнания.
Ну так я сюда и пришел за знаниями. Разве форумы не для того чтобы быстро получить ответ на вопрос и продвинуться дальше? Читать документацию и прочее можно до бесконечности. У меня знакомый 4 года назад начал изучение ReactJS с чтения документации, тогда как я советовал ему освоить базу и начать работать. До сих пор учит. Зачем же в такие крайности?

Цитата
nikolz написал:
Подробнее написано в ссылках, выше и в других статьях в интернете.
Спасибо.
Массив  регистров.  - это и есть регистровый способ адресации.
Т е VMLua это не только стековая, но и регистровая машина.    Два в одном.  
DNS влияет на скорость работы Квика?
 
Serge123,
А Вы знаете, зачем нужен DNS?
----------------------
Судя по вопросу, Вы этого не знаете.
----------------------
Прочитайте в интернете и вопрос отпадет сам собой.  
Как вы боретесь с описками в именах переменных?
 
Ставлю  вычисления в условный оператор
Код
if x and x1 ...  and xn then 
 -- x,x1,xn --переменные , в выражениях внутри данного условия
...
end 
Снять защиту с робота на LUA, Снять защиту с робота на lua, привязанного к закрытому счёту
 
выложите на файлообменнике с описанием что есть что и пришлите в личку. Посмотрю и отвечу в личку.
Снять защиту с робота на LUA, Снять защиту с робота на lua, привязанного к закрытому счёту
 
Цитата
Maater написал:
Всем привет!
Столкнулся с такой проблемой: купил робота, он был привязан к конкретному счёту, который теперь закрыт, а автор робота на связь не выходит, чтоб сменить счёт.
Кто-то может помочь снять защиту? Вам робот считайте просто так достанется!) Работает на логике Ларри Вильямса
Надо смотреть.
Снятие заявки от администратора (брокера)
 
еще хотел заметить.
Так как фьючерсы и опционы - это не материальные активы,
и они изначально заложены у биржи.
Поэтому давать в дол под залог намерений (опционов) это прикольно.  
Снятие заявки от администратора (брокера)
 
Цитата
Айдар написал:
Цитата
nikolz написал:
 
Цитата
Айдар  написал:
 
Цитата
 nikolz   написал:
ее испол
  Вручную на практике снимать удается (хорошо, что он не рыночные заявки создает), смотришь в таблицу - новая заявка и сразу отменяешь. Возможно брокер и прав, но, не называя имена брокеров хочу сказать, что у старого такой фигни не было, он позволял держать опционы до дня исполнения даже если не хватает обеспечения, а новый за пару дней уже мутит что хочет. Старого брокера выкупили...
 Ставить такие заявки могут в региональном офисе брокера.
Дело конечно ваше, полагаю зря в опционы полезли. Возможно у Вас позиция при которой в случае неудачи Вы будете должны брокеру кучу бабла. Вот он и страхуется, так как деньги не его а клиентов.
Дело вот в чем. Опционы куплены (а не проданы, то есть не short) с запасом на балансе (потерять в данном случае больше стоимости самих опционов невозможно). Далее если опционы "в цене" есть два варианта: либо ДО момента исполнения обеспечить деньгами сумму ГО для фьючерсов, либо продать эти опционы. Но брокер заранее, за несколько дней уже продает эти опционы обратно (если на балансе не хватает ГО) и пропускается хорошие движения цен (я бы их продал например за пару часов до исполнения, а не за 3 дня). А к примеру, на 70 опционов Si нужно иметь на счете 1 000 000 рублей, что то не хочется доверять брокеру такие деньги с таким поведением... Да и вообще никому нельзя доверять большие деньги)
Теперь все понятно.
Дело в том, что на фьючерсах и опционах нет short как на акциях. Рынок производных инструментов тем и отличается от рынка базовых.
Поэтому брокер  по регламенту не обязан Вам давать в долг на этих инструментах.
--------------------
Но некоторые брокеры дают , могу догадаться у кого вы раньше обслуживались.  
Другие не дают, и это их законное право.  Вот Ваш брокер сейчас из таких.  
Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?, Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?
 
Цитата
Александр написал:
Вдогодку. Зато появились 3 строчки по CNY в таблице "Позиции по деньгам". Но в Таблице "Позиции по деньгам" нету колонок типа "В покупке", "В продаже", т.е. невозможно увидеть итоговое количество лотов на покупку и продажу по портфелю и походу на сегодня нигде в квике по валютным лотам эту итоговую информацию не получить(. Разрабочики!!! Что это за недоработка? Почему такую немаловажную информацию, как итоговое количество лотов валюты на продажу/покупку нигде невозможно найти?
По деньгам - это ваши деньги. Там указывается сколько есть и сколько вы потратили на позиции или сколько у вас заблокировано. Но это деньги.
Позиции по инструментам - это не деньги, т е Ваши контракты.
-----------------
Я Вам привел картинку в которой есть позиция по валюте и по акциям.
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Цитата
Виталий написал:
Цитата
nikolz написал:
 
Цитата
Виталий  написал:
1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает "положить сверху NULL". Для чего мы это делаем?
2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!
3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.
4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.

Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит.
 1. Не NULL а nil.  Чтобы выбрать  первый элемент таблицы.
------------------------
2.  -1,1 - выбор с разных концов стека.  
---------------------------
3. см документацию:  int lua_next (lua_State *L, int index);  Снимает ключ со стека, ложит пару ключ-значение из таблицы
Т е ключ функция сама убирает из стека, а значение убираем сами.
------------------------------
4. qLua - это библиотека функций. У нее нет стека.
Стек есть у виртуальной машины луа. qLua никаким боком не имеет отношение к этому.
-------------------
Не надо ничего предполагать или гадать, лучше прочитать:
 https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html  
 https://jevico.github.io/  
 https://eligovision.ru/media/upload/lua.pdf  
Спасибо.

1. Не принципиально, суть поняли. Я на разных языках пишу, где-то NULL (что даже привычней мне), но это одно и то же.
2. Вот зачем и почему? Т.е. я не понимаю почему в одном случае мы читаем через 1, а в других через -1. От чего зависит? Ну т.е. есть какое-то правило по которым таблицы сверху всегда или что, почему таблицы обчитываются через отрицательные индексы сверху стека?
3. Это типа lua_next  снимает ключ, а мы через pop убираем остальное после чтения? Жесть какая-то, ну ладно.
4. Хорошо, допустим, но вот интересно как раз как это работает в Lua. Потому что у меня сложилось ощущение какого-то изврата. Хочу понять подробнее как оно работает
Небольшой ликбез.
-------------------------
1. Вы ошибаетесь. NULL и nil это не одно и то же. Это одно и тоже в objective-c, но не в луа. В Lua нет NULL.
---------------------
Но если сравнить различные языки, то ,  если в данных присутствуют значения NULL,
логические операторы и операторы сравнения могут возвращать, кроме TRUE или FALSE, также и третий результат — UNKNOWN.
---------------
nil  в Lua  - это всегда false.
-----------------
2.  Этот способ адресации  делает VMLua не только стековой машиной, но и регистровой машиной.
Отрицательный индекс удобен, когда  работаем с вершиной, положительные, когда работаем с фактическими параметрами функций.
--------------------------------
4.   Зря Вы не читаете учебники и документацию, а придумываете объяснение сами.
Проблема Вашего непонимания в том, что Вы не знаете архитектуры процессоров.
Пытаетесь разобраться в "железе" на основе знания какого-либо языка программирования.
--------------------  
Очевидно, что Ваши ощущения - это и есть результат незнания.
------------------
Подробнее написано в ссылках, выше и в других статьях в интернете.
 
Снятие заявки от администратора (брокера)
 
еще у брокера может работать бот, у которого есть порог. Бот срабатывает , вы отменяете.
Попробуйте спокойно узнать у брокера по какому критерию они ставят заявки,  
Снятие заявки от администратора (брокера)
 
Цитата
Айдар написал:
Цитата
nikolz написал:
ее испол
Вручную на практике снимать удается (хорошо, что он не рыночные заявки создает), смотришь в таблицу - новая заявка и сразу отменяешь. Возможно брокер и прав, но, не называя имена брокеров хочу сказать, что у старого такой фигни не было, он позволял держать опционы до дня исполнения даже если не хватает обеспечения, а новый за пару дней уже мутит что хочет. Старого брокера выкупили...
Ставить такие заявки могут в региональном офисе брокера.
Дело конечно ваше, полагаю зря в опционы полезли. Возможно у Вас позиция при которой в случае неудачи Вы будете должны брокеру кучу бабла. Вот он и страхуется, так как деньги не его а клиентов.
Снятие заявки от администратора (брокера)
 
Цитата
Айдар написал:
Кто может подсказать, как отследить заявку от администратора, и моментально снять ее? А то брокер совсем ... . До исполнения опционов еще два торговых дня, а он делает что хочет... Тут даже дело не в отслеживании конкретного номера заявки, можно простой код для снятия всех заявок (буду ночью запускать скрипт от вредителей)  Примерно так: отследит колбек черер OnTransReply() и далее снять все активные заявки. Вот со снятием всех активных заявок нужно разобраться.
Вы этого не сделаете. А если сделаете, то Вас брокер заблокирует.
---------------
Читайте внимательно договор с брокером.
Заявки на биржу подаете не вы а брокер.
Системой КВИК Вы подаете заявку брокеру. Тот при возможности ее исполнить отправляет ее на биржу.
Брокер имеет право  сократить Вашу позицию, если у Вас не хватает обеспечения.
-----------------
Фактически брокер всегда прав.
Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?, Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?
 
Цитата
Александр написал:
Для получения денежных позиций (класс CETS, бумаги типа CNYRUB_TOM ) что нужно использовать?
Надо смотреть позиции по инструментам., но фирма  и счет должны быть другими чем для акций
Поэтому предположил, что Вы не выбрали надлежащую фирму и счет.

Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?, Как получить информацию о количестве у меня на покупку/продажу лотов типа CNYRUB_TOM?
 
возможно счет для валюты не выбрали в фильтре портфеля
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Цитата
Виталий написал:
1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает "положить сверху NULL". Для чего мы это делаем?
2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!
3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.
4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.

Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит.
1. Не NULL а nil.  Чтобы выбрать  первый элемент таблицы.
------------------------
2.  -1,1 - выбор с разных концов стека.  
---------------------------
3. см документацию:  int lua_next (lua_State *L, int index);  Снимает ключ со стека, ложит пару ключ-значение из таблицы
Т е ключ функция сама убирает из стека, а значение убираем сами.
------------------------------
4. qLua - это библиотека функций. У нее нет стека.
Стек есть у виртуальной машины луа. qLua никаким боком не имеет отношение к этому.
-------------------
Не надо ничего предполагать или гадать, лучше прочитать:
https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html
https://jevico.github.io/
https://eligovision.ru/media/upload/lua.pdf
Получить всю таблицу целиком, Получить всю таблицу целиком без цикла
 
Цитата
Сергей написал:
Подскажите, почему следующий скрипт не хочет выводить текущий портфель ЦБ?
Покажите, что у Вас в портфеле со сроком расчета T2. Возможно, что там пусто.
Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
 
если надо с каким-то дробным хвостиком то надо делать так:
Код
local bid=150.123456;
local step=0.1; price=bid- bid % step;  print("price="..price)  -- десятые доли
local step=0.01; price=bid- bid % step;  print("price="..price)  --сотые доли

результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "example.lua" 
price=150.1
price=150.12
>Exit code: 0

Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
 
Цитата
Lankaster написал:
Профи, подскажите пожалуйста как правильно получить цены "BID" и "OFFER"
делаю так
Код
  bid  =  tonumber( getParamEx (classcod, ticker,  "BID" ).param_value)
  
 выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется
если добавляю так bid = math.floor(bid) тогда все нормально bid = 150
Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код
   
Код
   function   countDecimalPlaces (number)     local  _, decimal  =  tostring(number):match"([^.] * ).(. * )"     return   # decimalend       -- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)   
 и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1
каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы.
можно делать так:
Цитата
Lankaster написал:
Профи, подскажите пожалуйста как правильно получить цены "BID" и "OFFER"
делаю так
Код
  bid  =  tonumber( getParamEx (classcod, ticker,  "BID" ).param_value)
  
 выводит цену в виде 150,0 но в стакане цена вида 150 и заявка не выставляется
если добавляю так bid = math.floor(bid) тогда все нормально bid = 150
Но если меняю инструмент в котором к примеру 3 знака после запятой то такой код будет округлять до целого. Пробовал получить количество знаков после запятой через Шаг цены, с помощью чат жпт получился такой код
   
Код
   function   countDecimalPlaces (number)     local  _, decimal  =  tostring(number):match"([^.] * ).(. * )"     return   # decimalend       -- Получаем информацию о выбранном инструментеlocal security_info = getSecurityInfo(classcod, ticker)-- Получаем шаг ценыlocal price_step = security_info.min_price_steplocal decimal_places = countDecimalPlaces(price_step)   
 и вот тут возникла проблема decimal_places (кол-во знаков после запятой) при шаге цены к примеру 2 выдает 1, а если инструмент имеет шаг к примеру 0,5 то decimal_places выдает тоже 1
каждый раз при смене инструмента приходится менять код, прошу помочь с решением этой проблемы.
если надо целое, то можно делать так:
Код
local bid=150.123456; local price=bid//1>>0; print("price="..price)

результат:
Код
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "example.lua" 
price=150
>Exit code: 0
способ звукового сигнала в луа
 
Рассказываю как просто сделать функцию для воспроизведения  звука в различных форматах.
Надо сделать на СИ dll для луа вот с такой функцией.  
Код
static int mciSS(lua_State*L){  mciSendString((char*)lua_tostring(L,1),0,0,0); }
если кто-то не сможет ,пишите - выложу готовую dll.
Далее у меня такая dll называется nks. Вызов функции в скрипте записан как nks.mciss
=================
Поясняю как ее применять:
===========
Чтобы воспроизвести файл  в формате WAV  
надо открыть устройство с этим файлом так:
Код
local file="C:/Windows/Media/Alarm10.wav" -- звуковой файл
nks.mciss("open "..file.."  alias MediaFile wait"); -- открыть устройство
Для воспроизведения содержимого файла  пишем там , где хочется:
Код
nks.mciss("play MediaFile FROM 0 wait");
========================
Чтобы воспроизвести файл  в формате MP3
надо сделать все тоже самое, но для этого файла
Например у меня это файл "D:/nks/test.mp3"
Код
local file="D:/nks/test.mp3" -- звуковой файл
nks.mciss("open "..file.."  alias MediaFile wait"); -- открыть устройство
Для воспроизведения содержимого файла  пишем там, где хочется:
Код
nks.mciss("play MediaFile FROM 0 wait");
Опции :
----------------------------
Если Вам хочется запустить звук и не ждать, когда закончится, то уберите в последней команде "wait"
----------------------------
Если Вам хочется воспроизводить много различных звуков в разных местах скрипта,
то в начале скрипта откройте все звуковые файлы  и  для каждого из них сделайте уникальное имя устройства.
Его надо написать вместо "MediaFile"
Для воспроизведения конкретного файла надо указать имя его устройства в команде воспроизведения вместо  "MediaFile"
==============
Желаю успешного прослушивания звуковых файлов.
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Вернее, дело не в звуковом устройстве: в упрощённом варианте команд файлы с пробелами не играются, а в той форме, что была у w32, как помню, они игрались.
Выкладываю исходник на варианте mciSendString
Код
static int mciSS(lua_State*L){
    mciSendString((char*)lua_tostring(L,1),0,0,0); 
   if (lua_gettop(L)>1)SleepEx(lua_tointeger(L,2),1); 
    return 0; }
позволяет воспроизводить файлы wav, MP3, повторять, делать паузу
способ звукового сигнала в луа
 
размером в 28 КБайт
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
могу выложить dll
Программеров интересуют исходники, чтобы не грузить зоопарк посторонних длл (по одной для каждого случая)...
Она одна на все случаи
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Ещё для смешивания звуков на форумах советовали использовать сторонние звуковые биб-ки или ДиректХ (ДиректСаунд).
могу выложить dll
которая может воспроизводить WAV файлы асинхронно и синхронно из памяти и из файлов.
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Цитата
Nikolay написал:
Можно даже параллельно проигрывать звуки, если использовать правильную команду.
Спасибо, а правильная это какая? У меня создалось впечатление, что mci это не умеет.
вариант воспроизведения mp3 файлов
скачайте из интернета прогу mpg123.exe
Код
local x="D:/nks/test.mp3" -- звуковой файл
os.execute("D:/mpg123/mpg123.exe "..x)
Звук из файла и из памяти на Lua
 
Ранее в теме
https://forum.quik.ru/messages/forum10/message74775/topic8544/#message74775

Показал как воспроизвести звуковой файл на Lua из командной строки.
----------------
Недостаток такого способа - затраты времени на загрузку приложения плеера.
Достоинство - ничего не надо писать на СИ.
===============
В данной теме, по просьбе трудящихся, показываю как воспроизводить звуковой файл  сохранить его в памяти для
многократного воспроизведения.
--------------
Решить эту проблему невозможно без написания функции на СИ.
===============
По данной ссылке
https://cloud.mail.ru/public/PYXu/YrjyXLvcP
можно загрузить zip файл  nks.dll  c такой функцией,
там же есть пример, который напишу ниже,
и библиотека Lua53.dll
--------------------------
Пример :
Код
--функция для Lua 5.3 выводит на динамики звуковой файл
--при первом вызове записывает файл в буфер
--при последующих  вызовах воспроизводит содержимое буфера
--автор nikolz 2024
--распакуйте файл на диск  желательно D
--пример вызова функции для вывода на динамики системного звука

path = "D:/nks/"  --путь где находится файл nks.dll
package.cpath =path.."?.dll;"..package.cpath
require"nks"

local x="C:/Windows/Media/Alarm10.wav" -- звуковой файл
nks.run(x);        -- первый вызов с указанием файла
for x=1,5 do
   nks.run();     -- вызов воспроизведение из буфера памяти
end
nks.stop();        -- завершение работы и удаление буфера памяти
способ звукового сигнала в луа
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Кроме музыки, в модуле можно синтезировать предложения .
Круть. На след. этапе можно сделать виртуальную дикторшу.
А для простых смертных у mciSendString предусмотрено проигрывание звука с заданного смещения и заданной длительности.
Так Вы ничего и не поняли.
Поясняю.
В начале темы написана одна строчка как воспроизвести звуковой файл.  
--------------------
Тоже самое что и ваша dll на основе  устаревшей функции  mciSendString.
--------------
Т е не надо никаких dll  для этого , понятно?
Схема торговой программы
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
на сайте института Эллиотта  англ. был такой сайт
Дюже умнО, и глаза не железные...
Тогда рекомендую,
«Золото́й клю́чик, и́ли Приключе́ния Бурати́но» — повесть-сказка советского писателя Алексея Толстого,
представляющая собой литературную обработку сказки Карло Коллоди «Приключения Пиноккио. История деревянной куклы».
в которой описана очень простая схема торговой программы.
способ звукового сигнала в луа
 
Есть еще они способ о котором  возможно мало кто знает.
Я использую такое решение в своих умных устройствах и для отладки звуковых команд для них на луа.
---------------------------
Берем модуль  внешнего плеера (цена вопроса 1 доллар) подключаем его к USB и загружаем на него свои звуковые файлы .
На выход модуля можно подключить динамики.
Есть вариант модуля с памятью на чипе флеш  либо с внешней флеш.
Число таких файлов может быть тысячи
В луа  используется функция вывода на виртуальнуй UART.
Выводим код любого файла и модуль его играет, а скрипт работает дальше.
Время  вывода команды на модуль  несколько мкс.
Кроме музыки, в модуле можно синтезировать предложения .
способ звукового сигнала в луа
 
есть решение
https://quik2dde.ru/viewtopic.php?id=79
Код
function PlaySoundFile(file_name)
  w32.mciSendString("CLOSE QUIK_MP3") 
  w32.mciSendString("OPEN \"" .. file_name .. "\" TYPE MpegVideo ALIAS QUIK_MP3")
  w32.mciSendString("PLAY QUIK_MP3")
end

Но оно делает тоже самое что и мой вариант, но для этого делается спец функция на СИ
т е в этом решении  вызова из командной строки, но через СИ.  
способ звукового сигнала в луа
 
Пардон, ошибся
В данной теме написан вариант запуска приложения плеера из командной строки
----------------------------
Т е загрузка файла звука делается приложением плеера.
Т е сначала грузится приложение плеер а оно грузит исполняемый   файл.
---------------------
Основное время затрачивается на загрузку приложения плеер.
Но плюсом такого решения является то, что плеер работает в своем потоке.
----------------------
Вариант
Код
local x="C:/Windows/Media/Alarm10.wav"
local s="powershell -c (New-Object Media.SoundPlayer "..x..").PlaySync();"
for j=1,10 do  os.execute(s); end

Лишь упрощает написание командной строки но не исключает многократную загрузку
=================
Чтобы загрузка была однократной надо использовать функцию на СИ и вызывать ее на исполнения.
-----------------------
При этом если файл длинный, то воспроизведение звука будет тормозить скрипт.
-------------------
Либо надо делать или брать готовую функцию исполняющую в отдельном потоке.
-----------------
В инете есть монго решений.  
способ звукового сигнала в луа
 
Код
local x="C:/Windows/Media/Alarm10.wav"
local s="powershell -c (New-Object Media.SoundPlayer "..x..").PlaySync();"
for j=1,10 do  os.execute(s); end
способ звукового сигнала в луа
 
вот вариант многократного проигрывания звука  с однократной загрузкой файла с диска
Код
local x="C:/Windows/Media/Alarm10.wav"
for j=1,10 do
local s="powershell -c (New-Object Media.SoundPlayer "..x..").PlaySync();"
os.execute(s);
end

играет 10 раз файл  "C:/Windows/Media/Alarm10.wav"
способ звукового сигнала в луа
 
Цитата
funduk написал:
А знаете ли Вы способ, который не загружает с диска этот файл всякий раз при проигрывании? А делает это один раз в начале работы скрипта
Знаю, но написал специально эту тему с целью дать вариант простого решения без написания каких-либо вспомогательных функций.
-------------------  
Какой смысл усложнять решение ,
если загрузка этого файла займет микросекунды,
а возможно ОС не будет грузить ее каждый раз снова.  
Схема торговой программы
 
Serge123,
Вспомнил, что после кризиса 2008 года написал книжку Сорос  "Новая парадигма финансовых рынков"
Читал ее когда-то.  
Интересный взгляд на законы рынка достаточно авторитетного спекулянта.
Схема торговой программы
 
пардон, опечатка,
на сайте института Эллиотта  англ. был такой сайт , сейчас не знаю есть ли.
Схема торговой программы
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
после кризиса всегда появляются новые Гуру, так как у старых слился депозит.
А это разве может помешать старым гурам базара, у которых "слился депозит", продолжать ими оставаться? Толпа-то этого не знает...

Я не обращал внимания на дату. Если найдёте что-то современное и полезное, дайте ссылку.
Много современного и полезного есть в платном торговом терминале Amibroker и на их форуме ,
а также на сайте и форуме метатрейдера,
на сайте института .
-------------------
Много статей и исследований есть  на сайтах недружественных стран.
---------------
Но сейчас как-то отошел от этого, поэтому дать ссылки не могу.
способ звукового сигнала в луа
 
Добрый день,
Можно воспроизводить звуковые сигналы Windows в скриптах луа так:
звук  из каталога C:/Windows/Media/:
Код
os.execute("powershell -c (New-Object Media.SoundPlayer 'C:/Windows/Media/Alarm10.wav').PlaySync();");
Код
os.execute("powershell -c (New-Object Media.SoundPlayer 'C:/Windows/Media/Ring10.wav').PlaySync();");
Схема торговой программы
 
Цитата
Constantin написал:
Мне вот интересно - каждый пишет свою обвязку для роботов? Это не рационально. Нет общей?
Вы правы.
Но бесплатных торговых систем для бирж не существует в мире.
---------------
КВИК это не торговая система, а программа для подачи заявок брокеру (так  определено изначально)
----------------
Сначала был язык QPILE для некоторой автоматизации подачи заявок
Потом встроили луа для этого.
---------------
Но КВИК это не торговая платформа, а так и остался терминалом для подачи заявок брокеру.
Что не так?
Схема торговой программы
 
Цитата
Serge123 написал:
Constantin, вот какие-то интересные блоги попались:
https://smfanton.ru/interesno/torgovye-roboty-na-birzhe.html
и по ссылке оттуда
http://www.quantalgos.ru/
а не смущает, что этим заметкам  7 лет?
И что случилось  с публичным портфелем этого авторами, как полагаете?
---------------
Кстати, он пишет что ведет свой сайт 10 лет
Т е после кризиса 2008 что-то купил быстрее кого-то и после этого не стал продавать, а стал учить других торговать.
после кризиса всегда появляются новые Гуру, так как у старых слился депозит.
------------------
Сейчас после 2022 - период новых Гуру до следующего кризиса
Вопросы к спецам по Lua и Lua C API
 
пардон, ошибся.
Выкладывал арбитражного советника, а не спредового.
Но спредовый еще проще.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Тогда вообще не понятно заявление, что он купил раньше кого-то.
Могу предположить, что по обезличенным сделкам можно было увидеть, что он успел купить по одной цене, а через очень короткое время пришла чья-то крупная покупка (видимо, по рынку) уже по др. цене.

Отн. kalikazandr, которого что-то давно не видно, могу сказать, что выглядел он довольно опытным роботостроителем, не хуже других: насколько я помню, году 20-21-м присутствующий здесь опытный тов. swerg (Да благословит его аллах и приветствует) на форуме quik2dde.ru опубликовал пример своего спредового робота (видимо, тов. swerg  (Мир ему и благословение аллаха) в то время ещё только учился), а этот kalikazandr раскритиковал этого робота и сказал, что это пример, как не надо его писать). При этом тов. swerg (Да вознаградит его аллах добром) ничуть не обиделся, зашла речь о том, как надо писать, и советы этого kalikazandr по написанию роботов и возможные подводные камни я ещё в прошлом году даже скопировал в свой текстовый файлик, который, надеюсь, и сейчас лежит на твердотельном накопителе.
Цитата
nikolz написал:
Предположу, что вечером задержка у Вас возможна из-за работы алгоритма Nagle в винде.
Так этот алгоритм сидит в винде? Хм, мне здесь кто-то уже отвечал, что это алгоритм по фамилии одного мужика, который сидит на роутерах и по вечерам склеивает пакеты для экономии траффика. А если он в винде, то можно его попробовать как-то отменить?
относительно спредового робота.
На форуме выкладывал скрипт такого советника на луа.
Добавьте туда блок торговли по его сигналам и будет вам робот.
dll на C: удивительная ошибка...
 
Опять кто-то сказки рассказывает
М-6000, М-7000, СМ-1, СМ-2 - это HP(система команд с HP2000),
M6000 - это советский вариант американской HP2000
--------------------------------------
CM3, 4, 1420, - это   DEC(система команд PDP).
DBK - вариант на микропроцессоре 1801.
===================
и система команд у DBK и CM2 совершенно разная. Даже байты перевернуты в числах.

============================
БЭСМ-6 (аналог CDC 6200)  так и осталась самой мощной ЭВМ до 90-х.
-------------------
Но сказочникам все едино.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Вам о чем-нибудь говорит название "обезличенные сделки"?Свои вы как-нибудь опознаете, но не конкретного конкурента.
А он разве писал о ком-то конкретном? В этом благородном деле все - конкуренты.
Цитата
nikolz написал:
От терминала квика у вас на компе до очереди на сервере биржи путь не близкий.
Да, я понимаю... Если я захочу дойти до Москвы, то пару  лаптей  ботинок точно сношу.
Особенно вечером тяжело выставлять заявки (в 19:00:01): посылаю первые 4 раза заявку через 5 мс., а они приходят почти одновременно. А в последнее время два раза вечером видел, что на все 14 заявок не приходил отклик OnTransReply. Более того, я в файле, куда пишет свои действия скрипт, 2 раза не видел сообщения об отправке 1-й заявки, при этом она исполнялась. Кто-то может пояснить причину такого явления? (Ошибки в моём скромном скрипте не предлагать, я в нём кода не менял).
Тогда вообще не понятно заявление, что он купил раньше кого-то.
------------------------------------------
Предположу, что вечером задержка у Вас возможна из-за работы алгоритма Nagle в винде.  
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 72 След.
Наверх