Игорь М (Все сообщения пользователя)

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

Страницы: 1 2 3 След.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Цитата
Игорь М написал:
 
Цитата
VPM написал:
Прислушался к автору, "Таблицы в Lua — это не одна из структур данных, — это единственная структура данных.",
перевожу все переменные в формат таблицы луа,
не знаю поможет?
 Я думаю, что автор будет впечатлён.
Не понимаю к чему этот сарказм?
Да какой сарказм-то... Я реально думаю, что автор будет впечатлён тем, что его фраза "Таблицы в Lua —... — это единственная структура данных" способна вызвать действие "перевожу все переменные в формат таблицы луа". Что это такое "перевожу все переменные в формат таблицы луа", как и зачем?
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Прислушался к автору, "Таблицы в Lua — это не одна из структур данных, — это единственная структура данных.",
перевожу все переменные в формат таблицы луа,
не знаю поможет?
Я думаю, что автор будет впечатлён.
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Вы разделите проблему на части, а то непонятно, что у вас не получается. В теме написано, что пытаетесь метку вывести. Так создайте простую метку, попробуйте её вывести, если выводится, то с остальными проблемами разбирайтесь
Получить данные свечи у правого края окна (на истории)
 
Цитата
Сергей написал:
Может быть найдутся другие пути, чтобы передвинуть график в окне, например инициировать событие нажатия на стрелочку, которой передвигается график.
Не та задача для настолько сложных подходов. Колхозный метод получения данных свечи такой: Ставите метку на график на оси той свечи, которая нужна (в вашем случае правая крайняя). Ставите её таким образом, чтобы она была по итогу вне границ графика (например, под осью времени внизу). Это чтобы метка не маячила и вы её случайно не задели. Снимаете с неё галки "Перемещать со шкалой времени" и  "Перемещать со шкалой цены". Дальше определяете её идентификатор простым скриптом. Если график новый, то идентификатор равен 1. Дальше в цикле эпизодически будете эту метку опрашивать и она будет отдавать вам реальные координаты времени, по которым будете брать данные с уже текущей свечи графика, которая будет с этой меткой на одной вертикальной оси. Если будете удалять все метки на графике, то удаляйте через скрипт, который не будет трогать вашу поставленную метку (её сделайте с каким-либо редким шрифтом, чтобы по нему идентифицировать). Это всё работает на данный момент.
Получить данные свечи у правого края окна (на истории)
 
Цитата
Сергей написал:
Хотел написать программу, которая бы при просмотре свечей в одном окне (допустим на М5), сама пододвигала график в окнах других ТФ
"Данные последней видимой в окне свечи (у правого края экрана)" получить можно, но колхозным способом. Для решения вашей задачи это не поможет, так как средствами Qlua нельзя двигать графиками.
getitem и тип сделки. маркет-мейкер маркет-тейкер
 
Цитата
Kolossi написал:
Как всегда, хороший вопрос перевели в срач.
В продолжение темы: насколько реально когда-нибудь объем свечи ds:V(n) получать в виде V(n).maker+V(n).taker?
Так это и 10 лет назад можно было, ещё на Qpile такое писали. Пишете скрипт, который ТОС обрабатывает, и выводите результат в таблицу или метками на график.
getitem и тип сделки. маркет-мейкер маркет-тейкер
 
Цитата
Владимир написал: Во-вторых, эти данные нафиг не нужны: при подаче заявке мы не можем гарантировать, будет ли сделка тейкерной или мейкерной, а после того, как сделка состоялась, это и тем более никому не интересно.
Можем. Для этого всё и делалось. Мейкерная заявка с условием "Только пассивная" (скриптом или руками) поданная по рынку будет отклонена биржей. Обсуждали уже здесь.
getitem и тип сделки. маркет-мейкер маркет-тейкер
 
Цитата
Glukator написал:
А вопрос-то правильный, интересный и нужный. И хорошо бы узнать, что скажут об этом разработчики.
Поскольку внятного ответа так и не было, подниму тему вновь. Вопросов здесь, на самом деле, два:
1. Какой параметр в таблице сделок (или в данных, получаемых от прерывания OnTrade) позволяет определить, была ли сделка "тейкерной" или "мейкерной" в том смысле, что заложен в комиссионные тарифы Мосбиржи?
2. Зависит ли передача этого параметра в терминал пользователя от настроек на стороне брокера?
Нет там проблем никаких. Просто nshch спутал Сделки с Заявками и выкатил сюда описание битовых флагов для Заявок. В описании флагов для Сделок всё есть:
бит 5 (0x20) Пассивная сделка («Состояние» — «П»)
бит 6 (0x40) Активная сделка («Состояние» — «А»)
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Цитата
Nikolay написал:
Цитата
Игорь М написал:
Причем здесь какой-то мой алгоритм? Подняли тему и я написал,что TRADINGSTATUS криво работал раньше, написал что проверю снова. Вот проверил, ничего не поменялось. Написал сюда, чтобы люди, которые будут потом читать, не тестировали заново. Резюмируя: TRADINGSTATUS - бесполезная мура, 10-15 секунд это перебор для любых систем. За эксклюзивную информацию о том, что "система торговли Квик - это не тот инструмент, что стоит использовать" для "мгновенной реакции", низкий поклон, конечно.  ::  

Вы же говорите, что задержка в 15 секунд для Вас критическая. Я пока не видел с этим проблем, для любых торговых систем. Совершенно разные мнения.
Я такого не писал. Она для меня не критическая, я TRADINGSTATUS не использую. Я имел в виду, что если такая простая опция, как определение статуса сессии, имеет задержку в 10-15 секунд, то этим не следует пользоваться в любых системах. Она просто тупо неправильно работает. Не может быть в современных реалиях такой задержки. Возможно, когда-то она работала правильно, но потом что-то поменялось, а её не исправили. Она стабильно выдает нереальную задержку - это баг.
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Цитата
Nikolay написал:
Цитата
Игорь М написал:
Для информации: проверил снова за эти два дня, как были раньше неадекватные задержки, так и остались. Значения писались в лог при их изменении (SiU3):
140514.690: status: 1

Вчера статус на 11-ой секунде после возобновления торгов поменялся, а сегодня на 15-й.
Если Ваш алгоритм требует мгновенной реакции, то, видимо, стоит задуматься, что система торговли Квик - это не тот инструмент, что стоит использовать. Хотя, конечно, можно дополнить получение статуса косвенными методами. Получите статус по тому, какой сработает быстрее.
Причем здесь какой-то мой алгоритм? Подняли тему и я написал,что TRADINGSTATUS криво работал раньше, написал что проверю снова. Вот проверил, ничего не поменялось. Написал сюда, чтобы люди, которые будут потом читать, не тестировали заново. Резюмируя: TRADINGSTATUS - бесполезная мура, 10-15 секунд это перебор для любых систем. За эксклюзивную информацию о том, что "система торговли Квик - это не тот инструмент, что стоит использовать" для "мгновенной реакции", низкий поклон, конечно.  :smile:  
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
Для информации: проверил снова за эти два дня, как были раньше неадекватные задержки, так и остались. Значения писались в лог при их изменении (SiU3):
134806.371: status: 1
134806.372: phase: 2
134806.372: session: 0
140008.938: status: 0
140008.938: phase: 1
140511.145: phase: 2
140514.690: status: 1

Вчера статус на 11-ой секунде после возобновления торгов поменялся, а сегодня на 15-й.
QLua — Получить время возобновления торгов, "Старт торгов ... установлен с хх:хх:00 мск."
 
По поводу TRADINGSTATUS: Я когда-то тестировал его и, если не ошибаюсь, он криво работал. Он в 14:05:10 показывал 0, хотя торги уже 10 секунд шли, и лишь на 11-ой секунде он стал 1. Такая же история и с вечерней сессией. Надо в понедельник проверить снова.
Как получить полное наименование фьючерса?
 
Цитата
Николай написал:
С одной стороны грустно, что нет такой информации. С другой стороны хорошо, что я не зря писал такую функцию, которая по коду фьючерса выдает его наименование. Если кому-то нужно - то пользуйтесь. :-)

https://nikolai-antonov.ru/scripts/giveFullName.lua

Правда, функция обрабатывает только те фьючерсы, которые были доступны у моего брокера (ВТБ).
Я вам код подкорректировал. Лучше это через таблицу сделать. Не благодарите.
Код
local t_full_name_fut = {
     RI = "Фьючерсный контракт на Индекс РТС",
     Si = "Фьючерсный контракт на курс доллар США - российский рубль",
     -- ......
     KZ = "Фьючерсный контракт на курс казахстанский тенге – российский рубль"
    }
    
local function getFullSecCode (sec_code)
   if type(sec_code) == "string" then
       return t_full_name_fut[string.sub(sec_code, 1, 2)]
     else
       return nil           -- или что-то другое
   end
end

message ("Код инструмента: " .. tostring(getFullSecCode("RIU3")))     -- --> Фьючерсный контракт на Индекс РТС
message ("Код инструмента: " .. tostring(getFullSecCode("abcdef")))   -- --> nil
message ("Код инструмента: " .. tostring(getFullSecCode(nil)))        -- --> nil
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Код
  Кое что нашел:

 true   -  флаг установлен
 false   -  флаг не установлен
 -- Функция проверяет установлен бит, или нет (возвращает true, или false) 

-------

где: 
х – значение; 
n – номер бита. Нумерация битов начинается с « 0 ».
  

Всем спасибо, кое что понял!
На это невозможно смотреть.  :smile:    У вас есть руководство пользователя "Интерпретатор языка Lua" ? Там в п. 6 описаны все функции для работы с битовыми масками. Зачем вам эта гроздь elseif-ов или test? test для теста. Пример:
Код
       local order = getItem("orders", i)                             -- получение таблицы данных из i-ой строки ТЗ

       if order and order.flags & 5 == act_direction and order.sec_code == SEC_CODE then       -- если есть активная заявка рабочего инструмента заданного направления
Вы здесь за один удар определяете и то, что у вас заявка активная и то, что она купля/продажа (5: 00000101). Если act_direction = 1, то это активная на покупку, если act_direction = 5, то это активная на продажу. Сразу, не выясняя по отдельности биты флагов.
Еще пример:  
Код
       if order.flags & 1 == 1 then                                    -- соответствующая заявка активна (исполнена частично)

              -- бла бла

         elseif order.flags & 2 == 0 then                              -- соответствующая заявка исполнена полностью

           if order.qty > trades_qty_order[order.order_num] then         -- количество контрактов в заявке больше суммарного количества контрактов всех сделок, соответствующих этой заявке
              -- бла бла
             else                                                            -- заявка полностью исполнена (все соответствующие данной заявке сделки появились в ТС и были обработаны)
              -- бла бла
           end

         else                                                          -- соответствующая заявка исполнена частично и снята

           if order.qty - order.balance > trades_qty_order[order.order_num] then   -- исполненная часть заявки больше суммарного кол-ва контрактов всех сделок, соответствующих этой заявке
              -- бла бла
             else                                                            -- все сделки, которые соответствуют исполненной части заявки, появились в ТС и были обработаны
              -- бла бла
           end

       end
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Ziveleos, Спасибо!

Можно утверждать что такая запись надежна?
Цитата
VPM написал:
nikolz, Я про надежность какой вариант надежней? Или все безопасно?
В фрейморке HackTrade так было написано не из-за надежности, а из-за отсутствия побитовых операций в Lua52 на тот момент, они только в 2015 году появились в Lua53.
Как запустить скрипт qlua из командной строки?
 
Цитата
Alexander написал:
Да, действительно не надо его постоянно удалять и заново загружать. А я вот так тупил всё это время. Я просто начинал с QPILE и там постоянно надо было скрипт загружать локально.
Я некоторое время на Qpile еще и каждый раз заново таблицу создавал без надобности.
Как запустить скрипт qlua из командной строки?
 
Цитата
Alexander написал:
Я хочу более простого подхода. Зачем мне все эти лишние телодвижения? Я и так уже написал программу на C++, которая сам запускает квик, ждёт появление окна логина, вводит логин и пароль, запускает программу DebugView, получает ID процесса квика, настраивает фильтр в DebugView по этому ID, сама отвечает на вопрос диалогового окна не обновлять инструменты и нажимает в окне на OK. Всё это упрощает мои действия, которые мне приходилось бы делать руками. Вот и тут я не хочу руками постоянно сохранять скрипт, в квике удалять старый скрипт, загружать новый, опять его запускать, иногда можно запариться и не удалить старый и запустить, или внести изменения в скрипт и забыть по запарке сохранить и в квике загрузить тот же самый предыдущий скрипт. Конечно это уже делается на автомате и практически без таких ошибок, но иногда по запарке можно и накосячить на голом месте. А зачем всё это надо? Есть же нормальные простые решения для этого.
Зачем вы удаляете в Квике старый скрипт и загружаете новый? Вы каждый раз сохраняете его под новым названием? Вы в этой теме потратили на написание текста времени больше, чем сэкономите за ближайшие 2 года, реализовав вот это вот всё, а может и не сэкономите. У вас какая-то автоматизация ради автоматизации. Вот вы в блокноте отредактировали скрипт, допустим у вас там сообщения контрольные вставлены или запись в лог файл, сохранили вы его и кнопку запуска скрипта в Квике нажали. Всё. Что вы тут сэкономите? Да, бывает не нажал Ctrl S, но это редкость, в том же Notepad подсветка меняется и * в панели задач на несохраненном видна. Ради этого редкого события?
В чём преимущество OnInit
 
Вы писали, что используете OnTrade и обрабатываете в мэйне, хотя у вас в OnTrade  аж 250 мс обработка, ну это ладно.  Наверху большим количеством текста спорили с TGB , что лучше. Я кратко  описал возможные варианты, даже не для вас, а для тех кто читает. В том  варианте, что используете вы (только с одной функцией обратного вызова OnTrade), разницы между OnTrade и getNumberOf  ('trades') с вашей скоростью опроса нет. Кому, что нравится, то он и  делает.
В чём преимущество OnInit
 
Цитата
Владимир написал:
Игорь М, Ну, я обрабатываю в мейне, на флаг изменения состояния OnTrade мне насрать - я даже не знаю, что это такое. OnTrade лишь записывает данные в стек, код я приводил.
В коде у вас изменение размера стека. Это и есть флаг изменения состояния OnTrade.
В чём преимущество OnInit
 
По поводу getNumberOf ('trades') vs OnTrade:  Всё зависит от того, где вы обрабатываете. Если из мэйна флаг изменения состояния OnTrade в цикле опрашивать, чтобы потом всё в мэйне обработать, то особой разницы между опросом в цикле изменения количества сделок getNumberOf ('trades') и этого флага в OnTrade практически нет, без OnTrade тогда проще. А если 2+2 непосредственно в OnTrade складываете и в мэйне обработки нет, то тогда не нужно с getNumberOf ('trades') заморачиваться. Всё зависит от трудоемкости обработки сделки, у каждого свой случай.
Ошибка при создании метки
 
Сюда дополню по этой проблеме. Там подставляются по умолчанию кривые координаты с противоположным знаком по оси Y. Если их исправлять при постановке метки, то она выставляется.
Работа нескольких скриптов с одним файлом, Выдает периодически ошибку при работе нескольких скриптов с одним файлом
 
Цитата
Дмитрий написал:
function mark_Fail (zap, mark) - моя функция записи в файл
FileWrite = io.open('D:\\QLUA\\fails\\mark.txt', zap)
FileWrite:write(mark)
FileWrite:close()
end
а другой скрипт читает этот файл.
Вы бы написали ещё как читаете. У меня записываются данные в файл одним скриптом и читаются другим в 10 раз чаще и не было подобных проблем. Не знаю как вы читаете, могу предположить, что открываете и закрываете файл при каждом чтении. В этом нет необходимости, открывайте файл на чтение в начале работы читающего скрипта и закрывайте файл в конце работы непосредственно перед остановкой. Попробуйте.
Тормоза в отрисовке меток в 10 версии
 
Продолжаю увлекательное тестирование свежих версий. На 10.2 визуально отметил тормоза в отрисовке графики и тормоза в выставлении заявок, о чем здесь писали. Ну, это четко ещё не проверил. Теперь о том, что проверил: Метки в 10 версии отрисовываются в 4-5 раз медленнее. Не поленился и проверил много версий и установил, что фиаско случилось в самом начале: с версии 10.0.1. А в версии 9.7 все замечательно, даже лучше процентов на 20, чем в предыдущих. Возможно, эта заторможенность носит какой-то общий характер, а не касается исключительно меток. Вот скрипт для теста:
Код
local CHART_TAG_PRICE = "Test_speed_lab"

local function sysTime ()
   local t_time = os.sysdate()
   return 10000 * t_time.hour + 100 * t_time.min + t_time.sec + 0.001 * t_time.ms
end

function main ()

   local label = {

     IMAGE_PATH = "C:\\Quik_Pic\\Lines\\500_1_red.bmp",

--[[                                                          -- закомментированно: рисунок, раскомментированно: текст
     TEXT = "________________________",
     IMAGE_PATH = "",
     TRANSPARENT_BACKGROUND = 1,
--]]
     ALIGNMENT = "TOP",
     YVALUE =  84.00,
     DATE = 20230615,
     TIME = 130000,
     R = 0,
     G = 160,
     B = 0, 
     FONT_HEIGHT = 12 
   }

   local sys_time = sysTime()

   for i = 1, 1000 do
       label.YVALUE =  label.YVALUE + 0.001
       AddLabel(CHART_TAG_PRICE, label)
   end

   sys_time = sysTime() - sys_time

   message("sys_time: " .. tostring (sys_time))

   sleep(2000)
   DelAllLabels(CHART_TAG_PRICE)

end
График USDRUB_TOM, дату/время текущие поставите, путь для картинки свой пропишите. Картинка здесь эта простая линия, можно взять любой рисунок. На тексте разницы почти нет, на картинке замедление в 4-5 раза. Рисуется прямоугольник снизу вверх.
10.2.1.12, отображение
 
Сюда напишу по версии 10.2.2.24
Неправильно работает опция "Контролировать цены заявок".
Привязка меток к графику
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Игорь М.

Да, начиная с версии Рабочего места QUIK 9.1 так реализовано.
В данном случае можем предложить зарегистрировать пожелание на доработку функционала.
Уточните, пожалуйста, регистрируем?
Да, зарегистрируйте, пожалуйста. Чтобы метки не пропадали и их можно было выставить, когда график, к которому эти метки привязаны, не находится в области видимости. Чтобы было как раньше.
Шрифты., Вернуть в Quik возможность использования всех доступных шрифтов, как это было в версии 6.17
 
Цитата
Kalmar написал:
Цитата
Игорь М написал:
Уважаемые разработчики, спасибо, что вернули MS Sans Serif в шрифты!
Разве вернули? Или это сарказм?
Не сарказм, вернули. Я тут стал новые версии смотреть, поставил 10.1.2.2 - и там, о чудо, многие шрифты, включая этот, присутствуют. Я все эти годы так решал: ставил в терминале шрифт тоже на 13 символов (Comic Sans MS), сохранял файл настроек (.wnd) и затем в файле настроек уже менял Comic Sans MS на MS Sans Serif и всё работало. Но теперь всё стало нормально, можно без этих огородов обойтись.
Шрифты., Вернуть в Quik возможность использования всех доступных шрифтов, как это было в версии 6.17
 
Уважаемые разработчики, спасибо, что вернули MS Sans Serif в шрифты!
Ошибки в документации (руководстве пользователя)
 
Цитата
Egor Zaytsev написал:
Добрый день.

Игорь, уточните, что Вас смущает в данной формулировке?
Егор, она очень странная. Какие инструменты в лотах? В пункте "4.5 Заявки" у вас нормально написано: "qty NUMBER Количество в лотах". Также и в сделках должно быть.
Привязка меток к графику
 
Цитата
Karina Dmitrieva написал:
Здравствуйте, Игорь М.

Да, с версии Рабочего места QUIK 9.1 метки привязываются к графикам.
Такое поведение было реализовано для того, чтобы метки можно было оставлять на графике при смене инструмента по аналогии с трендовыми линиями, фигурами.

Цитата
Если теперь поставить шкалу на графике в ручном режиме от 100 до 200, к примеру, а максимум графика цены будет ниже 100, то метку не будет видно.
Приложите, пожалуйста, скриншоты как именно отображаются метки у Вас на графике сейчас и как по Вашему мнению должно было бы быть.
Я понимаю, что не просто так это нововведение сделали. Но в результате, если график выходит за видимую область в окне, то метка пропадает. До версии 9.1 такого не было, метка оставалась. Хотелось бы, чтобы метка оставалась на месте, даже если графика на данный момент нет в области видимости. Например, метка (картинка из файла), которая используется в качестве уровня экстремума цены, благополучно пропадает, если вы сдвинули график таким образом, что в нем график цены на этот момент не виден.
Как убрать рекламный баннер?, Реально злит!
 
Цитата
Karina Dmitrieva написал:
Добрый день.

К сожалению, мы не можем заставить брокера использовать или, наоборот, не использовать тот или иной функционал.
Каждый брокер самостоятельно принимает решение.
Понятно, что вы не можете "заставить брокера использовать или, наоборот, не использовать тот или иной функционал". Идея была в том, чтобы вы попытались донести до них мысль о более цивилизованном решении трансляции рекламы.
Как убрать рекламный баннер?, Реально злит!
 
Цитата
nikolz написал:
Прикольно, но вставка рекламного банера - это фишка разработчиков QUIK.
---------------------
Ау, Разработчики объясните начинающим Вашу фишку с этим банером.
-----------------------
Можно убить этот банер хуком.
Class: ShowBannerWindow.
Разработчики уже отвечали когда-то, что эта возможность была сделана по просьбе брокеров, от них деньги-то идут. Это паровозик был самостоятельной фишкой разработчиков
Привязка меток к графику
 
Как я понял в версии 9.1 изменили функционал меток на графике и теперь "Привязка меток теперь осуществляется не к шкале, а к графику...". Если теперь поставить шкалу на графике в ручном режиме от 100 до 200, к примеру, а максимум графика цены будет ниже 100, то метку не будет видно. Что скриптом ставить по координатам, что руками тоже по координатам. Это неудобно, обрезает некоторые возможности, до этой версии всё нормально работало, куда хочешь метку поставить - туда и ставишь. Зачем это сделали? Есть какие-то настройки, чтобы можно было сделать, как в 8-х версиях?
Форматирование таблицы сделок
 
Цитата
Roman Azarov написал:
Игорь М, добрый день!

Мы обнаружили причину проблемы и исправим ее в ближайших версиях. Приносим извинения за доставленные неудобства.  
Обновился и не увидел, что проблема решена. Два с лишним года прошло, до этого нормально всё было. Какие перспективы?
Как убрать рекламный баннер?, Реально злит!
 
Эта тема неоднократно поднималась. Это какой-то лютый колхоз иметь на рабочем пространстве слепящий рекламный баннер... Жаль, что не бегущая строка со звуковым сопровождением. Еще можно сделать, чтобы он мигал апериодически.

Уважаемые разработчики, обратитесь, пожалуйста, к брокерам и донесите до них простую мысль, что рекламу, тем более не часто меняющуюся, можно слать на почту или, на худой конец, показывать при загрузке Квика. Еще вариант, показывать её в течение первой минуты после подключения к серверу. Много существует грамотных и удобных для всех решений.
Сделки
 
Цитата
Дмитрий написал:
 Искал но ответа так и не нашел, поэтому решил спросить
Странно, я в поиске по запросу OnTrade сразу нашел: https://forum.quik.ru/forum10/topic1082/
Вас подобное интересовало?
Сделки
 
Цитата
Дмитрий написал:
Добрый день!
Вопрос почему то приходит ответ на сделку 2-3-4 раза в function OnTrade(trade_data)
Много раз здесь объясняли, поиском по форуму воспользуйтесь.
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
Дмитрий написал:
 Так все реализовано уже -  https://forum.quik.ru/forum12/topic7774/
Ошибка создания заявки. [GW][82] "Заявка Book-or-Cancel не может быть выставлена/переставлена, т.к. она приводит к немедленному исполнению.".
Спасибо за ссылку.
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
nikolz написал:
Возможно я не совсем точно выразился.
Я уверен, что теряете Вы не на комиссии , а на убытках при движении рынка против вашей позиции. И эти потери гораздо больше .
Но экономия на комиссии - это не способ получить прибыль на рынке, тем более на фьючерсе.
Фьючерс - это торговля с плечом.
Посчитайте   величину комиссии от стоимости актива и сравните это с убытком при   движении актива против вашей позиции хотя бы на 1%.
--------------------
Если экономить на комиссии, то лучше вообще не ставить заявки. Экономия максимальная.
Я и на комиссии теряю и на убытках при движении рынка против позиции, которые больше. Это да. С удовольствием лупил бы по рынку и платил комиссию, если бы рынок был активный, живой, волатильный, а на дохлом умирающем я сэкономлю и на комиссии и на отклонении цены от средневзвешенной текущей. И да, я полностью согласен, что "экономия на комиссии - это не способ получить прибыль на рынке", но пока я тут ещё торгую обсуждаемая опция поможет сэкономить.
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
nikolz написал:
Цитата
Игорь М написал:
   Антон, убедительная просьба с этим не затягивать. Эта опция актуальна и реально поможет деньги сэкономить.
на самом деле это не так
реально это не поможет экономить деньги.
Поможет.
Цитата
Так как комиссия брокера остается, а она всегда существенно больше биржевой.
На примере RI. Комиссия МБ: 9.14 руб за контракт (тейкер), брокер 0.45 руб. Открыть и закрыть 1 контракт по рынку это 18.28 руб бирже и 0.9 руб брокеру. В 20 раз у МБ комиссия больше получается.
Цитата
Если заявка не пассивная, то она просто отклоняется и правило это лишь к лимитированным заявкам.
При движении рынка в момент отправки заявки "Поставить в очередь" заявка может стать рыночной и я как тейкер заплачу комиссию, хотя мне нужно было просто поставить лимитный ордер близко к рыночной цене. Такое "счастье" мне не нужно, пусть уж лучше заявка будет отклонена. На МБ для этого эту опцию и ввели. Вы же сами цитировали выше: "В рамках действующей тарификация признак BoС гарантирует нулевую комиссию по сделкам". (цитата МБ)
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
Sergey Gorokhov написал:
 
На самом деле это не так
Есть два формата транзакций, первый тот что описан в документации и там действительно нет признака "Только пассивная"
И второй, тот который в документации не описан, но тем не менее допустим.
Для понимания о чем речь, откройте Карман транзакций, положите в него необходимую транзакцию, и сохраните от туда в tri файл. Открыв файл блокнотом Вы увидите транзакцию во втором формате.
Этот формат допустимо использовать во всех способах подачи транзакций, включая sendTransaction
В этом формате, есть признак "только пассивная" и его можно использовать в sendTransaction.
Вообще, в этом формате можно использовать любые параметры любых транзакций, без каких либо доработок.
Ограничения такие, в русском терминале допустимо использовать только русские параметры, в английском только английские.
Перемешивать параметры от разных форматов нельзя.
Сергей, спасибо за информацию. Такая ситуация: при попытке загрузить транзакцию из tri-файла пишет: Неправильно указано значение для поля "Условие исполнения": "Только пассивная". При отправке с помощью sendTransaction тоже. В обоих случаях все нормально , если поле "Условие исполнения": "Поставить в очередь". Версия терминала имеет значение или какие-то ещё есть моменты?
срочный рынок Московской биржи переходит на новую тарифную модель
 
Цитата
Anton Belonogov написал:
Герман, дополнительных действий с Вашей стороны не потребуется.
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Антон, убедительная просьба с этим не затягивать. Эта опция актуальна и реально поможет деньги сэкономить.
Метки в индикаторе, При перезапуске Квика получается наслоение меток
 
Цитата
Alexey Danin написал:
Здравствуйте.

 Мы зарегистрировали пожелание на доработку.  Мы постараемся рассмотреть его и  сообщить Вам результаты анализа. Впоследствии, по результатам анализа,  будет приниматься решение о реализации пожелания в будущих версиях ПО.
Алексей, пользуясь случаем оставлю здесь ещё пожелание: Добавьте ещё один параметр в таблице метки, типа user_id или user_hint, используя который пользователь смог бы идентифицировать метку. Kolossi выше написал, что он сохраняет UID метки в файл и затем удаляет при повторном запуске. Я тоже в подобных случаях удаляю старые при повторном запуске терминала. Не знаю, что за UID Kolossi сохраняет, но label_id для этих целей не годятся, и поэтому приходится выдумывать разное экзотическое для идентификации: где-то использую время, где-то цвета, а где-то редкий шрифт, и потом при запуске удаляю все метки с определенным шрифтом, например. Существование дополнительного параметра в таблице существенно бы облегчило данную задачу.
Бесконечный цикл функции с заданным интервалом времени
 
Цитата
shtur2005 написал:
Добрый день, уважаемые языковеды! Прошу не кидать в меня тапками, я только начал изучать язык.
Помогите пожалуйста с созданием бесконечного цикла функции. Двое суток читал и пробовал, ничего не вышло.
Я вам пример набросал: скрипт  в цикле выводит сообщения со значениями даты/времени и high/low последних 5 свечей (CNT_CANDLES = 5). Работает.
Код
local CHART_TAG_PRICE = "SRH15MIN"                         -- идентификатор графика цены
local CNT_CANDLES = 5                                      -- значение количества свечей для обработки

local is_run = true
local processed                                            -- количество обработанных свечей графика

local function timeCandle (hour, min)                      -- функция формирования времени свечи (number)
   return 10000 * hour + 100 * min
end

local function dateCandle (year, month, day)               -- функция формирования даты свечи (number)
   return 10000 * year + 100 * month + day
end

local function singleCandleProcessing (t)                  -- функция обработки одиночной свечи
   local time = timeCandle(t.datetime.hour, t.datetime.min)                        -- вызов функции формирования времени свечи
   local date = dateCandle(t.datetime.year, t.datetime.month, t.datetime.day)      -- вызов функции формирования даты свечи
   message(tostring(date) .. "  " .. tostring(time) .. ". High: " .. tostring(t.high) .. ", low: " .. tostring(t.low))
end

local function candlesProcessing ()                        -- функция обработки последней свечи/свечей
   local number = getNumCandles(CHART_TAG_PRICE)               -- количество свечей графика
   if number > processed then
       local t = getCandlesByIndex(CHART_TAG_PRICE, 0, processed, number - processed)          -- получение таблицы последней свечи/свечей
       if t then
           for i = 0, number - processed - 1 do
               if t[i] then
                   singleCandleProcessing(t[i])                        -- вызов функции обработки одиночной свечи
               end
           end
           processed = number
       end
   end
end

function main ()
   processed = getNumCandles(CHART_TAG_PRICE) - CNT_CANDLES
   while is_run do
       candlesProcessing ()                                        -- вызов функции обработки последней свечи/свечей
       sleep (30000)
   end
end

function OnStop ()
   is_run = false
   return 2000
end
Как получить значение Лимита открытых позиций по фьючерсам или как получить элемент из таблицы?
 
Цитата
Денис написал:
Код
  Мне приходится решать эту задачку так:
Table_ getFuturesLimit   =  {}  -- создается переменная таблица для получения значения, возвращаемого функцией getFuturesLimit 

Table_ getFuturesLimit   =   getFuturesLimit  (  "SPBFUT"  ,  "SPBFUT *  *  *  *  * " ,   0  ,  "SUR" )  -- результат работы функции getFuturesLimit помещается в созданную таблицу  


 if  Table_ getFuturesLimit   and  next(Table_ getFuturesLimit )  then   -- если результат работы функции не nil и не пустая таблица, то можно обратиться к соответствующему полю. 

    FutLimit  =   Table_ getFuturesLimit .cbplimit  -- получается значение интересующего поля 

 end   -- end if   
Прокомментирую: Первая строка не нужна, Table_getFuturesLimit лучше залокалить, а next(Table_getFuturesLimit) заменить на проверку Table_getFuturesLimit.cbplimit. Если таблица пустая, то Table_getFuturesLimit.cbplimit будет nil без ошибки и условие не выполнится, но может быть так: Table_getFuturesLimit.cbplimit = nil, а next(Table_getFuturesLimit) будет true (другие поля существуют) - условие выполнится и вы присвоите переменной FutLimit этот nil.
Как считать данные из таблицы текущих торгов?
 
Цитата
Вася написал:
Владимир, потому что я, начинающий программист, выполняю заказ клиента. Таково его желание. Ему нужно выводить в эксель те данные, которые он сам выберет в ТТТ. И он, естественно, не сможет залезть в код и добавить новую колонку когда решит это сделать. Он сможет только добавить новую колонку в ТТТ и она должна быть выведена. Сложность в том, что выводить данные нужно не только из ТТТ, а еще из одной самодельной таблицы. Вот я и хотел объединить их сперва как-то, а потом сборную таблицу вывести.
Пусть ваш клиент работает с вашей пользовательской таблицей напрямую, а не с ТТТ. Сделайте в этой таблице возможность добавлять новые колонки, а все данные будете получать через getParamEx.
Агрегировать объемы по ценам
 
Цитата
Nikolay написал:
Да, но округление не нужно в данной операции.
Да это понятно, я так написал для информации, без применения к описанной задаче.
Агрегировать объемы по ценам
 
Еще решил написать, мало ли кто не в курсе, что работает целочисленное деление "//": "Целочисленное деление ('//') всегда преобразует свои операнды в integer и дает в результате integer. Преобразование происходит посредством округления операндов в меньшую сторону, как это делает функция math.floor".
Агрегировать объемы по ценам
 
math.tointeger (x) - если значение x можно преобразовать в целое, возвращает целое. Иначе, возвращает nil.
Работа с метками, ошибки при закрытии/открытии программы Quik., Свои уровни на графике из файла.
 
Кто-то из поддержки вроде писал, что удалить метки не получится, так как графика уже нет, то есть при завершении работы терминала вы их не удалите, поэтому удаляйте старые метки при запуске.
Объясните, пожалуйста, один момент в коде.
 
Цитата
Владимир написал:
Да, она пока что "охватывает далеко не все случаи" - новая версия должна охватить всё недостающее.
Не охватит. Вы забываете, что народ занимается не только реализацией роботов, но и разработкой разных полуавтоматов с риск- мани-менеджментом, решений для проп-трейдинга, поддержкой групп клиентов и т.д. Вы же не собираетесь все это в свой скрипт запихивать.
Страницы: 1 2 3 След.
Наверх