sergei (Автор тем)

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

Страницы: 1
отлогинивается постоянно сразу после залогинивания, предлагает через 10 секунд заново залогиниться - кнопочка ОК
 
дд!

сабж. конкретно достал. сегодня залогинивался больше часа - начал еще до начала торгов, до 11 залогиниваюсь - отваливается, и по кругу.
техподдержка втб говорит, дело в скорости соединения. очень вряд ли. смотрю потоковое видео (не одновременно, а вообще).
канал 100 мбит по шнурку, реальная не меньше 40/30 на скачивание/закачивание.
в настройках где-нибудь есть возможность увеличить время ожидания до разрыва?
в ff иногда появляется сообщение, что страница тормозит браузер. пропадает через несколько секунд.
спасибо!
левые котировки, getCandlesByIndex()
 
добрый день!

беру данные так:
Код
    local num = getNumCandles(graphId)
    local candles, num, _ = getCandlesByIndex(graphId,0,0,num)

Возникают две проблемы, которые есть суть одной.
Если вот так я хочу перебрать внутри свечки все значения с минимальным шагом инструмента (MinPriceStep), то...

Код
        for z = candles[i].low, candles[i].high, MinPriceStep do
...то:
1. candles[i].low фьючерса нефти, например, может оказаться такой: 73.270000000001 при шаге цены 0.01
2. в результате такой штуки цикл регулярно выполняется на итерацию меньше (что, в общем, понятно, когда low или high на 0.00000000001 больше или меньше допустимой

Как бы вопрос-то сформулировать...
ЧТО ЗА ФИГНЯ?! :)
сортировка таблицы, ключ и значения - натуральные числа
 
Добрый день

Пытался найти максимумы-минимумы в таблице.
Код
        table.sort(TBsorted)

        for key, val in pairs(TBsorted) do
            lst = lst..key.." - "..val.."\n"
        end
Выводит подобное:
Цитата
64287 - 7
64282 - 1
64284 - 27
64286 - 112
64281 - 16
64280 - 1
64285 - 10
64278 - 2

Использование функции в table.sort тоже никак не помогает почему-то.
Вопросы:
1. почему не сортирует вообще никак, ни по ключу, ни по значению, хотя то и другое - натуральные числа?
2. как отсортировать значения, сохраняя ассоциации с ключами?
3. известен ли лучший способ поиска максимумов-минимумов без сортировки?

Максимумов-минимумов может быть несколько. В приведенном конкретном случае, если бы ключи были отсортированы, хотелось бы найти волны макс.-мин.-макс.-мин. таким образом, чтобы максимумы и минимумы стояли друг от друга не ближе какого-то диапазона. При этом в абсолютных значениях максимумы могут не быть самыми большими числами, а минимумы - самыми маленькими
Цитата
64278 - 2
64279 - 0 min
64280 - 1
64281 - 16 max
64282 - 1
64283 - 0 min
64284 - 27            - не max, хотя и больше 64281 - 16, т.к. слишком близко к min
64285 - 10            - не min, слишком близко к max
64286 - 112 max
64287 - 7
Как и где правильно написать условие по выполненной заявке?, ...когда она не перемещена, не убита, а именно полностью filled?
 
В документации и на форумах много разных вариантов проверки. Какой гарантирует, что заявка была на 100% filled?
"Не активна" + "исполнена" почему-то не работает.
Только флагами и непосредственно в OnTrade() определяется или без order.balance не обойтись?



OnTrade()?
Код
if bit_set(trade.flags, 0) == false and bit_set(trade.flags, 1) == false then

OnOrder()?
Код
if bit.band(order.flags,2) > 0 then
Как бороться с неоднозначностью в заявках и сделках?, OnOrder(), OnTrade()
 
Добрый день!

Погряз в рутине с заявками и сделками.
На соседних ветках тут уже были предложены решения. В частности, от уважаемого _sk_, например.

Но, блин, это ж надо операционную систему написать...

Кто как борется с неоднозначностями?

Например, прилетает мне сделка в OnTrade(). И я знаю наверняка, что прилетит еще её дубль, а может, и в третий раз сработает.
Как узнать, это просто дубль пришел или моя заявка последовательно разбирается частями? В отличие от OnOrder(), в OnTrade() нет поля остатка balance (что и логично). Есть только qty. И чем тогда отличается повторное срабатывание от нового на такой же объем? trade_num у них одинаковые. Все остальное (order_num, trans_id, ...) тоже. Заявка-то одна была.

В саму заявку тоже не очень посмотришь. Во-первых, порядок срабатывания OnOrder(), OnTrade() достоверно не предопределен. Во-вторых, там свои неоднозначности. Допустим, использую я move_order. Прилетает сделка, а заявка еще пришла, а если пришла в OnOrder() и "исполнена", то надо еще разобраться, что это означает: а) успела исполниться старая заявка до перестановки, б) успешно переставилась, в) исполнилась уже новая после перестановки.


Есть ли компактные решения менее 1000 строк? :)

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

Кажется, я туплю на пустом месте.
Проблема в описании темы: функция MyLog видна с срабатывает при OnInit(), в OnStop(), в другие моменты функция "исчезает". В частности, в NewOrder() ругается.



function myLog(msg)end

function NewOrder()
   myLog(msg)    -- ругается так: attempt to call global 'MyLog' (a nil value)
end

...

function OnInit()
   myLog(msg)    -- срабатывает
end

function main()
end

function OnStop(stop_flag)
   myLog(msg)    -- срабатывает
end

function OnOrder(order)
   myLog(msg)
end

function OnTrade(trade)
   myLog(msg)
end

function OnQuote(class_code, sec_code)
   ..
   NewOrder()
   ..
end
Изменяя копию таблицы, меняется оригинальная таблица., Особенность языка lua?
 
Обнаружил неприятную (для себя) штуку. Нужно проанализировать как-то таблицу. В моем конкретном случае понадобилось выбросить несколько максимальных значений и найти среднее среди остальных.


Соответственно, я создал копию таблицы простым присваиванием. Затем отсортировал копию, по неполному циклу прогнал этот массив - сложил элементы, потом разделил на число оставшихся элементов. Обнаружил, что после сортировки оказалась отсортированной и оригинальная таблица. Что за фигня? Очень непривычная особенность языка.

Получается, когда я присваиваю массив, я фактически просто создаю ссылку на оригинальный массив. При обращении по любому имени редактируются одни и те же данные? Как создать фактическую копию таблицы? По элементам в цикле присваивать? :))
странный update quik, onTrade 3-6 раз
 
Добрый день

Сегодня согласился обновить файлы в Quik, получил проблемы с роботом.
Суть: ранее OnTrade вызывался только один раз, а теперь по 3-6 раз. Ранее многочисленные вызовы колбэк-функций наблюдал только в OnOrder.
Кроме того, дважды сегодня Quik самопроизвольно упал, чего раньше не наблюдалось. Может, просто совпадение...
Текущая версия 7.2.1.5.

Не вполне понятно, что делать c множественными вызовами OnTrade. Допустим, в заявке был указан объем 2. Из этого объема прошла сделка объемом 1. Потом пришел новый колбэк OnTrade с объемом 1 и тем же идентификатором заявки. Как понять, это повторное срабатывание OnTrade на первую половину или до конца уже исполнилась заявка, т.е. вторая половина пришла?

Кто-то еще поимел подобные проблемы... и проблемы ли это вообще? :)

Спасибо!
Полностью ли выполнена заявка?
 
Добрый день
Как узнать, полностью ли выполнена заявка?
Из мануала:
бит 0 (0x1)  Заявка активна, иначе – не активна  
бит 1 (0x2)  Заявка снята. Если флаг не установлен и значение бита «0» равно «0», то заявка исполнена  

Не понятно значение второго поля (то есть, бита "1")
Судя по первому предложению ("Заявка снята"), он должен быть "1", когда заявка снята.
Судя по второму предложению ("Если флаг не установлен..."), он должен быть "0", как и первый бит... иначе получается, что заявка еще не снята, а до сих пор актуальна.

Итак, "0" и "0" или "0" и "1"?

Спасибо!
Расчет EMA, Формула расчета в Quik?
 
Добрый день!
Не понятно, как считаются EMA в Quik.
Нужно посчитать EMA вне Quik (анализ исторических данных), а в реальной торговле я беру EMA из Quik. Соответственно, очень хотелось бы, чтобы расчетная EMA совпадала с фактической EMA.
Текущее понимание вещей:
1. для расчета EMA используется EMA предыдущей свечи
2. для расчета самой первой EMA какого-то отрезка берется среднее арифметическое (МА) того же периода (точно ли???)
3. Quik хранит около 3000 свечей в истории

Для малых периодов проблема не стоит остро. Если считать EMA с периодом 200, например, то после 3000 свечей расчетная EMA200 и фактическая EMA200 близки с разумной погрешностью, а вот когда я пытаюсь посчитать EMA2000, например, то тут "жесть" полная. Погрешность такая "конская", что анализ ист. данных теряет смысл.

Опыты показали, что МА2000 из Quik действительно отступает от первой свечки цены актива на 2000 позиций (как и первая EMA200 появляется после 200 свечек цены). Итак, первая точка EMA2000 появляется на 2001 свечке в соответствии с ожиданиями. Однако, эта первая точка явно не равна среднему арифметическому close первых 2000 свечей цены. На левом конце EMA2000 самая гигантская погрешность. С расчетом последующих свечек по формуле $emaPrev + (2*($LastClose - $emaPrev)/($period + 1)) погрешность уменьшается, но к моменту торговли, т.е. после еще 1000 свечек она все еще остается гигантской и неприемлемой.

Что делать?
MoveOrder - цену меняет, а объем не меняет. Что это., Пытаюсь использовать стандартные возможности функции. Не меняется объем. На новую позицию заявка переезжает.
 
TransInc = TransInc + 1
   t = {
       ["ACTION"] = "MOVE_ORDERS",
       ["CLASSCODE"] = clssS,
       ["SECCODE"] = localInstr,
       ["ACCOUNT"] = clntS,
       ["CLIENT_CODE"] = clntS,
       ["MODE"] = "0",
       ["FIRST_ORDER_NUMBER"] = tostring(id),
       ["FIRST_ORDER_NEW_PRICE"] = tostring(price),
       ["FIRST_ORDER_NEW_QUANTITY"] = tostring(val),
       ["TRANS_ID"] = tostring(TransInc)
   }
   res = sendTransaction(t)
По-разному определяется размер таблицы, #table может выдавать разные значения
 
Добрый день

Искал у себя баг, не нашел. Очень похоже на то, что #table выдает разные значения. У кого-то случалось, что #table == 0, когда там точно что-то есть? Если это возможно, переформулирую: как надежно определить число элементов?

Спасибо!
move_orders, Send Transaction - замена заявки
 
Добрый день

Не понятен механизм замены заявки на другую. Что именно не понятно:
1. почему там сразу для двух заявок цена, количество и номер? Их вообще две или больше? =)
2. нужен ли TRANS_ID или вместо него и используется один/два first/second_ORDER_NUMBER?
3. откуда брать номер заявок - из OnOrder(order_num) или OnTransReply (trans_id)?
4. что будет происходить, если одна из заявок уже исполнена?
5. вместо ответов можно одну ссылочку дать на исчерпывающее руководство... я такого пока просто не нашел, гуглю примеры, коих считанные штуки

Спасибо!
Страницы: 1
Наверх