Ziveleos (Автор тем)

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

Страницы: 1
Визуализтор истории сделок, История сделок на графике QUIK
 
Поскольку QUIK показывает сделки только за текущую сессию, пришлось сделать пару скриптов.

Один - "летописец", ведет историю сделок. При остановке скрипта, разрыве связи с сервером или закрытии терминала добавляет ещё не учтённые сделки в текстовый файл. Всё остальное время он просто ждет.

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

В начало файла History можно скопировать сделки из отчета брокера [Меню > Расширения > Отчёты > Отчёт по всем сделкам клиента], чтобы увидеть на графике свои прошлые сделки (проверено на брокерах ВТБ и Сбер).

Есть опция показа сделок по уже исполненным фьючерсам (для практикующих склейку графиков).

Для быстрой смены инструмента можно подключить график к таблице "Текущие торги".

Attention! Индикатор удаляет ВСЕ метки с графика, на котором установлен.
В демоверсии глубина истории ограничена 16-ю сделками.

ShowDealsDemo
Всё пройдет. Но это не точно.
Таблицы для sendTransaction из .tri файла, Скрипт преобразующий строки .tri файла в таблицы для sendTransaction
 
Код
function main()
  file = io.open(getScriptPath().."\\Карман.tri", "a+") -- Файл транзакций
  tri = file:read("*a")
  if not tri:match("%[") then
    for rec in tri:gmatch("[^\n]+") do
      rec = rec:gsub(";","\n")
      rec = rec:gsub("([%g ]+)=","  ['%1'] =")
      rec = rec:gsub("=([%g ]*)","= '%1',")
      rec = rec:gsub(",\n$","")
      rec = "\ntransaction = {\n"..rec.."\n              }\n"
      file:write(rec)
    end
  end
  file:flush()
  file:close()
end 

Использование:
1) Сохранить содержимое "Кармана транзакций" в файл Карман.tri
2) Запустить скрипт.
3) Забрать результат в том же файле.

Всё пройдет. Но это не точно.
DelAllLabels приводит к "General Protection Fault", Вызов DelAllLabels при смене тикера приводит к падению QUIK с ошибкой "General Protection Fault"
 
   Тестовый скрипт:
Скрытый текст

По-видимому, если во время восстановления меток после смены инструмента (график подключен к каналу), вызвать DelAllLabels, QUIK не выдерживает такой "шизофрении", и падает с криком "Internal exception happened".

Помогает только задержка, позволяющая QUIK восстановить все метки.
Как поймать момент окончания прорисовки, мне придумать так и не удалось, может быть разработчики что-нибудь подскажут?
Версия терминала - 10, но и на 7-ой всё то же самое.
Всё пройдет. Но это не точно.
Страницы: 1
Наверх