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

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

Страницы: 1
Открытие графика скриптом LUA
 
Вот так:
Код
function OnTableEvent(t_id, msg, par1, par2)
    if msg == QTABLE_LBUTTONDBLCLK then
   local image, value = GetCell(t_id, par1, par2)
   message(par1..":"..par2)
   message(image)
   message(value)
end
?

Значения par1 и par2 выдает, далее выдает пустые значения
Открытие графика скриптом LUA
 
Здравствуйте, скрипт на lua создает таблицу с инструментами и котировками. Я нашел как по клику на строку таблицы перехватывать и обрабатывать событие:
Код
function OnTableEvent(t_id, msg, par1, par2)
    -- Если был клик левой кнопкой
    if msg == QTABLE_LBUTTONDBLCLK then

   local top, left, bottom, right = GetWindowRect(t_id);
   message ("coordinates: "..top..", "..left..", "..bottom..", "..right);
        -- Если это общий стоп
   if par1 == 1 -- Номер строки
       and par2 == 1 then -- Номер колонки
      
           -- Вызываем необходимую функцию
         
   else      
       if par2 == 2 then
         
           -- Вызываем необходимую функцию
         
       end
   end
    end
end

Два вопроса: 1) Можно ли получить содержание кликнутой строки/ячейки таблицы? 2) Можно ли в lua открыть график Quik с параметрами по умолчанию (график цены и объёма, подобный тому который можно построить в таблице Текущих торгов по правой кнопке мышки)?
Якорь в таблицах созданных из LUA
 
Здравствуйте,

возможно ли из Lua при помощи CreateWindow создать таблицу, у которой был бы якорь, так чтобы отображаемые в ней бумаги привязать к графику?
Получение значения пунктирной линии в Stochastic Oscillator, Доступ к индикатору Stochastic Oscillator графиков через LUA
 
Цитата
Alexander Kopyatkevich написал:
Здравствуйте!
Попробуйте прописать параметры через запятую.
То есть, должно быть так:
so1, so2  = funcSO(i, { }, ds)
Спасибо, получилось!
Получение значения пунктирной линии в Stochastic Oscillator, Доступ к индикатору Stochastic Oscillator графиков через LUA
 
Здравствуйте, пробую получить данные Stochastic Oscillator следующим образом:
Код
dofile(getWorkingFolder().."\\LuaIndicators\\SO.lua") 


funcSO = SO() 


local ds, error_desc = CreateDataSource(class_code, sec_code, interval)


local so1 = {}
for i=1,ds:Size() do
   so1[i] = funcSO(i, { }, ds)
end 


message (so1[ds:Size()])

Получаю таким образом параметр %К. А параметр %D (пунктирную линию этого индикатора) тогда как получить?  
Формат чисел для стоп-заявок
 
Здравствуйте,

при выставлении заявки "Тэйк-профит и Стоп-лимит" мне для разных бумаг приходится по разному форматировать защитный спред и отступ.

Например,

для FEES минимальный шаг цены 0.00002 и достаточно
Код
      ["OFFSET"]              = tostring(10*SEC_PRICE_STEP),
А у VTBR минимальный шаг цены 0.000002, и он при форматировании tostring отображается как 1е-005 и его прихолится форматировать уже как
Код
      ["OFFSET"]              = string.format("%f", 10*SEC_PRICE_STEP),
Не соображу как однообразно сделать для всех бумаг.  
Параметр "На покупку", состояние счета
 
Пока сделал за два циклы - сначала продаю половину, чтобы выйти в ноль, затем перезапускаю портфель, чтобы обновилась таблица Купить/Продать, получаю новые данные и докупаю сколько нужно.
Параметр "На покупку", состояние счета
 
Цитата
сергей пишет:
Цитата

А может не стоит париться и всегда отнимать один лот, чтобы наверняка?
Так а вдруг произошло такие изменение котировки, что там уже 2 или 3 лота не хвататет
Параметр "На покупку", состояние счета
 
Цитата
сергей пишет:
Вот куда-куда я не программист, но считаю что это нормально.
Во-первых не понятна суть фразы-сразу после сделки. Речь о новой строке в таблице сделок?
Думаю здесь кроется приоритет отправки данных с сервера клиентуклиенту...
Простая аналогия :
Заезжаете на заправку и хотите полный бак. Только после его заправки (сделка) идёте (задержка) за сдачей от предоплаты (лимиты).
Возможно стоит указать в коде sleep перед очередной проверкой параметра после сделки, я в этом не секу.
В qpile нет sleep-а, кажется, но я пробовал гонять пустые циклы, задерживая на 3-4 секунды, не помогает, таблица Купить/Продать обновляется только после завершения расчета всего портфеля
Параметр "На покупку", состояние счета
 
Привожу пример:

например у меня в портфеле 100 лотов Сбера (купленных на имеющиеся средства + на все плечо по максимуму). seccode = "SBER". Я хочу перевернуться, т.е. продать 200 лотов, чтобы получить -100.

Код
infoBuySell = GET_CLIENT_MARGINAL_BUY_SELL_INFO (firm_id, client_code, classcode, seccode,0)
limitCanSell = floor(GET_VALUE(infoBuySell,"CAN_SELL")/lotSize)

Переменная limitCanSell выводит 200, если УДС больше 1, т.е. если стоимость портфеля не опустилась ниже уровня Начальной маржи в таблице Клиентского портфеля. Но если опустилась ниже, то УДС становиться меньше 1, и переменная limitCanSell выдает 100, т.е. ровно столько, сколько мне надо продать, чтобы выйти в ноль.

Получается, что при УДС меньше 1, я не вижу сколько я могу купить с учетом плеча. Может быть я могу купить все 200, а может быть после продажи 100 лотов я потеряю средства и смогу купить только 99 лотов. Чтобы определить кол-во лотов, на которое я могу перевернуться, я, получается, должен сначала выйти в ноль - продать 100 лотов, затем посмотреть в таблицу Купить/Продать и купить то кол-во которое в ней указано.Но у меня получается вот что:



Код
infoBuySell = GET_CLIENT_MARGINAL_BUY_SELL_INFO (firm_id, client_code, classcode, seccode,0) 
limitCanSell = floor(GET_VALUE(infoBuySell,"CAN_SELL")/lotSize)


' переменная выдает limitCanSell = 100


подаю заявку на продажу 100 SBER. И снова проверяю:

infoBuySell = GET_CLIENT_MARGINAL_BUY_SELL_INFO (firm_id, client_code, classcode, seccode,0) 
limitCanSell = floor(GET_VALUE(infoBuySell,"CAN_SELL")/lotSize)


' Переменная снова выдает limitCanSell = 100


А в таблице Купить/Продать написано 99! И Таблица обновляется только после того, как закончился расчет портфеля. Т.е. Во время расчета портфеля я не могу получить новые данные из этой таблицы, это так? И что же тогда делать?

Другой пример, у меня УДС больше нуля и limitCanSell выдает мне 200, я продаю 100, чтобы получить ноль и снова проверяю таблицу, чтобы проверить, а могу ли я купить еще 100:


Код
infoBuySell = GET_CLIENT_MARGINAL_BUY_SELL_INFO (firm_id, client_code, classcode, seccode,0) 
limitCanSell = floor(GET_VALUE(infoBuySell,"CAN_SELL")/lotSize)

' Переменная выдает limitCanSell = 200


подаю заявку на продажу 100 SBER. И снова проверяю:

infoBuySell = GET_CLIENT_MARGINAL_BUY_SELL_INFO (firm_id, client_code, classcode, seccode,0) 
limitCanSell = floor(GET_VALUE(infoBuySell,"CAN_SELL")/lotSize)


' Переменная выдает снова limitCanSell = 200


А в таблице уже 99!
Параметр "На покупку", состояние счета
 
Сделать то сделал, но столкнулся со следующей проблемой:

если сразу после продажи/покупки ценной бумаги обратиться к этой таблице, она выдает старое значение, которые было до продажи/покупки, таблица Купить/Продать обновляется только на после того, как завершился цикл выполнения портфели я начался следующий. Это нормально?
Параметр "На покупку", состояние счета
 
Спасибо, так и сделал
Параметр "На покупку", состояние счета
 
Здравствуйте,

не могу найти, к какой таблице можно обратиться в QPlie, чтобы получить кол-во лотов, которые еще можно купить на остаток средства с учетом плеча?

Чисто визуально я смотрю это в таблице "Состояние счета" (Меню "Торговля"->"Состояние счета"), выбираю от там нужный счет, нужный код клиента, режим Т2 и смотрю колонку "Купить", но через QPile не соображу, как туда добраться.
Страницы: 1
Наверх