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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 72 След.
Какими заявками крупный игрок накапливает позицию?
 
Цитата
Serge123 написал:
Вопрос о том, как угадать, куда поведёт цену крупный игрок после периода накопления. В периоде накопления (боковике) рыночными или лимитными заявками крупный игрок накапливает позицию? Как ещё можно определить его действия?
Сомневаюсь что-то в такой гипотезе,
Предположу, что в боковике он либо просто поддерживает позицию,
либо вообще на другом рынке торгует.  
os.execute с правами админа
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
А зачем устанавливать системные часы?
Перед началом торгов время исправляю и в течение дня подправляю. Надо бы это корректировать из Lua скрипта, руки до всего не доходят...
включите синхронизацию по серверу точного времени и исправлять ничего не надо.
Вопросы к спецам по Lua и Lua C API
 
Под утечкой памяти  обычно понимают неконтролируемое ОС сокращения объема оперативной памяти.
Т е приложение занимает память, а когда завершается, то возвращает меньше, чем занимало.
В итоге память в системе безвозвратно сокращается.
Вопросы к спецам по Lua и Lua C API
 
В данном случае речь о стеке луа, а не о стеке функций С. Поэтому утечка памяти вообще не причем.
Утечка памяти связана с функциями malloc calloc realloc.
Вопросы к спецам по Lua и Lua C API
 
Цитата
Serge123 написал:
1. Будет ли утечка памяти, если C dll при работе со стеком Lua не будет вызывать lua_pop? Ведь сказано, что Lua при каждом вызове подпрограммы из C dll создаёт этот стек заново.

2. Решит ли проблему с возможной утечкой памяти, если не вызывать lua_pop, а в конце работы со стеком вызвать lua_settop(0)? Я думаю, что решит, т.к. lua_pop это макрос, который вызывает lua_settop.

3. Я попытался увидеть сборку мусора и написал такой код:
Код
   function   main ()
s  =   'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 
 local  s1  =   ''   ..  collectgarbage( "count" )  ..   '\n' 
s  =   nil 
s1  =  s1  ..  collectgarbage( "count" )  ..   '\n' 
collectgarbage( "collect" )
 sleep ( 10000 )
s1  =  s1  ..  collectgarbage( "count" )  ..   '\n' 
 message (s1)
 end 
  
Получил такой вывод:

37.5439453125
37.619140625
36.046875

Видно, что памяти освободилось меньше, чем занимала строка s. Как это объяснить?
утечки памяти не будет, но возможно переполнение стека. pop возвращает стек на начало.
Без него размер стека меньше на число параметров в нем.
os.execute с правами админа
 
Цитата
Serge123 написал:
GetLastError выдаёт 1314. На стр.  https://learn.microsoft.com/ru-ru/windows/win32/debug/system-error-codes--1300-1699-  читаю:

===
ERROR_PRIVILEGE_NOT_HELD
1314 (0x522)
Клиент не располагает требуемыми правами доступа.
===
согласен.
---------------------
А зачем устанавливать системные часы?
Можно ли узнать, что скрипт qlua не дополучает инфо по onalltrade/onquote?
 
Цитата
Serge123 написал:
Хм, а я как-то не обращал внимание на эти функции. Тогда выходит, что можно не загружать ЦП коллбэком OnAllTrade, если всё это можно брать напрямую из таблицы all_trades?

Хочу ещё уточнить, как узнавать направление сделки по флагам, описание на  https://luaq.ru/getItem.html  неясное:

===
Набор битовых флагов
Параметр Тип Описание
бит 0 (0x1) - Сделка на продажу
бит 1 (0x2) - Сделка на покупку
===

Такое чувство, что я всё время неправильно определяю направление (buy или sell). Я считал, что если младший бит = 0, то buy, а если младший бит = 1, то sell.

А из этого объяснения вроде бы следует, что если мл. бит = 1, то это sell, а если следующий за младшим битом бит = 1, то это buy, так? Вроде бы можно было обойтись одним мл. битом...
Так вроде все ясно из описания флагов:
бит 0 (0x1) - продажа  т е flags@1 ~=0
бит 1 (0x2) - покупка    flags@2 ~=0
os.execute с правами админа
 
Цитата
Serge123 написал:
SetLocalTime
Не факт что это ошибка из-за отсутствия прав.
Запросите сообщение об ошибке.  
Можно ли узнать, что скрипт qlua не дополучает инфо по onalltrade/onquote?
 
Цитата
Serge123 написал:
Насколько я понял, размер таблицы обезл. сделок можно получить через
Код
   getNumberOf ( 'all_trades' )
  
А как скрипту прочитать эту таблицу? По-моему, никак...
функцией «getItem», или  «SearchItems»
Можно ли узнать, что скрипт qlua не дополучает инфо по onalltrade/onquote?
 
можно поставить счетчик вызова колбека и сравнить его с размером таблицы обезличенных сделок.
Можно ли узнать, что скрипт qlua не дополучает инфо по onalltrade/onquote?
 
Цитата
Serge123 написал:
Я как-то заказал в Квике отчёт по всем заявкам или сделкам клиента за день, Квик задумался на 10 сек., а потом в файле, куда скрипт писал обезличенные сделки/содержимое стаканов за эти 10 сек. не было записей.
КВИК докачивает пропущенные значения.
Но я не проверял попадают ли они в колбек.
Их можно получить из таблицы обезличенных сделок.
os.execute с правами админа
 
Цитата
Serge123 написал:
SetLocalTime
Эта функция сама включаем права админа.
os.execute с правами админа
 
Цитата
Serge123 написал:
Ксати, powershell это делает:
start-process "C:\Program Files\Far Manager\Far.exe" -verb runas
Причём, винда не спрашивает подтверждения разрешений для Фара, как она это делает при таком запуске с пом. иконки. Но неудобно запускать powershell и вводить команду...
Интересно,  как Вы собираетесь изменять системные часы?  
Можно ли узнать, что скрипт qlua не дополучает инфо по onalltrade/onquote?
 
Цитата
Serge123 написал:
Если скрипт в коллбэке как-то притормаживает, то теряются эти сообщения. Неужели в Квике нет очереди, чтобы их не терять? Есть ли гарантированное время (скажем, 5 мс), что если коллбэк в него вписывается, то потерь данных гарантированно не будет? (Думаю, что его нет, т.к. интенсивность вызова коллбэка может быть высокой.) А если они были, можно ли как-то об этом узнать?
Они не теряются.  
Робот в виде скрипта индикатора
 
2024 Февраль  Сегодня



2024 Январь и Февраль
os.execute с правами админа
 
Цитата
Serge123 написал:
1. Как можно (если можно) вызвать из qlua ехе программку с правами админа, напр., чтобы скорректировать часы ПК? А если эта программка сидит в dll, то тогда как? Видимо, можно как-то повысить права вызываемой программы?

2. Верно ли, что с ключом /nowait можно вызывать программы так, чтобы вызывающая программа продолжала работать и не ждала завершения вызываемой программы?
Запустите КВИК с правами админа и все функции в нем,в т ч и в ваших dll , будут исполнятся с этими правами.
Что за хрень версия 10...
 
Цитата
funduk написал:
Скорее всего формат котировок немного поменялся (их можно вручную перенести, формат хоть и секретный, но очевидный), иначе нет смысла его затирать. Конечно перед апдейтом надо было бэкап делать. 11 версия уже есть. Название файла локализации менялось от версии к версии, подчерк убирался. Долгая загрузка часто значит, что много ошибок пишется в окно сообщений (см. размер tmsg.dat), почему-то это долгая операция.
Давно пытался разобраться в формате но не получилось. Если есть формат выложите. Напишу программу конвертации архива из текста в файлы dat и выложу в свободном доступе. А то потерялась статистика за 2 года, а я на ней робота обучаю.  
Как исправить ошибки после зависания?
 
У меня на компе стоят три версии 8 10 11
10 11 - демо сервер
8 - рабочая
Как исправить ошибки после зависания?
 
Цитата
Serge123 написал:
Это некорректно из-за записей/удалений ключей в реестре...
Видно, придётся поставить Квик на другой ПК и сравнить файлы оттуда с моими...
Квик не пишет ключей в реестр.
Что за хрень версия 10...
 
Нашел файл в бекапе за 21 год.
Но проблема осталась. КВИК стал загружаться на 10 секунд и исчезать
-----------------------
Удалил все лишнее
----------------------
В итоге вернулся на версию 8.7 но уничтожился архив с котировками.
----------------------
Ув Разработчики сделайте так ,
чтобы архив не затирался вашими глючными новыми версиями.
-----------------------------------------
Буду ждать 11 версию, 9 и 10 успешно пропускаем.
Что за хрень версия 10...
 
Решил сдуру поменять нормально работающую версию 8.7 на новую у сбербанка 10....
в итоге получился вроде бы тормоз.
---------------
Стал из бекапа восстанавливать и нате вам :


Ну и что теперь делать?
Как исправить ошибки после зависания?
 
Цитата
Serge123 написал:
Можно брать только у моего брокера, т.к. она настроена у него только на работу через этого брокера и для его клиентов использование Квика бесплатно. Но у брокера нет версии в зипе, а есть только установщик в ехе...
сделайте архив своего каталога. После этого  установите  КВИК в другой каталог.
Потом заберите что хотите из него в свой каталог.  
openresty и повторный вызов функции
 
Цитата
Vitalia написал:
openresty
может это поможет
https://habr.com/ru/articles/321864/
https://webhostinggeeks.com/blog/what-is-openresty-web-server/
Как исправить ошибки после зависания?
 
https://arqatech.com/ru/support/files/
Как исправить ошибки после зависания?
 
Цитата
Serge123 написал:
Не надо писать ерунду, разумеется, я перезагружал... А то, что микрософты пишут, что их NTFS ведёт журнал и при загрузке винды исправляет транзакции при зависании (синем экране), это тоже ерунда. Я давно ещё на вин хр видел, что после синего экрана винда не исправила попорченный файл ярлыка, имя ярлыка стало короче и его папка не открывалась. А после прогона scandisk имя ярлыка восстановилось и его папка стала рабочей.

Поэтому моё сообщение остаётся в силе: где взять последние версии исполняемых файлов Квика?
А разве на сайте брокера их нет?
Тогда скачайте с этого сайта.  
Еще можете их взять у любого брокера, у которого такая же версия как у Вас.  
Как исправить ошибки после зависания?
 
Цитата
Serge123 написал:
Сегодня загрузил Квик, в меню Сервисы опять увидел левые иконки слева от строк меню. Перезагрузил Квик - иконки исчезли. Такое ощущение, что где-то подпортились файлы. Это сам info.exe или какие-то ещё?

Как можно обновить этот info.exe, dll и другие исполняемые файлы? Почему никто не ответил?
Вы не можете испортить программы  exe и dll.
Вы можете испортить лишь то, что в памяти. Если перезагрузка КВИК не помогает, то попробуйте перезагрузить комп.
Пожелание по 1. OnQuote и 2. getQuoteLevel2
 
Цитата
Kalmar написал:
Цитата
Serge123 написал:
1-я вызывается даже чаще, чем происходят сделки, хотя, часто не несёт нужной информации.
Потому что не имеет никакого отношения к сделакам.
Она вызывается когда появляется котировка в стакане.
поправлю.
Биржа передает изменяющиеся строки в стакане.
Это не только появление, но и удаление,
а также изменение количества в существующей позиции.
 
таблица "depo_limits" . Что не так?
 
Цитата
Anton Belonogov написал:
nikolz, добрый день.

Верно понимаем, что описанное поведение больше не воспроизводилось?
верно
Индикатор Delta
 
Добрый день,
Написал индикатор Delta.
Скрипт 60 строк.
Пока он работает только для текущего дня.
Сам я им не пользуюсь, поэтому особенно не придумывал.
Вот такая картинка получилась для Сбера (нижний график ).
Рисует объему купить продать для тайма графика и накопительную функцию.

Работает быстро, если запустить с начала дня.
Если не сначала, то задумывается при запуске, так как для Сбера например получилось 35 тысяч сделок сегодня.
---------------------
Если кому надо, то пишите могу выложить nkDelta.luac  на какой-нибудь файлообменник.
Робот в виде скрипта индикатора
 
Цитата
Александр написал:
Это очень хорошо. А как транзакции отслеживать Пробовали? События приходят?
Да, закончил отлаживать модуль для торговли.
События в индикаторах не используются.
Все делается по таблицам. Без проблем.
------------------------------
Скрипт 110  строк.
----------------
Модуль в виде функции.
Входные параметры сигнал купить/продать и текущий номер свечи.
---------------------
Алгоритм такой :
-----------------------
Проверяем есть ли активная заявка.
Если есть, то проверяется время ее активности.
Если время ее активности истекло (задается в параметрах индикатора)
то заявка снимается.
----------------------
Если активных заявок нет , то определяется текущая позиция  и возможное количество для совершения сделки.
-----------------------------
В зависимости от направления позиции, сигнала, допустимого максимума в позиции и разрешения на шорт, определяется
количество в новой заявке.
-----------------------------
Выбор цены сделки пока вопрос открытый. Есть различные варианты.  Пока остановился на last+-step.
После этого выставляется новая заявка.
------------------------
Тестил на демо сервере примерно 500 сделок , полет нормальный.
 
Не выставляются заявки после открытия сессии.
 
Цитата
НиколайН написал:
Обновил QUIK до 11 версии. Проблема не исчезла. Продублировал вопрос тут - https://forum.quik.ru/messages/forum1/message74126/topic8484/#message74126
Предположу, что в скрипте зависает при определении начала сессии.
Гипотеза такая:
Возможно Вы используете функцию соединения с сервером, а она у вас срабатывает до открытия сессии и потом все зависает.
Когда вы разрываете соединение и снова соединяетесь, то функция срабатывает при открытой сессии и все работает.
Комиссии в системе
 
https://www.moex.com/a2193
https://habr.com/ru/articles/486716/
https://journal.tinkoff.ru/investment-report/
Предлагаю реализовать
 
Хвалюсь, с индикаторами

Предлагаю реализовать
 
это тоже не проблема.
Предлагаю реализовать
 
Цитата
Kolossi написал:
Никому такая реализация нахрен не нужна, что с ней не так?
Поясняю ...
1) Зачем загромождать робота функциями индикаторов, если есть внутренние в КВИКЕ.
2) Все что напишите на луа будет на порядок медленнее чем встроенные.
3) Написанные индикаторы сожрут память для их хранения и ее надо в 2 раза больше , чем для встроенных.
------------------  
У меня нет других проблем.
Но писать индикаторы на луа, которые уже написаны на СИ и встроены - это "производственный ан..изм."
Предлагаю реализовать
 
Цитата
Anton Belonogov написал:
nikolz, добрый день.

1) Вы можете загрузить Lua-скрипты индикаторов, аналогичных встроенным, с нашего сайта и вносить необходимые изменения в их код;
2) не совсем поняли, о каких идентификаторах идет речь. Просьба описать пожелание более подробно.
Не буду ругаться, но зачем давать очевидные советы.
----------------------
Я специально подчеркнул что речь о встроенных индикаторах.
Вам объяснить в чем разница?
Предлагаю реализовать
 
Добрый день,
Ув. разработчики
Предлагаю  реализовать возможность:
---------------------------
1) изменять параметры встроенных индикаторов   из скрипта индикатора.
-------------------------
2) устанавливать идентификатор индикатора из скрипта индикатора.
Индикаторы. OnCalculate. Количество полных проходов по всем свечам
 
Цитата
Nikolay написал:
Цитата
Anton Belonogov написал:
Илья ,

Действительно, в описанных Вами ситуациях вызов OnCalculate происходит дважды.
Мы исправим данную ошибку в одной из очередных версий ПО.
Это сейчас серьезно? Почему же все эти годы не исправлялось. Сообщения были об этом очень-очень давно.
Вполне серьезно. проблема была выявлена при появлении VMLua  в КВИКЕ.
Пришлось сделать костыли.
Более быстрый перебор ключ - значение в таблице
 
Цитата
Цитата
Serge123 написал:
Вот загадочное и интересное сообщение:  https://forum.quik.ru/messages/forum10/message34083/topic3921/#message34083
См. также typedef struct Table в  https://www.lua.org/source/5.1/lobject.h.html
Можно ли как-то получить адрес этой структуры таблицы в программе на Lua и C, чтобы, скажем, напрямую читать
TValue  *array;  /* array part */ ?
Т.е. в случае C минуя rawgeti и стек Lua?
Можно.  Делал это на 5.3.
таблица "depo_limits" . Что не так?
 
сейчас все нормально.
таблица "depo_limits" . Что не так?
 
Добрый день,
-----------------------
Проблема с чтением позиции по инструментам
----------------
В терминале позиция SBER есть  со сроком расчета T0 позиция 120


---------------
При чтении таблицы в скрипте
Код
local s="depo_limits";
local N1=getNumberOf(s)-1
for j=0,N1 do local x=getItem(s,j);
 if x and x.sec_code==sec then Qp=x.currentbal; jdep=j;
   Log:write(value2text(x,"depo=").."\n");Log:flush(); -- вывод в лог файл
   end;
end
есть только с limit_kind <0, естественно позиция НОЛЬ
Код
depo={
["trdaccid"]=NL0011100043,
["currentlimit"]=0.0,
["locked_buy"]=0.0,
["currentbal"]=0.0,
["limit_kind"]=-2000001,
["locked_buy_value"]=0.0,
["openlimit"]=0.0,
["openbal"]=0.0,
["awg_position_price"]=0.0,
["sec_code"]=SBER,
["locked_sell"]=0.0,
["wa_position_price"]=0.0,
["client_code"]=10326,
["wa_price_currency"]=SUR,
["locked_sell_value"]=0.0,
["firmid"]=NC0011100000}

версия 11.1.0.45
демо сервер.
----------------------------
Что не так?
Робот в виде скрипта индикатора
 
При запуске Квик работет в процессах , в приложениях его нет . В окне нет ., Кошмарит уже год , два .
 
Цитата
Александр Васильев написал:
конечно в 9.30
При запуске Квик работет в процессах , в приложениях его нет . В окне нет ., Кошмарит уже год , два .
 
Цитата
Александр Васильев написал:
Да как то , у вас таблица процессов , там нихера ничего сделать нельзя ,  а нет квика в приложениях , и фиг вы его увидите  .
Приложение QUIK называется info.exe
Робот в виде скрипта индикатора
 
Написал робота.
Получилось 180 строк, примерно 200 операторов.
---------------------
Робот позволяет написать правило для индикаторов на графике
и по сигналам этого правила покупает или продает  заданное количество.
При этом снимает заявки, если они не исполняются заданное время.
-------------------
Сейчас процесс отладки.
-----------------
Отладил режим советника.
Вот картинка сигналов робота. На графике два мувинга .

это основная часть робота-индикатора:
Код
paths = "D:/QUIK_SCRIPT/" -- путь к файлу nkbot24_func.luac
dofile(paths.."nkbot24_func.luac")

Settings.account=""; Settings.client=""; --вписать счет и клиент
Settings.Nind=2;
function OnCalculate(i)
   Hi,Li=H(i),L(i);
   if i==1 then _nkInit(); return end--инициализация
   _getI(i); --читаем значения индикаторов
   f=_cross(1,1,2,1,i);  -- сигнал пересечение линий индикаторов
   _torg(f,i); --выставляем заявки по пересечению
   return SE,BU;  -- отображаем сигналы в режиме советника
end

Хотел выложить nkbot24_func.luac, но форум не принимает такие файлы.
--------------
При запуске Квик работет в процессах , в приложениях его нет . В окне нет ., Кошмарит уже год , два .
 
Цитата
Александр Васильев написал:
Ну тогда внимательно читаем заголовок , в процессах квик есть , работает , а в приложениях его НЕТ ( не развернуть , не свернуть ) а из процесса его никак не выдернуть в окно . Смыл сообщения , я столько мучился и во на тебе , нашёл в 2016 году . А ведь всегда искал . А скрипт дело 10 е  пару дней  пока .
Ну внимательно читаем - написано на картинке Приложений(7)
седьмое- это КВИК.
Что не так,
Индикаторы. OnCalculate. Количество полных проходов по всем свечам
 
можно еще проще сделать:
Код
function OnCalculate(index)
 
  if index == 1 then
    
    _ds = getDataSourceInfo()
 --....
    
  end
  
  return 0
  
end 


вообще не определять, будет глобальным.
При запуске Квик работет в процессах , в приложениях его нет . В окне нет ., Кошмарит уже год , два .
 
Цитата
Александр Васильев написал:
отвечу на заголовок:
приложения - это процессы.
И КВИК там и работает.
Вот картинка диспетчера задач:  Читаем внимательно надписи вкладок и открытого окна

====================
Относительно ошибок при загрузке скрипта.
Уверен, что ошибки в Вашем скрипте.
Покажите Ваш скрипт, если хотите их иcправить.
Индикаторы. OnCalculate. Количество полных проходов по всем свечам
 
Цитата
Илья написал:
Есть ли вариант сохранения состояния расчета между вызовами OnCalculate?

Вчера пытался в таблицу Settings  добавить свою таблицу рассчитанных при первом проходе значений, чтобы при следующих просто из нее вытащить. Знаю, что в руководстве написано "Типы пользовательских параметров: числа и строки"
До перезапуска терминала (накидал скрипт, пока терминал работал), вроде, получилось: значения и сохранялись, и выбирались.
Но при последующем запуске терминала выводилась ошибка об отсутствии моей таблицы.
Хотел сделать через замыкание, но, опять же, где хранить этот объект?
Опишите переменную вне функции OnCalculate.  
Например, у Вас выше написано так:
Код
function OnCalculate(index)
  
  local _ds = nil
  
  if index == 1 then
    
    _ds = getDataSourceInfo()
 --....
    
  end
  
  return 0
  
end 

переменная _ds всегда затирается при входе в OnCalculate
чтобы этого не было сделайте так:
Код
local _ds;
function OnCalculate(index)
  if index == 1 then   
    _ds = getDataSourceInfo()
  --....
  end
 
  return 0
  
end
Робот в виде скрипта индикатора
 
Добрый  день,
Рассказываю, как просто сделать робота в виде скрипта индикатора.
Сначала картинка работы такого робота.


В чем достоинство такого робота по сравнению с роботом на основе колбеков.
Робот значительно проще написать
Он загружается на график торгуемого инструмента,
Если для реализации алгоритма торговли  достаточно встроенных в QUIK индикаторов,
то нет надобности их программировать.
----------------  
Пример варианта основного  фрагмента такого робота:
Код
name="nkbot24"
Settings={["Name"] =name,["line"] ={},["account"]="",["client"]="",["Q"]=1;["wt"]=1000,["short"]=0}
Settings.Nind=0;

paths = "D:/QUIK_SCRIPT/"
package.cpath =package.cpath ..";"..paths.."?.dll";
package.path =package.path..paths.."?.lua;"
fnlog=paths..name..".log"; Log=io.open(fnlog,"w")

loadfile(paths.."nkbot24_func.lua")

function nkbuy(i,f)
---алгоритм покупки
 -- f=cross(1,1,2,1,1);
return f;
end

function nksell(i,f)
--алгоритм продажи
-- f=cross(1,1,2,1,1);
return f;
end

function nobuy(i,f)
--фильтр покупки
return f;
end

function nosell(i,f)
--фильтр продажи
return f;
end

function OnCalculate(i)
   local i1=i-1;
   if i==1 then nkInit(); return end
   if i~=i_ then    getI()   end
   N,torder=order(N);    Q=depo();
   if #t==0 then
--      f,j=cross(1,1,2,1,5); --пересечение двух индикаторов
      if i~=i_ then torg(nkbuysel(i));end
      M=os.clock();
   else
      del_ord(M);
   end
   i_=i;
return M1,M2;
end
Продолжение вероятно следует...
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 72 След.
Наверх