Владимир Б****ов (Автор тем)

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

Страницы: 1
Имитация SetUpdateCallback(.....)
 
Добрый вечер.

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

Спасибо
Функции O, H, L, C, V, T, вопрос по ds:T(1).count
 
Добрый вечер

В хелпе, в описании функций  O, H, L, C, V, T
есть разъяснение:
Где:  
  • count – количество тиковых интервалов в секунду. Может принимать значения от  «1» до «10000» включительно.
Вопрос: count - это кол-во тиков в секунду?, другими словами кол-во сделок в секунду, или я не правильно понимаю?

Спасибо
Частота получения данных
 
Добрый вечер

Возник такой вопрос: Есть разница в частоте получения данных по разным интервалам
вариант 1 -> CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_M1)
вариант 2 -> CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_TICK)

Разница в организации данных (минутные свечи при INTERVAL_M1) понятна.

Спасибо
Как включить файл в луа?, Есть ли в Луа аналог директивы include из С
 
Добрый день

Есть несколько файлов, во всех примерно один набор переменных, функций. При корректировке приходится менять везде, поэтому появилась идея -> определить все общие переменные и функции в одном файле и включать его/их в файл основной программы.
Какие возможны проблемы при таком подходе (видимость переменных, функций .....)?

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

Спасибо
Снять заявку
 
Добрый день
Не могу разобраться
я выставил заявку (не смотрите, что она рыночная)
     local Transaction={
       ['TRANS_ID']  = tostring(TRANS_ID),   -- Номер транзакции
       ['ACCOUNT']   = ACCOUNT,              -- Код счета
       ['CLASSCODE'] = CLASS_CODE,           -- Код класса
       ['SECCODE']   = SEC_CODE,             -- Код инструмента
       ['ACTION']    = "NEW_ORDER",          -- Тип транзакции ('NEW_ORDER' - новая заявка)
       ['OPERATION'] = "S",                  -- Операция ('B' - buy, или 'S' - sell)
       ['TYPE']      = "M",                  -- Тип ('L' - лимитированная, 'M' - рыночная)
       ['QUANTITY']  = "1",                  -- Количество
       ['PRICE']     = tostring(OpenPrice)   -- Цена
     }

Теперь мне надо ее снять
 local Transaction={
   ['TRANS_ID']  = tostring(TRANS_ID),       -- Номер транзакции
   ['ACCOUNT']   = ACCOUNT,                  -- Код счета
   ['CLASSCODE'] = CLASS_CODE,               -- Код класса
   ['SECCODE']   = SEC_CODE,                 -- Код инструмента
   ['ACTION']    = "KILL_ORDER",              -- Тип транзакции ('NEW_ORDER' - новая заявка)
   ['OPERATION'] = "B",                      -- Операция ('B' - buy, или 'S' - sell)
   ['TYPE']      = "M",                      -- Тип ('L' - лимитированная, 'M' - рыночная)
   ['QUANTITY']  = "1",                      -- Количество
   ['PRICE']     = "0"                       -- Цена
   ["ORDER_KEY"] = TRANS_ID_OLD                -- "<номер снимаемой заявки>"
}

1. Какие варианты снятия существуют: 1-перебор таблицы заявок, 2-снятие по ["ORDER_KEY"], 3-какие еще?
2. не могу найти описание ВСЕХ полей таблицы Transaction, в одних примерах нет поля ["ORDER_KEY"], в других оно есть
3 при выставлении определенных видов заявок, требуется заполнение полей, которые лишены смысла при таком типе заявки и эти поля не помечены как "обязательные"
4.Если я устанавливаю ['ACTION'] = "KILL_ORDER", то такие поля как OPERATION, TYPE, QUANTITY, PRICE (может и другие) вообще теряют смысл? Важно только поле ORDER_KEY - номер снимаемой заявки(если я правильно понимаю назначение этого поля), или и другие поля необходимо заполнять?.

Для тех.поддержки по поводу хелпа к луа
Я, думаю, тут не так много людей, которые пишут что-то подобное игре в "крестики-нолики". Пример этой программы, безусловно, интересен и позволит расширить функционал интерфейса программ на Lua, но хотелось  бы  видеть примеры реализации простейших вещей: выставление заявок(рыночных, лимитированных, условных,...), снятие этих заявок, отслеживание исполнения заявок.

Спасибо
Видимость переменных в калбэк функциях
 
Добрый день

Из за того, что калбэк функции выполняются в других потоках, возник такой вопрос
Например

local var1 = 3
local var2 = 5

function OnInit
 DS:SetUpdateCallback(MyMainProcess)
end

function MyMainProcess(index)
 var3=var1+var2
end

Вопрос: чему будет равняться var3?

ЗЫ: Я понимаю, что это легко выяснить, но калбэк функции в выходной не работают

Спасибо
Хочу знать о заявке все. Алгоритм действий
 
Доброе утро

Хочу знать о заявке все: принята сервером, поставлена в очередь, исполнена частично(сколько сталось), исполнена полностью, снята(пользователем/системой)
Я представляю такой алгоритм
1. sendTransaction() - отправляем на сервер
2. OnTransReply(trans_reply) - ждем и анализируем состояние транзакции.
Если 3 то транзакция выполнена (я считаю, что заявка поставлена в очередь.)
3. Отслеживать исполнение заявки частичное/полное мне надо с помощью OnOrder() или OnTrade() и в чем разница между этими функциями?
4 Что бы снять/изменить заявку мне надо использовать sendTransaction() или что?
По какому параметру определять, что это одна и та же заявка?

Спасибо
Теоретическая разница получения данных CreateDataSource+SetUpdateCallback или getNumCandles()+getCandlesByIndex(), В чем разница получения данных 1 способом и 2 способом
 
Добрый вечер

Собственно вопрос в теме.
Интересует разница в полученных данных разными способами.

Спасибо
Какая версия луа используется в квике?
 
Добрый день

Вопрос в теме

Спасибо
Очередь+Массив, Объединение свойств очереди и массива.
 
Добрый день
В прошлой версии форума я задавал вопрос про массивы и очереди,
так вот - разобрался!!! Выкладываю код, может кому понадобится
*********************************
Queue = {}

function Queue.new(q_size)
   return { first = 0, last = -1, max_size = q_size }
end

function Queue.push( queue, value )
   queue.last = queue.last + 1
   queue[queue.last] = value
   
   if queue.last >= queue.max_size then
local val = queue[queue.first]
queue[queue.first] = nil
queue.first = queue.first + 1
   end
end

function Queue.pop( queue )
   if queue.first > queue.last then
 return nil
   end

   local val = queue[queue.first]
   queue[queue.first] = nil
   queue.first = queue.first + 1
   return val
end

function Queue.empty( queue )
   return queue.first > queue.last
end

function Queue.get( queue, pos)
   if queue.first > queue.last then
 return nil
   end
   if pos > queue.last then
 return nil
   end

   local val = queue[queue.first + pos]
   return val
end
*********************************
Использование:
q = Queue.new(5) -> Создаем очередь фиксированной длины, в данном случае - 5 элементов. По мере добавления новых элементов, лишние(свыше 5) удаляются
qq = Queue.new() -> Создаем очередь бесконечной длины
v1 = Queue.get(q,0) -> Доступ к элементу
v2 = Queue.get(q,1) -> Доступ к элементу
v3 = Queue.get(q,2) -> Доступ к элементу
v4 = Queue.get(q,3) -> Доступ к элементу
v5 = Queue.get(q,4) -> Доступ к элементу
v6 = Queue.get(q,5) -> Доступ к элементу


Если ГУРУ заметят ошибки в коде - прошу высказать!!!
Страницы: 1
Наверх