Добрый день, Всем В качестве ликбеза для буратин и чайников, привожу результаты тестирования скорости исполнения выставления и снятия заявки в роботе, который реализован в индикаторе. ------------- кратко в чем преимущество такой реализации относительно реализации в виде скриптов. ================ 1) нет надобности писать колбеки и разбираться в них. ---------------- 2) робот можно сделать одинаковым для любых инструментов Например робот автомат управления стопом. --------------------- 3) проще реализовать, так как нет надобности заморачиваться с фильтрацией инструментов. На какой график кинете этого робота, на том инструменте он и будет работать. ================= А теперь о скорости его работы. Тест, в котором выставляется заявка, когда она выставится, робот ее снимает. при этом он проверяет таблицу стоп-заявок, заявок и депо. ================= На выставление заявки уходит примерно 0.006 сек На проверку активной заявки и выставление заявки на снятие уходит примерно выставление заявки на снятие уходит примерно 0.004 сек -------------------------- время в мкс:
Удваиваются заявки. Версия 9.7.1.10., Вопрос разработчикам QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
28.07.2022 09:02:49
Тестирую в демо версии выставление заявок фрагмент кода такой:
Код
t1.PRICE=tostring(price);
t1.QUANTITY=tostring(Q);
t1.TRANS_ID=tostring(id+1); -- Уникальный идентификационный номер заявки, от «1» до «2 147 483 647»
local str=sendTransaction(t1); --отправить транзакцию
Log:write("сообщение"..str.."\n"); Log:flush() -- вывод сообщения в файл
if str=="" then id=id+1; ji=ji+1; ti[ji]={id,0}; ti[0]=ji;
Log:write("заявка id"..tostring(id)..",ji="..tostring(ji).."\n"); Log:flush()
end ---если сообщение пустое то в файл выводится id транзакции
Поясняю. Разработчикам просьба внимательно читать пояснения. Все тщательно разжую. ================ Выполняется: str=sendTransaction(t1) строка str выводится в файл если сообщения нет , то id увеличивается на 1 и становится равным id транзакции и выводится в файл ===================== ВНИМАНИЕ!!! Таким образом, исключается передача транзакции с одинаковым id и контролируется количество переданных транзакций. =================== В лог файле при выполнении транзакции получаем:
Код
сообщение
заявка id31,ji=1
Т. е. ожидаем одну заявку с id=31 ---------------- ВНИМАНИЕ!!! смотрим в таблицу заявок:
Однако, наблюдаем по две заявки с одинаковыми id одинаковыми параметрами и в одно и тоже время. ------------------------ Что не так?
Уничтожаем фейки
Пользователь
Сообщений: Регистрация: 30.01.2015
26.06.2022 13:29:23
Добрый день, Всем. ---------------------- На форуме очень много буратин и чайников, жизнь которых на рынке только начинается. Поэтому попробую, по мере сил и желания, снять с их ушей лапшу, которую им упорно развешивают некоторые словообильные посетители. -------------------- Начнем с определений: чайник - чел,начинающий программировать робота в QUIK. буратино - чел,начинающий гений торговли и уверенный в быстром обогащении на бирже, мечтающий о халяве. Тики - данные отображающиеся на графике с интервалом -"тиковый" ================ Фейк №1 =============== Есть тики , а есть обезличенные сделки и это разные данные, тики -няка, а обезличенные сделки -бяка. Тики обрабатываются быстрее, чем обезличенные сделки. -------------- Такая тема неоднократно появлялась на форуме. Как правило это связано с самопальными свечами с интервалом меньше 1 минуты. ================ Так вот , противопоставление тиков и обезличенных сделок - это ложь. Тики и обезличенные сделки - это одни и те же данные. =========== Получить эти данные можно тремя способами: 1) подписаться на обезличенные сделки на LUA; 2) заказать обезличенные сделки через меню терминала 3) открыть график с интервалом "тиковые" ----------------------- Во всех трех случаях данные будут поступать в таблицу обезличенных сделок,в колбек скрипта и на график. ============== Доказательство : 1) см документацию: функция CreateDataSource param – Если параметр не задан, то заказываются данные на основании таблицы обезличенных сделок. -------------- 2) без заказа через терминал, откройте тиковый график. А потом откройте таблицу обезличенных сделок. Вы увидите в таблице инструмент с тикового графика. ------------------ 3) сделаем следующий тест. На тиковый график разместим индикатор, который пишет текущую цену инструмента (ТИК) в лог файл. В этот же лог файл пишем параметры обезличенных сделок данного инструмента, полученные скриптом onAllTrade. И дополнительно проверим, что же мы получим по данному инструменту через колбек onParam, т е из ТТП. ----------- Вот результат данного теста:
Резюме: Первым ВСЕГДА отрабатывает колбек onAllTrade, после него данные приходят в индикатор графика. --------------- Колбек onParam , как и ожидалось принимает лишь некоторые тики, которые попадают в текущий срез данных, передаваемых в таблицу текущих параметров. ------------------------
Добавлять поддержку архитектуры win32 (первая команда выше) нужно только если ваша система 64-разрядная.
Проблему рано или поздно исправят, так что можно будет пользоваться WINE и без дополнительного репозитория: sudo dpkg --add-architecture i386 sudo apt install wine winetricks
Устанавливаем . Можно его скачать с сайта Майкрософт и запустить при помощи Wine. А можно просто выполнить в терминале winetricks vcrun6
Гораздо проще воспользоваться winetricks, т.к. перед установкой VC6RedistSetup он предложит установить необходимые нам "Wine Mono Installer" и "Wine Gecko Installer". На предложения скачать и установить нужно соглашаться и нажимать на кнопку Install.
Скачиваем Quik с сайта брокера. Если приложение находится в архиве (zip, rar), то его нужно предаварительно распаковать. WINE будем запускать с .exe файлом.
Для установки Quik используйте команду в терминале: LC_ALL=ru_RU.UTF-8 wine64 quik_inst.exe
Где вместо quik_inst.exe нужно подставить имя вашего установщика quik (например, это может быть "quik_8.7.exe"). Обратите внимание, что запускать эту команду нужно из папки, в которой находится этот установщик (installer). Если вы скачали его в папку пользователя Downloads, распаковали ZIP архив именно в эту папку, то переходите в неё при помощи команды cd в терминале: cd ~/Downloads
Копируем ключи secring.txk и pubring.txk в папку /home/USER/.wine/dosdevices/c:/Program Files/BROKER/Keys, где USER - ваше имя пользователя, а BROKER - подпапка в "Program Files (x86)", в которую установлен торговый терминал Quik (Возможно, вы захотите установить Quik не в Program Files, а в корень, например, в C:\SBERBANK. Тогда и ключи копируем в соответствующую папку). Ключи конечно же можно хранить и в другой папке, при этом в "Система" -> "Настройки" -> "Основные настройки" -> "Программа" -> "Шифрование" -> "Шифровать с помощью СКЗИ" -> Qrypto32 -> "Настроить" нужно указать путь к ключам.
Создаем ярлык для запуска. В моем случае это shell скрипт (текстовый файл с расширением sh) на рабочем столе. cd "~/.wine/dosdevices/c:/Program Files/BROKER/" LC_ALL=ru_RU.UTF-8 wine64 "c:/Program Files/BROKER/info.exe" Если опустить параметр "LC_ALL=ru_RU.UTF-8", то часть текста может отображаться некорректно (вместо текста появляются вопросы или кракозябры). Если не перейти в папку с установленной программой перед запуском, то возникают проблемы с настройками. Вместе же две команды решают проблемы с запуском Quik в Ubuntu (Linux).
После создания shell скрипта quik.sh можно открыть свойства этого текстового файла и на вкладке Permissions разрешить выполнение в качестве программы. Но можно переходить в папку с этим скриптом в терминале и запускать его, добавляя "./" перед именем файла: cd ~/Desktop ./quik.sh
После запуска Quik нужно изменить в настройках шрифты. Если этого не сделать, то в некоторых диалогах будут появляться кракозябры, хотя большая часть информации всё же отображается корректно. Для этого в меню выбираем "Система" -> "Настройки" -> "Основные настройки...(F9)" -> "Программа" -> "Шрифты", после чего изменяем шрифты, например, на Arial (или любой другой шрифт, который вам нравится, но который будет корректно отображать русские буквы в Quik).
Если нужно сгенерировать ключи для Quik, то запускаем keygen.exe из под WINE: cd ~/.wine/dosdevices/c:/Program Files (x86)/BROKER/KeyGen LC_ALL=ru_RU.UTF-8 wine64 keygen.exe
Профит!
Данный способ запуска Quik в Linux прекрасно работает для брокеров ВТБ, Открытие, БКС, Финам, Сбербанк, Промсвязьбанк и прочих. В том числе не возникает и проблем, если для входа требуется SMS подтверждение.
Если при запуске через некоторое время возникает ошибка "Не хватило памяти под объекты, без которых приложение работать не может", то первым делом нужно проверить наличие свободной памяти. .
добавить параметры графика в settings
Пользователь
Сообщений: Регистрация: 30.01.2015
20.06.2022 10:10:09
Предлагаю добавить в settings параметр для управления флагами графика "Учитывать при автомаштабировании" "привязка к левой(правой) оси и.т.д.
Обмен сообщениями приложений , скриптов на Lua, Python ,С
Пользователь
Сообщений: Регистрация: 30.01.2015
31.05.2022 08:23:17
Предлагаю принять участие в тестировании моей библиотеки обмена сообщениями между процессами, потоками , приложениями, скриптами на любом языке программирования. ------------------------------- Как это работает Приложению или скрипту присваиваем номер NUM от 1 до 30000. ---------------- 1) Послать сообщение S: res=nkLp.send(NUM,S) , если успешно , то res=1. Num - номер получателя. 2) Принять сообщение S: на Lua S=nklP.get(NUM), на других языках nkLP(Num,S). Если нет, то пусто. Num-номер получателя. ================= Возможности 1) В скриптах для QUIK, колбеки можно размещать лишь в одном. Этот скрипт может рассылать информацию всем желающим. ----------------------------- 2) Индикаторы и скрипты могут обмениваться информацией. ------------------------------ 3) Любое внешнее приложение , например на питоне, может обмениваться информацией с QUIK или любым другим приложением, например, на луа. ================= Чем это решение лучше других 1) Другие таких решений нет . Если знаете, дайте ссылку. 2) Не блокирует потоки, не использует файлы, не обращается к ядру ОС. 3) Самый быстрый способ обмена. ================== Ограничения тестовой версии: В данном решении длина сообщения 64 символа. Используется лишь один ящик сообщений. Т е новое сообщение будет передано лишь после того, как прочитают предыдущее. В сообщении нет обратного адреса. Тестировал на Win10 64bit, Lua 5.4 =================== Как принять участие в тесте: Написать свою почту в личку.
Прием данных и стаканов в различных потоках
Пользователь
Сообщений: Регистрация: 30.01.2015
06.05.2022 13:54:17
Добрый день, Ищу решение следующей проблемы. ---------------- Сейчас у меня реализовано так: -------------------- В функции main для каждого инструмента запускается свой поток. Потоки берутся из пула. Если свободного нет, то создается новый. ------------------ Данные передаются в поток через параметры скрипта и мапинг-файлы. ------------------ Прием данных от источника и стаканов реализуется в main. ----------------- Все работает замечательно. Но узким местом является прием данных всех инструментов в одном потоке main. ----------------------- Хочу принимать данные и стаканы в отдельном потоке каждого инструментов. ------------------ Применение общего глобального стека не дает результата. ---------------------- Если кто-то решил данную проблему, просьба сказать каким методом. ------------ Спасибо ================= Отдельная пожелание разработчикам. Реализовать указанные функции для приема данных и стаканов для произвольного потока.
Найдите, где правильно?, Вопрос к разработчикам QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
08.04.2022 07:36:23
Добрый день,
Вопрос к разработчикам:
Что считает терминал QUIK в таблице купить/продать и что же считает функция getBuySellInfo . ------------------- Казалось бы должны считать одно и тоже. ====================== Если -нет, то дайте ссылку на документацию. =============== Проверяем: Берем данные из таблицы терминала купить продать и по этим данным считаем функцией getBuySellInfo =========== результат ниже: Сумма - это произведение цены на количество. --------------------------------- Отличия: 1) Все суммы различные , даже там , где цена и количество одинаковые Например ===========================================
28
MGNT
4201
71
298 271
71
298 662
=============================================
2) QUIK для всех акций считает как не маржинальные, а формула очевидно учитывает маржинальные Но учитывает как то странно Например:
Риск 5.9, но для физ лиц не может быть более 5, а для юр. лиц может быть аж 8. Откуда 5.9 ? ------------------------ Там, где риск=1, количество не совпадает в большинстве случаях.
Например:
================================================
20
ISKJ
85.2
3512
299 222
3518
299 804
1.0
================================================
QUIK Позиции
getBuySellInfo
плечо
Код инструмента
Цена
Купить
Сумма
Купить
Сумма
Риск
2
AFKS
13.821
21709
300 040
62013
855 283
2.9
3
AFLT
38.14
7867
300 047
46576
1 760 573
5.9
4
AGRO
1041
288
299 808
288
299 520
1.0
5
ALRS
93
3226
300 018
18921
1 759 653
5.9
6
BANEP
671
445
298 595
1250
843 750
2.8
7
BSPB
63.12
4753
300 009
4753
299 772
1.0
8
CHMF
1077.4
278
299 517
1627
1 753 906
5.8
9
CNTL
10.2
28685
292 587
29394
299 819
1.0
10
DSKY
85.31
3515
299 865
3527
299 795
1.0
11
ENRU
0.5283
567206
299 655
564219
299 826
1.0
12
ETLN
71.58
4177
298 990
4166
299 785
1.0
13
FIVE
1360
220
299 200
223
299 378
1.0
14
FLOT
53.27
5632
300 017
5634
299 785
1.0
15
GAZP
242.8
1234
299 615
7110
1 728 868
5.8
16
GCHE
3197.5
93
297 368
93
297 182
1.0
17
GLTR
384
781
299 904
781
299 826
1.0
18
HYDR
0.7816
381357
298 069
2203275
1 727 368
5.8
19
IRAO
2.678
112043
300 051
112206
299 826
1.0
20
ISKJ
85.2
3512
299 222
3518
299 804
1.0
21
KAZT
474.8
631
299 599
639
299 691
1.0
22
KMAZ
101.3
2947
298 531
2959
299 747
1.0
23
KZOSP
21.51
13801
296 860
13906
299 813
1.0
24
LKOH
5306.5
56
297 164
326
1 733 994
5.8
25
LSRG
540
555
299 700
555
299 700
1.0
26
MAGN
43.34
6919
299 869
6893
299 811
1.0
27
MDMG
597
500
298 500
500
299 250
1.0
28
MGNT
4201
71
298 271
71
298 662
1.0
29
MOEX
104.2
2872
299 262
2869
299 811
1.0
30
MRKC
0.2622
1131419
296 658
1135705
299 826
1.0
31
MRKP
0.1718
1731404
297 455
1744205
299 829
1.0
32
MSNG
1.78
168568
300 051
168633
299 829
1.0
33
MTLR
102.2
2935
299 957
2956
299 768
1.0
34
MTLRP
195.8
1525
298 595
1524
299 695
1.0
35
MTSS
217.8
1376
299 693
1375
299 750
1.0
36
MVID
248.8
1205
299 804
1200
299 640
1.0
37
NKNCP
81.18
3696
300 041
3699
299 767
1.0
38
NLMK
161.9
1852
299 839
1852
299 728
1.0
39
NMTP
4.94
60191
297 344
60510
299 827
1.0
40
NVTK
1288
232
298 816
232
299 466
1.0
41
OGKB
0.4179
718000
300 052
720558
299 824
1.0
42
OKEY
27.93
10735
299 829
10738
299 805
1.0
43
OZON
1302.5
230
299 575
232
299 280
1.0
44
PIKK
589.9
508
299 669
510
299 625
1.0
45
PLZL
13479.5
22
296 549
22
296 472
1.0
46
POGR
12.69
23644
300 042
23608
299 822
1.0
47
POLY
942.3
318
299 651
318
299 810
1.0
48
POSI
1051.8
285
299 763
285
299 820
1.0
49
QIWI
443.5
675
299 363
674
299 728
1.0
50
RASP
389
771
299 919
771
299 803
1.0
51
RENI
46.98
6386
300 014
6382
299 826
1.0
52
RNFT
103.4
2901
299 963
2910
299 730
1.0
53
ROSN
407
737
299 959
736
299 552
1.0
54
RSTI
0.7177
417842
299 885
417528
299 827
1.0
55
RTKM
62.35
4793
298 844
4833
299 791
1.0
56
RTKMP
62.65
4785
299 780
13640
854 546
2.8
57
RUAL
70.74
4238
299 796
4243
299 768
1.0
58
RUGR
25.2
11906
300 031
12260
299 806
1.0
59
SBER
145.86
2055
299 742
12076
1 760 560
5.9
60
SBERP
153.34
1956
299 933
1949
299 737
1.0
61
SELG
46.86
6403
300 045
6434
299 824
1.0
62
SFTL
289
1038
299 982
1037
299 589
1.0
63
SGZH
9.298
32267
300 019
32347
299 824
1.0
64
SIBN
434.95
689
299 681
692
299 705
1.0
65
SMLT
2709
110
297 990
110
299 233
1.0
66
SNGS
26.13
11483
300 051
11395
299 825
1.0
67
SNGSP
35.15
8535
300 005
8528
299 802
1.0
68
TATN
395.5
758
299 789
758
299 789
1.0
69
TATNP
348
861
299 628
861
299 628
1.0
70
TCSG
3542
84
297 528
84
298 746
1.0
71
UPRO
1.647
181410
298 782
181935
299 829
1.0
72
VKCO
511.4
586
299 680
581
299 680
1.0
73
VTBR
0.022835
13140021
300 052
13225443
299 821
1.0
74
YNDX
2108.4
142
299 393
142
298 654
1.0
чтобы это значило?
Пользователь
Сообщений: Регистрация: 30.01.2015
07.04.2022 21:36:44
Читаем таблицу, которую получает колбек OnDepoLimit ---------------- currentbal=0.0 locked_sell=0.0 locked_buy=0.0 wa_position_price=0.0 sec_code=CNTL firmid=NC0011100000 client_code=1737 limit_kind=-3 locked_buy_value=9.96 awg_position_price=0.0 wa_price_currency=SUR openbal=0.0 trdaccid=NL0011100043 locked_sell_value=-1e+48 -- Стоимость инструментов , заблокированных на продажу currentlimit=0.0 openlimit=0.0 ----------------------- Вопрос к знатокам: сколько стоят инструменты, заблокированные на продажу?
доработка таблицы Позиции по инструментам
Пользователь
Сообщений: Регистрация: 30.01.2015
07.04.2022 10:31:50
Добрый день, Предлагаю зарегистрировать следующее пожелание. Добавить в таблицу "Позиции по инструментам" class_code. -------------------- Объясняю в чем проблема. ================= При написании скриптов возникает необходимость получить параметры по инструментам, чтобы выставлять какие-либо заявки. ------------- Для формирования заявки по позиции инструмента нужен класс этого инструмента, а его в таблице позиций нет. ---------------- В результате, чтобы найти класс надо делать "танцы с бубном" извлекать клиента по нему находить торговый счет по счету находить фирму и получать список торгуемых классов потом в классах искать тот, в каком есть данный инструмент. ----------------- Напоминает наблюдение гланд через зад. Занятие занятное , но бесполезное. ================= Спасибо
Чудно считает CalcBuySell
Пользователь
Сообщений: Регистрация: 30.01.2015
28.03.2022 15:26:29
Добрый день, -------------- Вопрос к знатокам: ----------------------------- Вычисляю функцией CalcBuySell сколько акций можно купить.
фрагмент кода: local qty1,comis1=CalcBuySell(clas, sec,"1737","NL0011100043",price, true,false); ------------------------- Поясняю, что ожидаю: ------------------ На учебном сервере денежных средств 300 тысяч рублей. ---------------- Данная функция должна считать комиссию и число лотов для покупки по указанной цене. Полагаю, что коммиссия должна быть примерно одинаковой (сумма денег одна) А число акций умноженное на цену одной и на количество их в лоте должна составлять примерно 300 тыс рублей ------------------- Для проверки, считаю количество и комиссию по формуле. -------------------------- В результате обозначено: ------------------- qt1,comis1 - расчет функции qt,comis - расчет формулы m - сумма денег исходная m1- расчет суммы денег по результатам функции ----------------------- результат вычисления: ============= акции, для которых результат функции и по формуле примерно одинаковый: ------------------ TATNP,m=299983, lotsize=1., qty1=937, m1=299881, qty=935, comis1=229.26, comis=749, price=319.8 ROSN,m=299983, lotsize=1., qty1=844, m1=299887, qty=842, comis1=225.54, comis=749, price=355.05 ------------- "чудеса в решете": -------------------- CHMF,m=299983, lotsize=1., qty1=1530, m1=1759940, qty=260, comis1=746.54, comis=749, price=1149.8 ---------- при цене 1150 рублей по формуле можно купить 260 акций, что вполне похоже на правду. ----------------------------- функция считает, что можно купить 1530 акций, при этом комиссия примерно одинаковая, что указывает что затрачено примено 300 тыс рубг ---------------------- следующее чудо: SBER,m=299983, lotsize=10., qty1=1349, m1=1759982, qty=229, comis1=751.81, comis=749, price=130.41 ----------- Сбербанк акция 130 рублей по формуле можно купить 229 лотов или 2290 акций, что правда. функция считает, что можно купить 1349 лотов, на сумму 1млн759 тыс 982 рублей Величина комиссии указывает что ее считали с суммы 300 тысяч. --------------------- еще один прикол: AFLT,m=299983, lotsize=10., qty1=6567, m1=1760716, qty=1116, comis1=760.2, comis=749, price=26.8 ================== Кто сие может объяснить? Спасибо
лишний элемент или так задумано?
Пользователь
Сообщений: Регистрация: 30.01.2015
20.03.2022 14:02:02
Добрый день На учебном сервере версия 9.4 l------------------- читаем код клиента
Код
message("всего=.. getNumberOf("client_codes") );
for i=0,getNumberOf("client_codes")-1 do
local x=getItem("client_codes",i);
message("i="..i..",cod="..tostring(x) );
end
получаем результат: всего=2 i=0,cod=1737 i=1,cod= -------------------- если я правильно понял, то должен быть всего один код клиента. и действительно код i=0,cod= 1737 но почему-то их два, i=1, cod=пусто. ------------------------ Что не так я делаю? Какой в этом пустом коде тайный смысл? ======================================= Огласите весь список, п..жалуста, в каких еще таблицах так сделано. Спасибо.
Самое слабое место QLUA
Пользователь
Сообщений: Регистрация: 30.01.2015
18.03.2022 22:02:00
Известно, что колбеки в QLUA блокируют основной поток терминала QUIK. Решение изначально было спорное, но в ту пору попытка переубедить разработчиков в их ошибке была безрезультатна. ----------------------- Как мера, якобы устраняющая данную проблему, по задумке разработчика QLUA был введен еще один поток для функции main. ----------------------- Поэтому Всем известна рекомендация разработчиков делать минимальные вычисления в колбеках и выполнять основные расчеты в функции main. ================== Однако, это кажущееся ускорение вычислений легко можно свести к нулю, что уверен и делается большинством программистов роботов на QLUA. =================== Рассказываю в чем фишка. ================ Экспериментируя с реализацией пула потоков, обнаружил, что потоки, использующие область глобальных переменных, а также функция main на самом деле не работают независимо от колбеков, а тоже останавливаются на время их работы. Очевидно, это связано с блокировкой области глобальных переменных при работе колбеков. ==================== В итоге, если у Вас в функции main используются глобальные переменные, а это, в том числе , источники данных, то параллельная работа функции main не получится. ------------------ В итоге поток Main будет останавливаться вместе с основным потоком терминала и Ваш робот на QLUA будет фактически работать в одном потоке с остановками на каждом колбеке. ========================== Прикольно, но есть решение, которое позволяет: во-первых, полностью убрать из QLUA эти монстры-колбеки, останавливающие основной поток и функцию main в указанных выше случаях. во-вторых, не останавливать основной поток вообще для передачи данных в другие потоки, которых может быть любое число. ========================= я сомневаюсь, что разработчики когда-нибудь решат это сделать, так как им платят брокеры, а брокерам это до лампочки. ---------------------------- Поэтому могу лишь рекомендовать писателям роботов свести к минимуму использование глобальных переменных в функции main.
подключение библиотеки qlua.dll к скриптам в новых потоках
Пользователь
Сообщений: Регистрация: 30.01.2015
16.03.2022 19:33:20
Добрый день, ------------- Вопрос к разработчикам QUIK или к тем, кто это решил. ------------- версия QUIK 9.4. -------------------- Возникла следующая проблема. =========== Написал библиотеку запуска произвольных скриптов Луа по событиям в отдельных потоках из пула потоков. ============ Все работает замечательно. ============= Решил в скрипте, запущенном в моем потоке, обратиться к функциям из библиотеки QLUA. ============ Например, подключиться к источнику данных: ----------------------- if ds==nil then ds=CreateDataSource("QJSIM","SBER",INTERVAL_M1) end -------------------- Мой скрипт имеет функцию main и запускается из функции main Вашего скрипта. ---------------- В вашей main все работает, а в моей - пишет ds=nil.
Попытка подключить через require "qlua" дает ошибку: ---------------- D:/lua-5.4.2/lua54.exe: error loading module 'qlua' from file 'D:/QUIK_SCRIPT/qlua.dll': Не найдена указанная процедура. ---------------------- Проверяю зависимости - Все находит. ------------------------- Что делаю не так? Спасибо.
не все то золото, что блестит
Пользователь
Сообщений: Регистрация: 30.01.2015
12.03.2022 17:38:55
информация к размышлению. Вопрос: Какую информацию мы получаем в реальности?. Для этого написал тест, который измеряет время реакции колбека относительно времени сервера. так как реальные торги сейчас не проводятся, то тестируем тестовый сервер. В итоге получаем следующий результат: Первое число -это время сервера, когда тот послал нам последнюю порцию данных. Например 17:16:22. Далее указано время , которое прошло с момента срабатывания последнего колбека QLUA например 723174.2 мкс, Т е прошло 0.7 секунды далее указан номер колбека например 15 - это колбек OnParam Обратите внимание на то, что далее время сервера не изменяется еще 9 значений. При этом время вызова колбека составляет не более 100 мкс, т е 0.0001 сек ---------------------------- что же это означает. Это означает, что данные мы получаем не чаще чем один раз в 0.7 секунды в виде пакета, Потом этот пакет пересылается нам в колбеки. В итоге вам кажется, что вы получаете данные в реальном времени, а в действительности с задержкой на 0.7 секунды. В реальных торгах задержка возможно и меньше, но передачу пакетом никто не отменял.
Скрытый текст
Скрытый текст
17:16:22,723174.2,15
Скрытый текст
17:16:22,1.7,15
Скрытый текст
17:16:22,0.9,15
Скрытый текст
17:16:22,109.5,15
Скрытый текст
17:16:22,5.9,15
Скрытый текст
17:16:22,58.3,15
Скрытый текст
17:16:22,1.2,15
Скрытый текст
17:16:22,52.4,15
Скрытый текст
17:16:22,1.2,15
Скрытый текст
17:16:22,98.1,16
Скрытый текст
17:16:23,1483618.3,15
Скрытый текст
17:16:23,6.5,15
Скрытый текст
17:16:23,1.4,15
Скрытый текст
17:16:23,1.0,15
Скрытый текст
17:16:23,1.0,15
Скрытый текст
17:16:23,1.1,15
Скрытый текст
17:16:23,6.3,15
Скрытый текст
17:16:23,41.0,15
Скрытый текст
17:16:23,1.5,15
Скрытый текст
17:16:23,21.4,15
Скрытый текст
17:16:23,38.5,15
Скрытый текст
17:16:23,1.4,15
Скрытый текст
17:16:23,42.8,15
Скрытый текст
17:16:23,1.4,15
Скрытый текст
17:16:23,11.6,15
Скрытый текст
17:16:23,1.4,15
Скрытый текст
17:16:23,89.5,16
Скрытый текст
17:16:25,1248861.3,15
Скрытый текст
17:16:25,1.6,15
Скрытый текст
17:16:25,1.0,15
Скрытый текст
17:16:25,1.1,15
Скрытый текст
17:16:25,1.1,15
Скрытый текст
17:16:25,1.2,15
Скрытый текст
17:16:25,38.6,15
Скрытый текст
17:16:25,1.5,15
Скрытый текст
17:16:25,45.9,15
Скрытый текст
17:16:25,1.6,15
Скрытый текст
17:16:25,82.5,16
Скрытый текст
17:16:26,1358274.8,15
Скрытый текст
17:16:26,1.1,15
Скрытый текст
17:16:26,0.7,15
Скрытый текст
17:16:26,0.9,15
Скрытый текст
17:16:26,64.4,15
Скрытый текст
17:16:26,16.5,15
Скрытый текст
17:16:26,8.3,15
Скрытый текст
17:16:26,31.7,15
Скрытый текст
17:16:26,4.7,15
Скрытый текст
17:16:26,1.0,15
Скрытый текст
17:16:26,4.5,15
Скрытый текст
17:16:26,66.3,16
Скрытый текст
17:16:27,1331523.3,15
Скрытый текст
17:16:27,3.6,15
Скрытый текст
17:16:27,1.2,15
Скрытый текст
17:16:27,17.9,15
Скрытый текст
17:16:27,1.4,15
Скрытый текст
17:16:27,1.1,15
Скрытый текст
17:16:27,7.0,15
Скрытый текст
17:16:27,1.4,15
Скрытый текст
17:16:27,1.1,15
Скрытый текст
17:16:27,34.3,15
Скрытый текст
17:16:27,23.9,15
Скрытый текст
17:16:27,1.3,15
Скрытый текст
17:16:27,1.1,15
Скрытый текст
17:16:27,1.0,15
Скрытый текст
17:16:27,1.1,15
Скрытый текст
17:16:27,80.0,16
Скрытый текст
17:16:29,1333937.6,15
Скрытый текст
17:16:29,1.6,15
Скрытый текст
17:16:29,1.2,15
Скрытый текст
17:16:29,1.2,15
Скрытый текст
17:16:29,1.2,15
Скрытый текст
17:16:29,48.8,15
Скрытый текст
17:16:29,12.7,15
Скрытый текст
17:16:29,1.5,15
Скрытый текст
17:16:29,1.2,15
Скрытый текст
17:16:29,56.7,15
Скрытый текст
17:16:29,40.9,15
Скрытый текст
17:16:29,1.6,15
Скрытый текст
17:16:29,1525.0,16
Скрытый текст
17:16:30,1350566.6,15
Скрытый текст
17:16:30,1.5,15
Скрытый текст
17:16:30,6.2,15
Скрытый текст
17:16:30,1.3,15
Скрытый текст
17:16:30,1.1,15
Скрытый текст
17:16:30,1.1,15
Скрытый текст
17:16:30,6.1,15
Скрытый текст
17:16:30,37.5,15
Скрытый текст
17:16:30,1.7,15
Скрытый текст
17:16:30,37.5,15
Скрытый текст
17:16:30,1.4,15
Скрытый текст
17:16:30,49.6,15
Скрытый текст
17:16:30,1.5,15
Скрытый текст
17:16:30,21.1,15
Скрытый текст
17:16:30,67.0,16
Скрытый текст
17:16:31,1389859.5,15
Скрытый текст
17:16:31,1.5,15
Скрытый текст
17:16:31,1.1,15
Скрытый текст
17:16:31,45.1,15
Скрытый текст
17:16:31,1.6,15
Скрытый текст
17:16:31,1.2,15
Скрытый текст
17:16:31,73.3,15
Скрытый текст
17:16:31,1.4,15
Скрытый текст
17:16:31,41.7,15
Скрытый текст
17:16:31,1.4,15
Скрытый текст
17:16:31,61.5,15
Скрытый текст
17:16:31,1.5,15
Скрытый текст
17:16:31,1.1,15
Скрытый текст
17:16:31,50.8,15
Скрытый текст
17:16:31,50.5,16
Скрытый текст
17:16:33,1373891.0,15
Скрытый текст
17:16:33,1.7,15
Скрытый текст
17:16:33,1.1,15
Скрытый текст
17:16:33,1.2,15
Скрытый текст
17:16:33,66.6,15
Скрытый текст
17:16:33,1.7,15
Скрытый текст
17:16:33,1.1,15
Скрытый текст
17:16:33,1.2,15
Скрытый текст
17:16:33,50.3,15
Скрытый текст
17:16:33,1.6,15
Скрытый текст
17:16:33,1.8,15
Скрытый текст
17:16:33,22.8,15
Скрытый текст
17:16:33,51.3,15
Скрытый текст
17:16:33,1.7,15
Скрытый текст
17:16:33,93.6,16
Скрытый текст
17:16:34,1311513.6,15
Скрытый текст
17:16:34,1.6,15
Скрытый текст
17:16:34,1.2,15
Скрытый текст
17:16:34,1.2,15
Скрытый текст
17:16:34,6.8,15
Скрытый текст
17:16:34,42.9,15
Скрытый текст
17:16:34,12.6,15
Скрытый текст
17:16:34,1.4,15
Скрытый текст
17:16:34,1.2,15
Скрытый текст
17:16:34,1.1,15
Скрытый текст
17:16:34,48.7,15
Скрытый текст
17:16:34,1.6,15
Скрытый текст
17:16:34,6.7,15
Скрытый текст
17:16:34,45.7,15
Скрытый текст
17:16:34,59.8,16
Скрытый текст
17:16:35,1233518.1,15
Скрытый текст
17:16:35,1.7,15
Скрытый текст
17:16:35,1.1,15
Скрытый текст
17:16:35,47.5,15
Скрытый текст
17:16:35,2.5,15
Скрытый текст
17:16:35,87.2,16
Скрытый текст
17:16:37,1187009.4,15
Скрытый текст
17:16:37,1.5,15
Скрытый текст
17:16:37,1.1,15
Скрытый текст
17:16:37,52.6,15
Скрытый текст
17:16:37,21.6,15
Скрытый текст
17:16:37,40.7,15
Скрытый текст
17:16:37,1.6,15
Скрытый текст
17:16:38,1249455.0,15
Что надо знать о LUA, чтобы не было мучительно больно.
Пользователь
Сообщений: Регистрация: 30.01.2015
04.03.2022 07:03:58
Добрый день, В данной теме предлагаю Вашему вниманию информацию о том, что у VM LUA (виртуальная машина луа) внутри. ------------------------------- Полагаю, что данный материал будет особенно полезным тем начинающим, которые буратино на фондовом рынке и чайники в программировании. ---------------------------- Основа VMLua - это таблицы. ------------------------------ Полагаю, что многие просто не представляют сложность реализации таблиц в VM Lua. ---------------------- Даю ссылку на статью. В ней речь идет о LuaJit - это более быстрый вариант VMLua, чем просто Lua 5.3 или 5.4. Но принцип организации работы с таблицами тот же. ------------------- Прошу:
Проблема запуска QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
20.01.2022 16:48:03
Привет, разработчики КВИК. Возникла проблема. Квик работал, работал и настал кирдык. ----------------------------------- Брокер сбарбанк ----------------- версия квик 8.7.1.3 ------------------- Соединение с сервером двухфакторное. -------------------------- При запуске КВИК получаю сообщение в окне сообщений:
Connection was closed by peer: Can’t get messege size from net. И все. Соединения нет. Что делать? Спасибо
APC в колбеках QLUA
Пользователь
Сообщений: Регистрация: 30.01.2015
25.09.2021 10:36:53
Предлагаю для скриптов LUA реализовать: 1) колбеки QLUA в виде asynchronous procedure call (APC)для потока main; 2) в одном скрипте создавать несколько потоков и с помощью APC распределять по ним обработку данных из терминала КВИК.
синхронизация функции main и колбеков
Пользователь
Сообщений: Регистрация: 30.01.2015
03.09.2021 17:52:26
Полагаю , что останов функции main c помощью sleep неудачное решение разработчиков. -------------------------------- Сам использую останов потока системным событием Event. Неоднократно предлагал разработчикам реализовать останов потока системным событием Event. Но воз и ныне там. ------------------------------ Чтобы показать наглядно эффективность предлагаемого способа реализовал следующий тест. ----------------------- Во всех колбеках поставил счетчик вызова и старт таймера. В функции main поставил останов таймера и запись в лог счетчиков событий всех колбеков и прошедшее время с момента вызова очередного колбека. ---------------------- Вот фрагмент лог файла: ... 93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95846,0 83>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95847,0 90>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95848,0 129>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15785,95848,0 110>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95848,0 261>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0 431>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0 88>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95851,0 85>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95852,0 131>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15787,95852,0 113>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95852,0 162>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95853,0 91>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95854,0 93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95854,0 294>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95855,0 .... На первой позиции время в микросекундах, прошедшее с момента вызова терминалом колбека до момента активации потока main скрипта. далее через запятую счетчики вызова колбеков. -------------------------------------------- Как видно из лог файла это время составляет примерно 100 мкс (компьютер слабый, WIN XP). -------------------------- Получается, что использование функции sleep либо приведет к постоянной активации потока и бесполезной загрузки ядра, либо к пропуску завершения работы колбеков. Обе ситуации плохо.
api c
Пользователь
Сообщений: Регистрация: 30.01.2015
29.07.2021 08:50:34
Добрый день, проблема следующая. ------------------ Использую в торговых роботах нейронные сети. ----------------------- Если нейронные сети встраивать на основе QLUA , то все работает медленно и кушает много памяти. Поэтому полноценный процесс обучения практически не реализуем. ------------------------------------- Реализовал векторную алгебру в виде библиотеки на CИ для QLUA. Скорость вычислений возрастает в 7-20 раз, а затраты памяти сокращаются во столько же. Процесс обучения реализуем. ------------------------------------------------ Но очень раздражает необходимость делать бессмысленную работу перегоняя данные туда и обратно а потом обратно и туда. Сначала функциями QLUA приходится вытаскивать из архива квика данные , преобразовывая их в формат луа, а потом функциями из своей библиотеки обратно их преобразовывать из формата луа в формат CИ --------------------------------- Просьба к разработчикам выложить API С для обращения к хранилищу данных терминала QUIK. ----------------- Спасибо
Брокер Сбербанк. Проблема с QUIK
Пользователь
Сообщений: Регистрация: 30.01.2015
02.03.2021 07:33:18
Вопрос к разработчикам. что делать? -------------------------------------- брокер Сбербанк QUIK версия 8.7.1.3 (для предыдущей было тоже самое) Сейчас - утренняя сессия изменяются данные лишь в стакане Графики и таблица позиций не обновляется. Не отображаются новые сделки. На графиках лишь вчерашний день. Так часто бывает и в начала вечерней сессии.
импорт данных в архив
Пользователь
Сообщений: Регистрация: 30.01.2015
25.09.2020 11:00:16
Для тестирования торговых роботов не хватает истории торгов. Просьба сделать возможность конвертации данных из текстового формата в формат файлов с данными типа .dat , либо выложить формат этих файлов.
Конвертор напишу и выложу в свободный доступ.
Ускорение работы скриптов, предложение по развитию QLUA
Пользователь
Сообщений: Регистрация: 30.01.2015
15.07.2020 07:34:39
Добрый день, Прошу разработчиков рассмотреть следующее предложение по развитию QLUA. ---------------- Суть проблемы. При создании нескольких скриптов приходится дублировать внешнюю среду функции main в каждом скрипте Т е все колбеки и все глобальные переменные Но так как все это исполняется в одном потоке создается существенное торможение работы терминала при большом числе скриптов. -------------------- Решение - предложение. Решить проблему можно двумя путями. Вариант1 Реализовать возможность создание в одном скрипте множество функций main Т е реализовать механизм запуска нескольких потоков в одном скрипте Ввариант2 Реализовать возможность работы множеству скриптов с одной глобальной областью Этот вариант реализуется, например, путем подмены указателя глобальной таблицы скрипта на указатель общей глобальной области Этот вариант я реализовал лет восемь назад для win32 и LUA 5.1, Теперь надо все переделывать на 64 и 5.3 ------------------- Поэтому предлагаю это сделать для всех буратин.
очереди
Пользователь
Сообщений: Регистрация: 30.01.2015
10.05.2020 10:45:47
Добрый день, вопрос к разработчикам. ---------------------- Рассмотрим такую ситуацию. На сервере есть очередь заявок длинною 100 первой стоит заявка клиента1 в текущий момент этот клиент подает точно такую же заявку, но с другим количеством ----------------------- Внимание вопросы: 1) как данную ситуацию обработает сервер квика 2) как данную ситуацию обработает сервер биржи --------------------- Варианты ответов 1) поместит заявку в очередь с номером 101 2) добавит заявку в очередь с номером 1 ------------ Спасибо
какой смысл замены lua5.1 на lua5.3
Пользователь
Сообщений: Регистрация: 30.01.2015
27.04.2020 07:57:18
Добрый день, Просьба пояснить почему в качестве новой версии в QUIK выбрана lua5.3 мое тестирование показывает, что версия 5.3 работает так же медленно как и 5.1 ------------------ а вот luajit, которая основана на Lua5.1 работает в 2 раза быстрее при исполнении скриптов и позволяет исполнять очень быстро и просто вставки на СИ увеличивая скорость исполнения до 50 раз. ---------------------------- кроме того версия LuaVela на основе luajit решает проблему ограничения памяти 2Гб. -------------------- Так в чем же тайный смысл замены 5.1 на 5.3? Спасибо
экспорт данных из скриптов
Пользователь
Сообщений: Регистрация: 30.01.2015
13.11.2019 21:33:37
Добрый день, Собрал новую версию своей библиотеки для QLUA экспорта данных (числа, строки , элементы таблицы) из скриптов. Отличается от известных тем, что экспорт осуществляется через ссылки . Пока вариант для 32 бит. Если есть желающие и умеющие тестить , стучитесь.
2-x кратный расчет индикатора
Пользователь
Сообщений: Регистрация: 30.01.2015
29.05.2019 07:28:36
Добрый день, Если вопрос уже обсуждался,просьба дать ссылку. Почему скрипт индикатора при его установке в окно рассчитывается два раза Т е если поставить вывод индекса то получим его изменение от 1 до мах два раза. ------------ Спасибо
перехват ошибки
Пользователь
Сообщений: Регистрация: 30.01.2015
29.05.2019 06:53:19
Добрый день, возможно проблема решена, тогда просьба дать ссылку. Писал об этой проблема лет надцать назад, но воз и ныне там. -------------- Прошу разработчиков решить следующую проблему. Если в скрипте индикатора есть сравнение с nil, то выводится окно ошибки , которое фактически блокирует возможность снять скрипт особенно в период сессии на боевом квике. если это не торговый режим, то хрен редьки не слаще. Приходится ждать всю историю данных.. -------------- Поэтому просьба сделать одно из двух 1) автоматическое снятие скрипта при возникновении подобной ошибки исполнения 2) возможность перехватить ошибку и сделать аварийный выход из скрипта -------------- Спасибо
версия 7.10
Пользователь
Сообщений: Регистрация: 30.01.2015
20.05.2017 13:44:52
Добрый день, Если я правильно понял, то в версии 7.10 при отсутствии свечей OnCalculate не вызывается. При этом индекс считается и OnCalculate будет вызван первый раз при произвольном индексе больше 1. -------------------------------------------- Вопрос к разработчикам: 1) Каким образом можно определить, что данная свеча первая в индикаторе, если ее номер может быть любым? Раньше это определялось до безобразия проста по индексу равному 1. -------------------------------- 2) Каким образом определять тот факт, что индикатор строится заново? ------------------------- Спасибо. ----------------------- P.S.: откатился на 7.5.
Проблема с WinRos
Пользователь
Сообщений: Регистрация: 30.01.2015
05.05.2016 06:57:52
Добрый день, Давно наблюдаю такую проблему. Если открыть квик без подключения к серверу, то WinRos блокирует открытие каталогов и некоторых приложений (например справочника винды) -------------------------------- Для устранения данной проблемы приходится каждый раз убивать WinRos из диспетчера. Полагаю, что это можно считать ошибкой в системе QUIK Просьба сделать так, чтобы WinRos запускалась лишь , если включен экспорт данных в Metastock Спасибо
DDE в QLUA
Пользователь
Сообщений: Регистрация: 30.01.2015
22.04.2016 17:34:47
Добрый день, Как известно, DDE самый простой и соответственно самый быстрый способ обмена данными. Он давно есть в КВИКЕ и позволяет получить данные из любой таблицы в сторонней программе, например данные из доски опционов, чего невозможно сделать средствами QLUA. ----------------------------- Предлагаю реализовать возможность получать данные по DDE в скриптах на LUA ---------------------------------- Спасибо
OnParam
Пользователь
Сообщений: Регистрация: 30.01.2015
20.04.2016 06:02:51
Добрый день, Предлагаю сделать возможным для колбека OnParam указание списка параметров активации. ---------------------- Поясняю. Так как OnParam реагирует на изменение любых текущих параметров всех инструментов, то его применение очень сильно грузит процессор, так как активация этого колбека происходит по каждому чиху каждому тику каждому изменению в очереди каждом ... ------------------------ В реальности же нет такой задачи, где требуется реагировать на все изменения текущих параметров. ----------------------- Как правило обычно требуется реагировать на изменение одного параметра. ------------------- В 99% это либо изменение очереди заявок, либо совершение сделки по инструменту. И ВСЕ --------------------- Поэтому было бы замечательно указать для OnParam например параметр "bid" и не париться с обработкой всех изменений и не лазить в хранилище для выяснения что же изменилось и кому оно надо. ------------------- Спасибо
про колбеки
Пользователь
Сообщений: Регистрация: 30.01.2015
31.03.2016 10:58:22
Добрый день, В качестве пожелания. 1) Очень удобно иметь возможность создавать колбеки в скриптах и индикаторах и вызывать их из любого скрипта или индикатора. 2) Очень удобно иметь возможность прочитать любые глобальные данные из любого скрипта или индикатора и вызвать на исполнение любую функцию в любом скрипте из любого скрипта или индикатора. -------------------- Я в настоящее время реализовал у себя эти механизмы в версии 6.17.3.6 Доволен, как кот у миски со сметаной. -------------------------- Благодарю за внимание.
getOrderByNumber
Пользователь
Сообщений: Регистрация: 30.01.2015
28.03.2016 12:42:47
Добрый день, хотелось, бы чтобы это функция позволяла выбирать и стоп заявки. Спасибо
про тики
Пользователь
Сообщений: Регистрация: 30.01.2015
26.03.2016 08:42:41
Добрый день, Как известно, обращаться к тикам можно двояко. Во-первых , в колбеке onAllTrade Во-вторых, в колбеке CreateDataSource ----------------- вопросы к знатокам: 1) В чем отличие обработки этих колбеков. 2) Какой колбек вызывается раньше. 3) как во втором случае получить всю информацию первого. Спасибо
удивительное рядом!!!
Пользователь
Сообщений: Регистрация: 30.01.2015
17.03.2016 10:01:49
Добрый день, Последнее время получаю вот такие фокусы. Вчера на вечерней сессии совершены сделки. А сегодня я вижу, что таких цен вчера не было, а сделки по таким ценам есть. т е цены были 10730, а мне впапродали по 10830. брокер меня разводит или биржа химичит или КВИК портачит? Ваше мнение?
QUIK версия 7.1 (вопросы)
Пользователь
Сообщений: Регистрация: 30.01.2015
12.03.2016 18:10:57
Добрый день, Поставил для тестирования версию 7.1.0.381 (юниор) Вопрос 1: При открытии окна меню сначала мелькает окно цветное, потом становится черно-белое (настройки цветов в дистрибутиве) ---------------------- Вот это мелькание так и будет? или это баг, который уберут? ---------------------- При этом заметил следующий прикол Если окно терминала на первом мониторе, то мелькает пустое белое окно, а если на втором то мелькает окно, в котором виден рабочий стол. ---------------------------------
ошибка в изображении сделок
Пользователь
Сообщений: Регистрация: 30.01.2015
10.03.2016 10:21:05
Добрый день, на представленной картинке стрелки вверх и вниз - это отображение сделок вечером вчера. Вчера они были на графике цены , а сегодня вне его. Это не мой скрипт, а отображение терминалом совершенных сделок. Кто может объяснить? Спасибо
не выгружается info.exe
Пользователь
Сообщений: Регистрация: 30.01.2015
09.03.2016 08:21:57
Добрый день, Обнаружил следующую проблему Вот такая функция: DS={}; function DS_6(cl,se) -- создание источников тиков local int=INTERVAL_TICK; local x=cl..se..tostring(int); if DS[x]==nil then local ds,er=CreateDataSource(cl,se,int);ds:SetEmptyCallback(); if err then Log(err,"err_ds"); else DS[x]=ds; end end end --------------------- Проблема возникает если запускаем квик автономно (сбрасываем окно запроса логин, например) Квик нормально загружается, но при закрытии его Окно квик закрывается , но процесс в памяти висит снять можно лишь убив процесс -------------------------- колбек onClose скрипта не вызывается. ------------------------ Если в функции убрать DS[x]=ds; то завершение нормальное. Могу предположить, что проблема в CreateDataSource(cl,se,int) и последующем сохранении ds таблицы, что не приводит к закрытию каких-то ожиданий в КВИКЕ. -------------------------- Так и ждет у моря погоды, а моря то и нет.
окно сообщений
Пользователь
Сообщений: Регистрация: 30.01.2015
02.03.2016 09:01:31
Добрый день, ув.разработчики ---------------------- Попробуйте сделать следующее: --------------------------------------- Сделайте так, чтобы, в период обработки в реальном времени, в индикаторе или скрипте на луа возникло обращение к несуществующей переменной (например сравнение с nil ). ------------------------------- Потом запустить КВИК в реальном режиме в открытой сессии. -------------------------------------- И после того, как появится окно с сообщения об ошибке, попытайтесь удалить этот индикатор с графика, либо отключить скрипт через таблицу скриптов. -------------------------------------- Уверяю Вас, Вы получите незабываемые эмоции в процессе вызвать меню для исполнения желаемых действий по удалению индикатора или отключению скрипта, так как появляющееся с каждым тиком окно сообщений будет закрывать это меню раньше Вас. -------------------------------------- Просьба сделайте так, что окно сообщений не мешало вызвать необходимое меню квика, а то игра в "кто быстрее" просто задолбала. ----------------------------------- Спасибо
ТВС
Пользователь
Сообщений: Регистрация: 30.01.2015
01.03.2016 14:12:49
Добрый день, просьба ответить на следующие вопросы, либо ткнуть в параграф документации. -------------------------------------------- 1) для работы колбек функции onAllTrade надо обязательно открыть таблицу всех сделок. Верно? ---------------------------------- 2) можно ли открыть ТВС из скрипта или лишь руками в терминале? --------------------------------------------------- 3) если заказать тиковый график CreateDataSource, открывается ли ТВС или тиковый график идет дополнительно? ----------------------------------------- Спасибо
Задержка данных при обмене с сервером
Пользователь
Сообщений: Регистрация: 30.01.2015
24.02.2016 08:44:21
Добрый день Вопрос к разработчикам QUIK. Наблюдаю следующую картину. 1) В информационном табло Задержка данных при обмене с сервером составляет при малой загрузке сервера брокера (нет торгов или вечерняя сессия) от 63 до 170 мс при большой загрузке (начало торгов активная сессия) 150 ... 250 мс (временами до 1 сек) 2) пинг на ip севера дает 16 мс ---------------------------- Получается, что запаздывание ответа от сервера терминалу в 10-20 раз больше, чем запаздывание за счет каналов связи. -------------------------- Вопрос: 1. Какая возможная причина такого запаздывания ответа сервера брокера? 2.Брокер умышленно создает дополнительное запаздывание? Верно? 3. Это делается средствами QUIK или доп оборудованием? 4. С какой целью это делается? Ваши варианты. Спасибо
изображение индикаторов
Пользователь
Сообщений: Регистрация: 30.01.2015
17.02.2016 11:54:02
Добрый день, вот такая ошибочка выходит: В данном случае применяется функция SetValue(i-1,m+2,GetValue(i-2, m+2)) где m+2 -номер индикатора, i - текущая свеча. алгоритм: Предыдущее значение заменяется на препердыдущее. В результате линия индикатора на свече делится пополам (1 и 2) Половинка 1 остается на старом уровне а половинка 2 переходит на новый.
QUIK(версия 7.0.4.10), приколы
Пользователь
Сообщений: Регистрация: 30.01.2015
24.01.2016 08:57:23
Обнаружил очередной прикол. На картинке есть линии тренда - горизонтальные белые линии внизу. А в меню нет пункта "удалить все тренды в текущем окне" Вопрос к знатокам: Как удалить данные тренды?
Проблема с диаграммами с несколькими окнами
Пользователь
Сообщений: Регистрация: 30.01.2015
01.10.2015 11:01:41
Если в одной диаграмме открываем несколько графических окон с инструментами и в одно из окон размещаем свой индикатор, то индикатор рисуется неверно Если в диаграмме лишь одно окно с этим индикатором, то все нормально. версия квик 6.17.3.6
Проблема с метками
Пользователь
Сообщений: Регистрация: 30.01.2015
01.10.2015 10:54:47
1) Если окно с индикатором, в котором используются метки, вынести, то невозможно удалить метки, в т ч. и из меню "Удалить все метки" . версия квик 6.17.3.6 (в предыдущих тоже самое)
платформа для создания роботов, создание роботов без знаний LUA и QPILE
Пользователь
Сообщений: Регистрация: 30.01.2015
29.07.2015 20:49:35
Добрый день, изучаю потребность в следующей разработанной мною платформе для создания роботов для qUIK ---------------------------------- Достоинство - не надо изучать премудрости LUA,QLUA,QPILE,C,C# и т д. Просто пишем свой любимый алгоритм на привычном и понятном языке. ----------------------- Пример: хотим купить, когда индикатор X пересекает индикатор Y снизу вверх. пишем:
BUY: X>Y
хотим продать , когда обратно Y>X пишем
SELL: Y>X
т е робот будет состоять из 2 строк. Вы запускаете его как скрипт луа и он торгует. Роботов можно печь как пирожки по десятку в день. --------------------------------------------------- Желающие приобрести подобную платформу просьба обращаться на мою почту, которую можно найти на моем сайте , либо на форуме.
Про метки
Пользователь
Сообщений: Регистрация: 30.01.2015
10.07.2015 07:37:52
Проблема (возможно кто-то уже решил): ------------------------------ Метки на графиках всегда привязываются к левой оси Y. Причем, их нельзя привязать к правой. А индикатор по умолчанию - к правой. Т е метки можно применить лишь к индикатору, который привязан к левой оси. А если графика два - цена и объем, то метки липнут к графику, который на левой оси (т е метки по цене, а слева - объем) в результате на экране меток нет. ------------------------------------------- Предложение (делал давно, наверное забыли) 1) сделать возможность перепривязывать метки по осям 2) сделать автоматическое привязывание меток и индикатора той оси, к которой привязан график с указанным тегом.
Встроенные индикаторы в скриптах индикаторов, Встроенные индикаторы в скриптах индикаторов
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2015 09:12:34
Добрый день, Если данный вопрос уже решен, то просьба дать ссылку. ------------------------------- Хотелось бы не тратить время на повторное программирование уже имеющихся индикаторов, а иметь возможность: 1) вызвать в скрипте расчет встроенного индикатора 2) Прочитать значения встроенного индикатора, размещенного в окне скрипта-индикатора, без создания руками или ногами идентификатора графика chart_tag. 3) Если такой возможности нет, то прошу зарегистрировать пожелание. Спасибо
метки в скрипте индикатора, применение функций работы с метками в скрипте индикатора
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2015 09:02:19
Добрый день, возможно вопрос уже решен. Тогда просьба дать ссылку. ------------------------------------------------- Чтобы использовать функции работы с метками необходимо изначально метить руками или ногами окно графика идентификатором chart_tag. ----------------------------------- ВопросЫ: 1) Есть ли возможность сделать это автоматом в скрипте индикатора? 2) Если есть значение chart_tag по умолчанию, то как его взять? 3) Если нет такой возможности, то просьба сделать. ----------- Спасибо