Постов с тегом "QuiK": 2002

QuiK


Данные из QUIK в Python. Построение Дельта графика.

Данные из QUIK в Python. Построение Дельта графика.Построение нестандартных графиков в Python при помощи библиотеки finplot.
Можно строить почти любые нестандартные графики: Range, Renco, Delta.
В качестве примера скрипт для построения Дельта графика.
График строиться с момента запуска по поступающим данным из таблицы обезличенных сделок.
Для получения данных из КВИКа используется PythonServer Евгения Шибаева (огромное спасибо автору!!!)

Тапками не кидайтесь, программировать только учусь.

# В КВИКе запускаем луа-скрипт QuikLuaPython.lua
import socket
import threading
from datetime import datetime, timezone
import pandas as pd
import finplot as fplt

fplt.display_timezone = timezone.utc


class DeltaBar():
    def __init__(self):
        self.df = pd.DataFrame(columns='date_time open high low close delta delta_time_sec'.split(' '))
        self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0]

    def parser(self, parse):
        if parse[0] == '1' and parse[1] == 'RIH1':
            if abs(self.df.iloc[len(self.df) - 1]['delta']) >= 500:
                self.df.loc[len(self.df)] = [0, 0, 0, 0, 0, 0, 0]  # Добавляем строку в DF

            self.df.iloc[len(self.df) - 1]['close'] = float(parse[4])  # Записываем последнюю цену как цену close бара

            if self.df.iloc[len(self.df) - 1]['date_time'] == 0:
                self.df.iloc[len(self.df) - 1]['date_time'] = \
                    datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f").replace(microsecond=0)

            if self.df.iloc[len(self.df) - 1]['open'] == 0:
                self.df.iloc[len(self.df) - 1]['open'] = float(parse[4])

            if float(parse[4]) > self.df.iloc[len(self.df) - 1]['high']:
                self.df.iloc[len(self.df) - 1]['high'] = float(parse[4])

            if (float(parse[4]) < self.df.iloc[len(self.df) - 1]['low']) or \
                    (self.df.iloc[len(self.df) - 1]['low'] == 0):
                self.df.iloc[len(self.df) - 1]['low'] = float(parse[4])

            if parse[5] == '1026':
                self.df.iloc[len(self.df) - 1]['delta'] += float(parse[6])

            if parse[5] == '1025':
                self.df.iloc[len(self.df) - 1]['delta'] -= float(parse[6])

            self.df.iloc[len(self.df) - 1]['delta_time_sec'] = \
                datetime.strptime(f'{parse[7]} {parse[8][0:-1]}', "%d.%m.%Y %H:%M:%S.%f") - \
                self.df.iloc[len(self.df) - 1]['date_time']
            self.df.iloc[len(self.df) - 1]['delta_time_sec'] = self.df.iloc[len(self.df) - 1]['delta_time_sec'].seconds


def service():
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.bind(('127.0.0.1', 3587))  # Хост-этот компьютер, порт - 3587
    while True:
        res = sock.recv(2048).decode('utf-8')
        if res == '<qstp>\n':  # строка приходит от клиента при остановке луа-скрипта в КВИКе
            break
        else:
            delta_bar.parser(res.split(' '))  # Здесь вызываете свой парсер. Для примера функция: parser (parse)
    sock.close()


def update():

    df = delta_bar.df
    # Меняем индекс и делаем его типом datetime
    df = df.set_index(pd.to_datetime(df['date_time'], format='%Y-%m-%d %H:%M:%S'))
    # print(delta_bar.df)

    # pick columns for our three data sources: candlesticks and TD
    candlesticks = df['open close high low'.split()]
    volumes = df['open close delta_time_sec'.split()]
    if not plots:
        # first time we create the plots
        global ax
        plots.append(fplt.candlestick_ochl(candlesticks))
        plots.append(fplt.volume_ocv(volumes, ax=ax.overlay()))
    else:
        # every time after we just update the data sources on each plot
        plots[0].update_data(candlesticks)
        plots[1].update_data(volumes)


if __name__ == '__main__':
    delta_bar = DeltaBar()
    # Запускаем сервер в своем потоке
    t = threading.Thread(name='service', target=service)
    t.start()

    plots = []
    ax = fplt.create_plot('RIH1', init_zoom_periods=100, maximize=False)
    update()
    fplt.timer_callback(update, 2.0)  # update (using synchronous rest call) every N seconds

    fplt.show()
  • обсудить на форуме:
  • QUIK

От Quik 8.11 к Quik 8.12. Первые итоги - исправлены ошибки.

    • 20 февраля 2021, 03:28
    • |
    • 3Qu
  • Еще
На днях написал топик об обновлении брокером Quik до версии 8.11.0.66 - Quik 8.11.0.66. Вот так номер. Шо, опять Win32, опять 32 бит?
После обновления Quik до 8.11 начали вылезать ошибки Lua программ к которым подключены DLL. С этим я более-менее справился, программы Lua стали работать без каких либо изменений в них, только перемещением файлов DLL и используемых ими ресурсов по папкам внутри Quik. Однако, запускались программы нестабильно, иногда приходилось их удалять из списка Lua, и перед их запуском или после перезагрузки Quik вновь добавлять. Причем, все это было совершенно непредсказуемо.
В конце концов плюнул, и обновил Quik до версии 8.12 из файлового архива ARQA.
Все мгновенно встало на свои прежние места, программы Lua заработали стабильно в прежней конфигурации до всех обновлений. Видимо, ARQA исправила ошибки.
Надо сказать, что Quk 8.12 несколько странно себя ведет, иногда подвисает, даже при дисконнекте с рынком. Пока не знаю что это, обновлялся до 8.12 уже после закрытия рынка.

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Quik 8.11.0.66. Вот так номер. Шо, опять Win32, опять 32 бит?

    • 18 февраля 2021, 20:35
    • |
    • 3Qu
  • Еще
Сегодня брокер Альфа обновил Квик с версии 8.8… до версии Quik 8.11.0.66. Появился кроме Lua 5.3.5 еще и Lua 5.4.1. Отлично, мне бы радоваться, давно этого хотел. Но...
Запустил рабочую в Quik 8.8 версию системы использующую DLL, И увидел вот это:
Quik 8.11.0.66. Вот так номер. Шо, опять Win32, опять 32 бит?
Во первых, ничего не работает даже в уже отлаженной версии Lua 5.3.5. Вы видите на картинке, что Lua не нравится 64-бит DLL, и она хочет 32-битную.
Во вторых, то ли Quik стал опять 32-х битным (пока не смотрел), то ли Lua в Quik стала снова 32-х битной, а это означает, что все надо переделывать с 64 бит на 32 бит. С чем боролись, на то и напоролись. Вечный кайф.
Признаться, сильно лень переделывать все опять на 32 бит, тем более, многих библиотек для DLL С++ для 32 бит просто не существует в природе.
О моей борьбе с этим буду сообщать. Наверно, дополнением этого топика. Подписывайтесь, чтобы ничего не пропустить. Мало ли, м.б. решение и найдется.



  • обсудить на форуме:
  • QUIK

Quik и разрывы соединения - кто виноват???

Quik и разрывы соединения — кто виноват???
По мнению Брокера виноват — никто.
Брокер говорит, что если  проблемы были бы на стороне Брокера — то они были бы у всех Клиентов, а не у части!!!
Брокер говорит, что разрывы соединения происходят на пути от компьютера Клиента до сервера Брокера, за которую Брокер не отвечает, так же как и Клиент, то есть никто не виноват.

Пишите мнение в комментариях.
  • обсудить на форуме:
  • QUIK

Квик и разрывы соединений - мнение Брокера

У Клиента происходят периодические разрывы соединений в Квике — Брокер проанализировав ситуацию заявил — раз у Клиента нет проблем с интернетом, то скорее всего проблема где то на пути в серверу Брокера — точнее на том участке, за который Брокер не отвечает — там что все вопросы х.з. знает к кому)))))
На вопрос — могут ли быть проблемы на стороне Брокера — ответ Брокера — нет конечно — иначе бы у всех наших клиентов были бы проблемы — а так они только у вас)))
Пишите свое мнение в комментариях
  • обсудить на форуме:
  • QUIK

Предлагаю устроить голодовку против произвола брокеров.

Доколе!

Что это за нафиг за беспредел!

Открытие, какого лешего???

Почему опять баннер в квике)). У меня опять идеально подогнанные окна поехали и эстетические чувства травмированы.

Обновления Квика 8.11 - Lua 5.4

    • 07 февраля 2021, 09:31
    • |
    • П М
  • Еще
Давно не заглядывал на сервер обновлений квика. А ребята молодцы, прикрутили по горячим следам Lua 5.4.1 (почему не 5.4.2?).
В версии 5.3, которую прикрутили ранее, было уж очень много багов
www.lua.org/bugs.html
появились несовместимости между 5.4 и 5.3
www.lua.org/manual/5.4/readme.html#changes

Причём хорошая новость, в новой версии Quik можно переключаться с Lua 5.3 на 5.4, не надо бросаться пересобирать скрипты, если у вас с этим сложно.
Сбер - ракета!
Остальные изменения ещё не успел прочитать, если кто в курсе чего-то интересного, или наоборот, плохого, напишите в комментариях, пожалуйста,  быстрый взгляд показывает, что пофиксено много проблем с памятью.
arqatech.com/ru/support/files/quik-workstation/


  • обсудить на форуме:
  • QUIK

....все тэги
UPDONW
Новый дизайн