s_mike@rambler.ru (Все сообщения пользователя)

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 26 След.
AddLabel из скрипта-индикатора
 
Цитата
swerg написал:
Если запрашиваемой возможности инет - просьба зарегистрировать пожелание.
году в 15 предлагал, регистрировали. Видимо, невозможно.
www.bot4sale.ru        t.me/bot4sale
Оповещение на основе формулы с индикатором, Как создать оповещение с использованием индикатора
 
Цитата
Сергей написал:
Здравствуйте!

Пользуюсь Квиком в версии Сбербанка.
Прошу помощи в следующем.

Хочу создать смс оповещение когда цена закрытия на часовом интервале станет меньше moving average с периодом, скажем 9.
Другое оповещение, это когда цена закрытия, скажем, на часовом интервале станет меньше нижней границы Bollinger bands.

Есть ли в квике такая штатная возможность или нужно программировать?

спасибо и будьте здоровы!
и вам не хворать
http://bot4sale.ru/download-categories/2012-06-13-15-10-36/item/rasshirennyj-servis-opoveshchenij-qu...
www.bot4sale.ru        t.me/bot4sale
string.upper(S) - русские буквы, Русские буквы в верхний регистр не получается сделать в string.upper(S) в Lua QUIK версии 8.13
 
Цитата
swerg написал:
Считаю это ошибкой, которую разработчики QUIK должны исправить.
Интерфейс у терминала русский, по умолчанию для русских букв штатные upper / lower должны корректно работать.
интерфейс у терминала не только русский, увы...
www.bot4sale.ru        t.me/bot4sale
2048 game
 
Каждая уважающая себя среда должна иметь кроме прочего, исполняемую в ней игрушку. Я таких для терминала quik не встречал.

Одно время была очень популярна игра 2048б мне заказывали ее написать для какого-то сайта. Вот ее вариант для quik, нарисовал под пиво:
Код
local stopped

game = {
   cell = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
   best = 0,
--   key = nil,
-- t = nil,
   colors =   {   [0]   = QTABLE_DEFAULT_COLOR,
               [2]   = RGB(248,248,255),
               [4]   = RGB(255,239,213),
               [8]   = RGB(255,222,173),
               [8]   = RGB(255,218,185),
               [16]   = RGB(205,92,92),
               [32]   = RGB(255,69,0),
               [64]   = RGB(238,238,0),
               [128]   = RGB(238,118,33),
               [256]   = RGB(255,160,122),
               [512]   = RGB(255,0,0),
               [1028]= RGB(238,18,137),
               [2048]= RGB(139,0,0)
            },
   
   create_table =
      function(self)
         self.t = AllocTable()
         for i = 1,4 do
            AddColumn(self.t, i, "", true, QTABLE_INT_TYPE, 10)
         end
         CreateWindow(self.t)
         SetWindowPos(self.t,100,100,300,130)
         for i = 1,4 do
            InsertRow(self.t,i)
         end
         SetTableNotificationCallback(self.t,       
                                      function(_t, msg, _p, key)
                                       if msg == QTABLE_VKEY then
                                          self.key = key
                                       elseif msg == QTABLE_CLOSE then
                                          stopped = true
                                       end
                                      end)
         SetWindowCaption(self.t, "2048 game by www.bot4sale.ru")
      end,
   
   draw = 
      function(self)
         local cell = self.cell
         for row=1,4 do
            for column=1,4 do
               local value = cell[(row-1)*4 + column]
               SetCell(self.t,row,column,value==0 and "" or tostring(value))
               SetColor(self.t,row,column,game.colors[value],0,game.colors[value],0)
            end
         end
     end,
  
   incr = 
      function(self)
         local t,open = self.cell,{}
         for i=1,16 do 
            if t[i]==0 then 
               open[#open+1]=i 
            end
         end
         t[open[math.random(#open)]] = math.random()<0.1 and 4 or 2
      end,
  
   pack = 
      function(self,ofr,oto,ost,ifr,ito,ist)
         local t = self.cell
         for outer=ofr,oto,ost do
            local skip = 0
            for inner=ifr,ito,ist do
               local i = outer+inner
               if t[i]==0 then 
                  skip=skip+1 
               else 
                  if skip>0 then 
                     t[i-skip*ist],t[i],self.diff = t[i],0,true 
                  end 
               end
            end
         end
      end,
  
   comb = 
      function(self,ofr,oto,ost,ifr,ito,ist)
         local t = self.cell
         for outer=ofr,oto,ost do
            for inner=ifr,ito-ist,ist do
               local i,j = outer+inner,outer+inner+ist
               if t[i]>0 and t[i]==t[j] then 
                  t[i],t[j],self.diff,self.best = t[i]*2,0,true,math.max(self.best,t[i]*2) 
               end
            end
         end
      end,
  
   move = 
      function(self,dir)
         local loopdata =   {   {0,12,4,1,4,1},
                              {0,12,4,4,1,-1},
                              {1,4,1,0,12,4},
                              {1,4,1,12,0,-4}
                           }
         local ofr,oto,ost,ifr,ito,ist = table.unpack(loopdata[dir])
         self:pack(ofr,oto,ost,ifr,ito,ist)
         self:comb(ofr,oto,ost,ifr,ito,ist)
         self:pack(ofr,oto,ost,ifr,ito,ist)
      end,
  
   full = 
      function(self)
         local t = self.cell
         for r=0,12,4 do
            for c=1,4 do
               local i,v = r+c,t[r+c]
               if (v==0) or (c>1 and t[i-1]==v) or (c<4 and t[i+1]==v) or (r>0 and t[i-4]==v) or (r<12 and t[i+4]==v) then
                  return false
               end
            end
         end
      return true
   end,
  
   play = 
      function(self)
         math.randomseed(os.time())
         self:incr()
         self:incr()
         while not stopped do
            self:draw()
            if self.best == 2048 then 
               message("Поздравляю!\n\nwww.bot4sale.ru") 
               break 
            end
            if self:full() then 
               message("Game Over!")
               break 
            end
            
            self.diff = false
            if       self.key==0x25 then       -- Left
               self:move(1)
            elseif self.key==0x27 then         -- Right
               self:move(2)
            elseif self.key==0x26 then       -- Up
               self:move(3)
            elseif self.key==0x28 then         -- Down
               self:move(4)
            end
            self.key = nil
            if self.diff then 
               self:incr() 
            end
            sleep(100)
         end
      end,
      
   rules = 
      function()
         message("Правила игры:\n\nВ каждом раунде появляется плитка номинала «2» или «4». Нажатием стрелки игрок может скинуть все плитки игрового поля в одну из 4 сторон. Если при сбрасывании две плитки одного номинала «налетают» одна на другую, то они превращаются в одну, номинал которой равен сумме соединившихся плиток. После каждого хода на свободной секции поля появляется новая плитка номиналом «2» или «4». Если при нажатии кнопки местоположение плиток или их номинал не изменится, то ход не совершается. Если в одной строчке или в одном столбце находится более двух плиток одного номинала, то при сбрасывании они начинают соединяться с той стороны, в которую были направлены.\nЛевый столбец с номерами строк участия в игре не принимает.\n\ns_mike@rambler.ru")
      end
}
local game = game

--------------------------------------------------

function main()
   game:create_table()
   game:rules()
   game:play()
end
Также можно взять здесь

Не имею возражений, если разработчики включат игрушку в список своих демонстрационных скриптов ))))
www.bot4sale.ru        t.me/bot4sale
_dataline_data_metatablegc
 
Добрый день

Что за тип данных такой

_dataline_data_metatablegc

у меня не получилось осознать и не смог найти в спецификации lua
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Да, Вам слушать этот бред явно противопоказано. ::

Меня это блеяние про МОЖНО сделать достало ещё много лет назад. Так СДЕЛАЙТЕ, наконец, "простейшую таблицу под любым соусом при помощи метаметодов", чтобы у таблицы заявок строки не пропадали при обрыве связи! Что, не можете? Способны только языком чесать? А что происходит с этими долбаными таблицами "с любыми свойствами" после DeleteRow - не подскажете? А то я от этого говна вообще отказался. Что до loadstring - эта "deprecated" чуть ли не единственная приличная функция во всём языке, и я ею активно пользуюсь.

вам следует научиться различать  таблицы языка луа и оконный табличный интерфейс расширения qlua.

Владимир, вы хам и невежда. Я больше вам писать не буду. К сожалению, на этом форуме невозможно заблокировать вас и не читать то, что вы пишете.

поэтгму я предлагаю остальным посетителям форума более не отвечать вам с целью очищения атмосферы от запахов.
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
TGB, Да хрен с ними, с  "неокрепшими умами" - пущай укрепляются! Не в инкубаторе же их держать! ::

Все-таки это таблицы как деревья. С обращениям к их элементам как к многомерным массивам. И ничего не надо "с помощью них строить" - всё уже построено. Мой ТРЕТИЙ коммент в этот форум содержал фразу:

В общем, с языком почти всё ясно: граф (точнее, дерево) объектов построить можно, а простейшую таблицу или даже массив - нельзя. Остаётся разобраться со строковыми переменными: способна ли эта loadstring интерпретировать строки как операторы языка (или, скажем, функции), то есть имеется ли здесь техническая возможность программирования данными.

Не нужно слушать этот бред.

простейшие таблицы, что одномерные, что многомерные, что фиксированного размера, что динамические, на луа делаются под любым соусом при помощи метаметодов. Можно сделать матрицу вообще с любыми свойствами, а не только с заранее заданными.

функция loadstring является deprecated.
www.bot4sale.ru        t.me/bot4sale
Изменить версию Lua с 5.4.1 до 5.4.2
 
Цитата
Старатель написал:
QUIK 8.13.1.16, Lua 5.4
Получил очередную ошибку  
Цитата
invalid key to 'next'
в древнем скрипте
Код
   local  ID  =  {}
 function   main ()
   .. .
   for  TableName, id  in  pairs(ID)  do 
    ID[TableName]  =   nil 
     DestroyTable (id)
   end 
   .. .
 end   
с функцией next проблемы давние, в 5.3 тоже присутствуют.
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Цитата
Старатель написал:
Проще самому написать.

Цитата
Глебов Александр написал:
суммарные  обновляемые объемы сделок для каждого ценового уровня внутри дня
Как-то так:
Код
   local  Volume  =  {}
 local   function   Claster (alltrade)
   if  alltrade.sec_code  =  =  sec  and  alltrade.class_code  =  =  class  then 
    Volume[alltrade.price]  =  (Volume[alltrade.price]  or   0 )  +  alltrade.qty
   end 
 end 

 function   OnInit ()
   for  i  =   0 ,  getNumberOf ( "all_trades" ) -  1   do 
    Claster( getItem ( "all_trades" , i))
   end 
 end 

 function   OnAllTrade (alltrade)
  Claster(alltrade)
 end   

Можно SearchItems задействовать для боле быстрого поиска.
можно. Но в этом случае индикатор будет подвешивать терминал в случае запуска на ликвидном инструменте ближе к концу торговой сессии. А если таких индикаторов будет несколько - терминал умрет.
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Цитата
Глебов Александр написал:
Цитата
   s_mike@rambler.ru написал:
 
Цитата
Глебов Александр  написал:
 
Цитата
    s_mike@rambler.ru  написал:
   
Цитата
  Глебов Александр    написал:
   
Цитата
      s_mike@rambler.ru    написал:
Вот       такой       вариант. Но не в таблицу выводит, а рисует на графике.
    Знакомо.Неинтересно.
   вывести результаты в таблицу на порядок (или на два порядка) проще, чем нарисовать все эти уровни и на графике.

Поэтому ответ на ваш вопрос о возможности реализации на lua имеет вполне себе утвердительный ответ.
  А  в чем конкретно состоит ответ на мой вопрос, кроме "посмотреть на Ваш график", а мне нужны данные для дальнейшей обработки?
 если вам хочется обрабатывать результаты, можно просто читать базу соответствующего дня и получать в луа сразу готовую таблицу с разблюдовкой по ценам сделок. Базы лежат в виде отдельных файлов в текстовом виде в формате языка луа.
Ну, собственно, это я и пытаюсь выяснить -  какими средствами QLUA  можно  читать  базу текущего дня и  получать готовую таблицу?

Вот такой функцией читают файлы базы индикатор из архива, ссылку на который я писал выше
Код
-----------------------------------------------------------------------------------------------------------------------------------
-- Чтение таблицы из файла в массива или таблицу. Вырезает сигнатуру из файла
-- Параметры:
--      Имя файла
--      Функция декодирования (или nil)
-- Возвращает:
--      Таблицу или nil
--      Сообщение об ошибке или nil
--      Полное имя читаемого файла
ifuse(`table',`read',`
   function table.read(filename,decode)
      m4_assert(type(filename) == "string","Вместо строки передано (" .. type(filename) .. ") " .. tostring(filename))
      m4_assert(type(decode) == "function" or decode == nil,"Вместо функции или nil передано (" .. type(decode) .. ") " .. tostring(decode))

      filename = io.makepath(filename,".dat")

      local result
      local f,status = io.open(filename,"r")
      if f then
         local str = f:read("*a")
         f:close()
         local _,_,s = string.find(str,"^%-%-%s.*%s%-%-\n(.*)$")
         str = s or str

         if decode then
            str = decode(str)
         end

         status,result = pcall(loadstring("return " .. str))
         if status then
            status = nil
         else
            status = "Файл поврежден" ifdef(`DEBUG',`.. ": " .. result')
            result = nil
         end
      end
      return result,status,filename
   end
')

тут есть немного того, что вам не потребуется (инструкции препроцессора, декодирование), просто выкиньте это лишнее.

Файлы базы формируются в папке <квик> / www.bot4sale.ru / VaP / <инструмент>

Таблица в файле содержит две подтаблицы.
[1] это общие итоги по дню
[2] это таблица данных по каждой торговой цене дня

Последовательность полей

Код
dnl Общие данные за день
pushdef(`COUNTER',            0)         dnl Поля в разделе DAT_TOTALS
define(`TOTAL_VOLUME_BUY',      m4_inc(`COUNTER'))      dnl Объём покупок за день
define(`TOTAL_VOLUME_SELL',   m4_inc(`COUNTER'))      dnl Объём продаж за день
define(`TOTAL_VOLUME',         m4_inc(`COUNTER'))      dnl Объём за день
define(`TOTAL_MAXVOLUME',      m4_inc(`COUNTER'))      dnl Максимальный объём, прошедший по какой-либо цене за день
define(`TOTAL_TRADES_BUY',      m4_inc(`COUNTER'))
define(`TOTAL_TRADES_SELL',   m4_inc(`COUNTER'))
define(`TOTAL_TRADES',         m4_inc(`COUNTER'))
define(`TOTAL_MAXTRADES',      m4_inc(`COUNTER'))      dnl Максимальное кол-во сделок, прошедших по какой-либо цене за день
define(`TOTAL_MINPRICE',      m4_inc(`COUNTER'))      dnl Минимальная цена дня
define(`TOTAL_MAXPRICE',      m4_inc(`COUNTER'))      dnl Максимальная цена дня
define(`TOTAL_TABLE_SIZE',      COUNTER)      dnl Размер таблицы total
popdef(`COUNTER')
Код
dnl Структура данных по конкретной цене
pushdef(`COUNTER',            0)         dnl Поля в разделе DAT_DATA
define(`VOLUME_BUY',            m4_inc(`COUNTER'))         
define(`VOLUME_SELL',         m4_inc(`COUNTER'))
define(`TRADES_BUY',            m4_inc(`COUNTER'))
define(`TRADES_SELL',         m4_inc(`COUNTER'))
define(`VOLUME_BS',            m4_inc(`COUNTER'))
define(`TRADES_BS',            m4_inc(`COUNTER'))
define(`PRICE_TABLE_SIZE',      COUNTER)                  dnl Размер таблицы по одной конкретной цене
popdef(`COUNTER')

Если что-то конкретное непонятно, спросите.
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Цитата
Глебов Александр написал:
Цитата
   s_mike@rambler.ru написал:
 
Цитата
Глебов Александр  написал:
 
Цитата
    s_mike@rambler.ru  написал:
Вот     такой     вариант. Но не в таблицу выводит, а рисует на графике.
  Знакомо.Неинтересно.
 вывести результаты в таблицу на порядок (или на два порядка) проще, чем нарисовать все эти уровни и на графике.

Поэтому ответ на ваш вопрос о возможности реализации на lua имеет вполне себе утвердительный ответ.
А  в чем конкретно состоит ответ на мой вопрос, кроме "посмотреть на Ваш график", а мне нужны данные для дальнейшей обработки?
если вам хочется обрабатывать результаты, можно просто читать базу соответствующего дня и получать в луа сразу готовую таблицу с разблюдовкой по ценам сделок. Базы лежат в виде отдельных файлов в текстовом виде в формате языка луа.
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Вот уж АБСОЛЮТНО до лампочки! Достаточно взглянуть в начало текста:
Версия:5.05
Требования:Quik 8.6
Размер:1.57 MB
и любому дебилу ясно, что это никак не Lua.

Достаточно взглянуть в конец:
Адаптировано для работы с библиотекой bot4sale.dll
и любому дебилу...
прекрасно.

как вы замечательно про дебила-то... Сами, никто за язык не тянул.

скрипт этот я написал как раз на луа. Это чистый незамутненнвй луа, который просто помещен в контейнер.  
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Цитата
Владимир написал:
   s_mike@rambler.ru,
1. Вы что, предполагаете самостоятельно разработать и графическую библиотеку? Если нет, то сложность представления данных в виде таблицы или графика ОДНОГО порядка.
2. Нет там ответа на его вопрос, ибо совершено очевидно, что вся тамошняя хрень написана НЕ на Lua.
позволю себе спросить - а на чем она написана?
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Цитата
Глебов Александр написал:
Цитата
   s_mike@rambler.ru написал:
Вот   такой   вариант. Но не в таблицу выводит, а рисует на графике.
Знакомо.Неинтересно.
вывести результаты в таблицу на порядок (или на два порядка) проще, чем нарисовать все эти уровни и на графике.

Поэтому ответ на ваш вопрос о возможности реализации на lua имеет вполне себе утвердительный ответ.
www.bot4sale.ru        t.me/bot4sale
Получать объемы сделок
 
Вот такой вариант. Но не в таблицу выводит, а рисует на графике.
www.bot4sale.ru        t.me/bot4sale
QUIK 8.13 индикаторы перестали загружаться из подпапок., Раньше было лучше...
 
Поместите ваш индикаторкуда вам удобно, а в LuaIndicators создайте прокладку типа


dofile("путь к файлу индикатора")
www.bot4sale.ru        t.me/bot4sale
Оповещения по индикатору
 
Цитата
YURY написал:
Пожалуйста добавьте в программу функцию оповещений по индикатору
посмотрите это. Возможно, подойдёт.
www.bot4sale.ru        t.me/bot4sale
URL in message function
 
message("www.bot4sale.ru")

В сообщении на экране www.bot4sale.ru будет оформлена как ссылка, тут все в порядке. Но при нажатии на эту ссылку открывается проводник, а не браузер. Думаю, что и с другими типами (call-to и прочими будет то же самое)

По умолчанию приложением для открытия URL назначен Хром.

Поправьте.  
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Владимир написал:
swerg, Ну хватит тяфтяфкать, милок! За слова свои отвечать квалификации не хватает - понимаю, но тогда уж приличнее помолчать

Программирование давно и далеко ушло от Фортрана на БЭСМ-6. И даже от Кернигана с Ричи.

Самое простое, что  можно сделать для расширения кругозора, это обратиться к Википедии. Окажется, что существует несколько разных способов организации строкового типа. Я даже ссылку вам дам на русском языке: Строковый тип

P.S. Про ваше героическое прошлое мне известно, про удивительный скрипт тоже. Убедительная просьба больше не хамить, всему есть предел.
www.bot4sale.ru        t.me/bot4sale
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Это Вы с зеркалом разговорились, сударь? Повторяю для бестолковых:  Единственная таблица, из которой я получаю данные для торговли - это ТТТ, а она непустая даже если вообще не соединяться с сервером.
ну ладно. Вот вам несколько примеров. Исключительно чтобы ваша дурь и глупый  апломб были всем видны.

1. Таблица текущих торгов пуста после установки терминала до первого подключения к брокеру

2. Ттт пуста, если в ней нет ни одного инструмента.

3. ТТТ пуста, если запрещены к получению все добавленные в нее колонки параметров. Зависит от набора полей.

4. Ттт пуста утром, если в наcтройках стоит флаг очистки при смене торговой даты. Зависит от набора полей.

5.ттт пуста после очистки данных до начала их перезакачки с сервера брокеоа

наверняка есть и другие моменты и их более чем достаточно.


P.S. Да, мне известно о вашем героическом прошлом, чудесном скрипте и стиве джобсе, который носил вам кофе.
www.bot4sale.ru        t.me/bot4sale
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Что именно "неверно"?
"ТТТ, а она непустая даже если вообще не соединяться с сервером"

вам следует набраться опыта, прежде чем делать безапелляционные утверждения.  
www.bot4sale.ru        t.me/bot4sale
Событие получения данных всех таблиц и графиков после подключения к серверу
 
Цитата
Владимир написал:
Артем, Огласите весь список, пжалста!(с)  

Единственная таблица, из которой я получаю данные для торговли - это ТТТ, а она непустая даже если вообще не соединяться с сервером.

Обычное неверное утверждение.
www.bot4sale.ru        t.me/bot4sale
Добавить аргумент param в колбек OnParam
 
Цитата
Roman Azarov написал:
Добрый день!

Прошу прощения, действительно, допустил ошибку в ответе.
Вызов OnParam происходит при изменении параметра(ов) и, в текущей реализации, функции действительно неизвестно, значение каких конкретно параметров было изменено.

Пожелание по добавлению параметра (массива) для OnParam зарегистрировали, постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.

В случае, если необходимо зарегистрировать какие-либо пожелания по прочим функциям обратного вызова, просим описать их явным образом.
Это пожелание за последние 6-7 лет регистрировалось раза 3, столько же раз было признано целесообразным и 0 раз было реализовано.

Смысла ждать нет.
www.bot4sale.ru        t.me/bot4sale
Добавить аргумент param в колбек OnParam
 
Цитата
Roman Azarov написал:
Добрый день!

Прошу прощения, действительно, допустил ошибку в ответе.
Вызов OnParam происходит при изменении параметра(ов) и, в текущей реализации, функции действительно неизвестно, значение каких конкретно параметров было изменено.

Пожелание по добавлению параметра (массива) для OnParam зарегистрировали, постараемся его рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.

В случае, если необходимо зарегистрировать какие-либо пожелания по прочим функциям обратного вызова, просим описать их явным образом.
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
Цитата
s_mike@rambler.ru написал:
print(string.len("a"))print(string.len("a\0b"))
    Длины разные, но "a" .. "a\0b" = "aa". Проверено в Lua 5.3.5 и 5.4.1. Непорядок. Разработчикам Lua это надо бы довести до сведенья.
Здесь вы опять ошибаетесь

print(#("x" .. "a\0\b"))
4
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата


Цитата
s_mike@rambler.ru написал:
во втором случае результат явно неверен. "a" и "a\0b" - совершенно разные строки.
    Так как символ \0 в Lua это признак завершения строки, то для Lua "a" и "a\0b" - эквивалентные строки.

вот даже так?

print(string.len("a"))
print(string.len("a\0b"))

вообще то это самые базовые вещи.
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
Цитата
s_mike@rambler.ru написал:
dump_tbl ({[{"xx","yy"}]=5}, " ", 0)c dump_tbl ({math.huge}, " ", 0) тоже как то не очень.dump_tbl ({"a\0b"}, " ", 0)Торопитесь,  TGB ..  
  Спасибо за нетривиальные примеры для тестирования.

local str = ""    
for k,v in next, dump_tbl ({ [ {"xx","yy"} ] =5}, " ", 0) do   str = str .. v  end        РЕЗУЛЬТАТЫ теста (в квадратных скобках индексы таблиц)
MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. str)                                             Результат: [table: 0F4ED2F0]   (number) = 5
-------
str = ""    
for k,v in next, dump_tbl ({"a\0b"}, " ", 0) do   str = str .. v  end
MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. str)                                             Результат: [1]   (string) = a
MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. "a\0b")                                        Результат:  a   ---
message ("a\0b")                                                                                                Результат:  a
-------
str = ""    
for k,v in next, dump_tbl ({math.huge}, " ", 0) do   str = str .. v  end
MessageDlg ( 1, 1, "Скрипт", " Результат: \n" .. str)                                             Результат: [1]   (number) = 1.#INF
message (tostring(math.huge))                                                                            Результат: 1.#INF
-----------------------------------------------------------------------------------------
 Я ошибок не нашел. Где они?
в первом примере не раскрыто содержимое таблицы, являющеся ключом. Сериализация это подразумевает. Таблица ключа может содержать вложенные таблицы, которые также должны быть раскрыты.

во втором случае результат явно неверен. "a" и "a\0b" - совершенно разные строки.

в третьем случае 1.#inf не является допустимым числом lua. Это всего лишь нерегламентированное внутреннее представление, которое не может попадать в результат.
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
торОпитесь....
www.bot4sale.ru        t.me/bot4sale
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
TGB написал:
dump_tbl (_G, " ", 0)


dump_tbl ({[{"xx","yy"}]=5}, " ", 0)

c dump_tbl ({math.huge}, " ", 0) тоже как то не очень.

dump_tbl ({"a\0b"}, " ", 0)


Торопитесь, TGB..  
www.bot4sale.ru        t.me/bot4sale
Экспорт ежедневных цен за прошедшие 365 дней, Возможно ли выгрузить и от кого зависит - системы или брокера
 
Цитата
Артем написал:
В продолжении этой темы есть вопрос: Есть ли подобная процедура функция на Lua?
Есть ))
www.bot4sale.ru        t.me/bot4sale
агрегировать значения из таблицы сделок по временному условию
 
Цитата
Владимир написал:
   s_mike@rambler.ru, Да неужели?! И что, тип INTEGER ввели? А если нет, на кой всё это кастрированное убожество

Чем больше визга, тем меньше элементарных знаний.  

сначала нужно читать документацию, а потом выносить свое кастрированное убожество в форум  
www.bot4sale.ru        t.me/bot4sale
агрегировать значения из таблицы сделок по временному условию
 
Цитата
Nikolay написал:
Цитата
Игорь М написал:
Да, 2-ой. И у меня 2-ой. Можно с префиксом "0x" поставить для наглядности: bit.band(trade.flags, 0x4). И bit.band в отличие от bit.test число возвращает. Почему bit.test лучше, чем bit.band - готов узнать.
Кроме быстродействия и наглядности никаких.
В луа 5.3 есть битовые операции.

bit.band(trade.flags, 0x4)

можно заменить на

trade.flags & 0x4
www.bot4sale.ru        t.me/bot4sale
Получить имя исполняемого скрипта., Возможно?
 
В oninit передается путь к скрипту
www.bot4sale.ru        t.me/bot4sale
Сделайте упрощённый вариант
 
Цитата
Алексей написал:
По моим ощущениям принцип создания Квика такой : "Зачем просто, когда можно сложно". Кому-то может и надо столько таблиц, но кто с форекса пришёл, и кто пользовался, например, терминалами от форекс клуба, (Либритек-менее удобен, Румус- по мне так идеальный вариант) не надо столько наворотов. Сделайте кнопку - "Упрощённый вариант", при нажатии на которую выдет что-то похожее на Румус, Либритек или Метатрейдер (на худой конец). И будет всем счастье. И не надо будет читать инструкцию в 1000 листов, чтоб найти две кнопки "Купит" и "Продать" во всей этой мешанине таблиц и стаканов. Стакан по завершении сделки на столе я лучше увижу :)
Зачем мне эти ПДД, педали, руль и всякая дрянь типа адаптивного круиз контроля? Для тех, кто привык на лошади и телеге - все это лишнее.

Никто такой вариант делать не станет.
www.bot4sale.ru        t.me/bot4sale
Данный инструмент запрещен для операции шорт
 
Цитата
Владимир написал:
Господа разработчики! Что за хрень? Я пытаюсь продать СВОИ акции, они у меня ЕСТЬ, они принесли мне прибыль, которую я собираюсь зафиксировать. Какой, в задницу, может быть "шорт"? Раз пять уже такое случалось, но. как правило, со второй или третьей попытки акции всё-таки удавалось продать. Но на этот раз Квик с упорством носорога зудит: "Данный инструмент запрещен для операции шорт". Это глюк в программе или неизвестный мне доселе способ воровства моих денег?
гении обычно болтливы и рассеянны. Они с упорством носорога считают виноватыми всех, кроме себя. А достаточно просто посмотреть чуть внимательнее и окажется, что акции заблокированы выставленными заявками  
www.bot4sale.ru        t.me/bot4sale
QUIK для ARM
 
Да они с тем, что имеется не могут справиться, а вы им предлагаете ещё один продукт себе на шею повесить.
www.bot4sale.ru        t.me/bot4sale
Индекс формирующегося бара.
 
Цитата
Alexander написал:
Цитата
   s_mike@rambler.ru написал:
 
Цитата
Nikolay  написал:
Так я Вам уже написал:

Текущий бар всегда равен Size
 это неверное утверждение  
Вы хотите сказать, что это до сих пор не исправили и Size считает временные интервалы?
Size() совершенно необязательно возвращает номер последнего формирующегося бара инструмента. Это может быть в случае (например) если на диаграмму нанесены графики разных инструментов. И ещё в нескольких случаях.
www.bot4sale.ru        t.me/bot4sale
Индекс формирующегося бара.
 
Цитата
Nikolay написал:
Так я Вам уже написал:

Текущий бар всегда равен Size
это неверное утверждение  
www.bot4sale.ru        t.me/bot4sale
Звуковой сигнал в интерпретаторе lua.exe, Как сделать сигнал beep при запуске программы с помощью lua.exe
 
Возьмите в архиве http://www.bot4sale.ru/download-categories/2012-06-13-15-10-36/item/md.html библиотеку bot4sale64.dll

// PlaySound(sound_file)
// Returns error code (0 if successful) and string error description

require "bot4sale64"
err = bot4sale64.PlaySound("file.wav")  -- mp3 и все остальное тоже


для луа 5.3
www.bot4sale.ru        t.me/bot4sale
Текстовые пояснения на графике, При смене инструмента текстовые пояснения не меняются.
 
Вы хотите, чтобы дедушка бегал стометровку?

он не может. Он старенький.
www.bot4sale.ru        t.me/bot4sale
4.24 Транзакции. Флаги транзакции., Что это такое?
 
«1» – отправлена с помощью файла импорта;
«512» – отправлена с помощью QPILE;
«32768» – отправлена с помощью Trans2Quik;
«131072» – на продажу;
«262144» – отправлена с помощью LUA;
«524288» – отправлена с помощью API клиентского места;
«1048576» – служебная;
«2097152» – на ввод заявки
www.bot4sale.ru        t.me/bot4sale
В индикаторе можно создать безконечную горизонтальную линию?
 
Легко.

function oncalculate()
return 5
end

нарисует вам линию на уровне 5
www.bot4sale.ru        t.me/bot4sale
запуск из работающего скрипта другого скрипта или скриптов
 
Делайте все ваши скрипты всегда запущенными, которые крутят холостой цикл. По внешнему сигналу от управляющего скрипта они от пустого цикла переходят к полезной работе, по второму сигналу - опять уходят в пустой цикл
www.bot4sale.ru        t.me/bot4sale
Добавить в CreateDataSource():SetUpdateCallback() аргумент, указывающий на DataSource
 
Цитата
swerg написал:
Цитата
Imersio Arrigo написал:
Можно ещё лямбду захватывать.
Я так множественные подписки на инструменты делал

Можно кратенький примерчик?
можно обернуть вызываемую в колбеке функцию, чтобы передать ей дополнительные значения. Что то типа такого

http://bot4sale.ru/blog-menu/qlua/379-1-collback-for-al-ds.html
www.bot4sale.ru        t.me/bot4sale
В квике нет WMA?
 
Цитата
Слава написал:
Есть SMA, EMA, a WMA (взвешенная скользящая средняя) такой нет.
WMA
www.bot4sale.ru        t.me/bot4sale
В квике нет WMA?
 
.... В квике есть ...
www.bot4sale.ru        t.me/bot4sale
В квике нет WMA?
 
В этом Вике есть wma, только это не weighted moving average, а villiams moving average
weighted ma можно сделать на луа
www.bot4sale.ru        t.me/bot4sale
PostMessage из LUA
 
Цитата
Михаил Филимонов написал:
Вы пишите, чтобы подключить w32
w32 = require("w32")

Почему нельзя
user32 = require("User32.dll")
потому что связывание в луа идёт по собственным правилам.

Для использования  системные библиотек необходима lua расширение alien.
вот пример использования:

http://bot4sale.ru/blog-menu/qlua/415-win32api-lua.html
www.bot4sale.ru        t.me/bot4sale
Как рисовать трендовые линии RSI?
 
Цитата
swerg написал:
Цитата
Nikolay написал:
Сдвинуть обе метки в скрипте. Индикатор видит новые координаты меток (опрашивает метку) и рисует по ним линию.

Как заставить индикатор отреагировать в нужный момент на какие-то внешние изменения, вот же в чем вопрос.

Цитата
Nikolay написал:
Я обычно метки использую для обратной передачи, когда надо из индикатора передать информацию от пользователя в скрипт. Пользователь метку двигает - т.е. он интерактивно с графика задает какой-то уровень в скрипт.

Кстати да, на передвигании меток можно такой интерактив для управления скриптом замутить!! :) Клёвая идея
я пытался мутить, в общих чертах оно даже работает...

http://www.bot4sale.ru/projects/utils-menu/utils-list/485-how-to-get-trendline.html
www.bot4sale.ru        t.me/bot4sale
Как рисовать трендовые линии RSI?
 
Цитата
swerg написал:
Цитата
Nikolay написал:
А также пишите индикатор, который читает положения парных меток на графике и строит по ним линию.

Если понадобилось сдвинуть всю линию - как дать сигнал заново пересчитать такой индикатор? Может вы знаете? никак не могу придумать
Никак. Только сделать какой-то внешний сигнал и дождаться когда будет вызвана oncalculate на очередной тик или кнопку ок в параметрах индикатора
www.bot4sale.ru        t.me/bot4sale
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 26 След.
Наверх