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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 74 След.
Новая версия (11.3.1.2) в разы дольше загружается, После обновления QUIK до версии 11.3.1.2 стал загружаться более 30 секунд
 
Цитата
Сергей9933 написал:
Цитата
nikolz написал:
   Если Вы проверяете .junior на демо сервере.....

я не " проверяю .junior на демо сервере ", а просто запускаю QUIK (мышкой на компьютере) и жду более 30 секунд, пока он загрузится до окна ввода пароля

надеюсь, понятно объяснил))
специально для Вас сделал так.
1) jоткрываем терминал  QUIK ( таблица обезличенных сделок открыта изначально) -  время 30 секунд
2) удаляем таблицу, закрываем терминал QUIK.   Открываем терминал QUIK -время 10 секунд
-----------------------
Надеюсь, понятно объяснил.
Новая версия (11.3.1.2) в разы дольше загружается, После обновления QUIK до версии 11.3.1.2 стал загружаться более 30 секунд
 
Цитата
Сергей9933 написал:
Ситуация:

Недавно от Финама прилетело обновление QUIK до версии 11.3.1.2.
Установил и обнаружил, что загрузка (до окна ввода пароля) новой версии занимает  от 30 до 40 секунд .
Медленная загрузка (до окна ввода пароля) версии 11.3.1.2 наблюдается на разных устройствах с разными версиями Windows.
При этом, в таск-менеджере Windows диск не активен, память не распухает, процессор грузится на 5-15%.
Скорость не зависит от повторений загрузки (и первая и вторая и третья загрузка идут одинаково медленно)

QUIK много лет загружаю батником:

del info.log
del alltrade.dat
del archive
info.exe -clear

Загрузка (до окна ввода пароля) предыдущих версий всегда занимала не более 10 секунд.

Вопрос:

Можно как-то ускорить процесс загрузки новой версии до привычных 10 секунд?
Если Вы проверяете .junior на демо сервере, то там у них в терминале установлено прием и отображение обезличенных сделок аж в пяти таблицах.
А при старте это будет примерно 500 тысяч строк
Вот это и тормозит.
Чтобы исправить надо переделать все настройки окон и убрать таблицы обезличенных сделок.
---------------
Разработчики уберите ваши настройки в терминале junior.
Ошибка выставления ордера
 
Цитата
Михаил Филимонов написал:
Да, и еще погрешность фунции засечки времени, кажется 16 мс., да и саму
ошибку       Указанная транзакция по указанному классу не найдена: "SPBFUT".
выдает ДЛЛ или терминал, это не мое.
Цитата
Михаил Филимонов написал:
Конечно различается, ордер "слетал" на Биржу и вернулся ответ.

А где ошибка, то все происходит на локальном компе, так что время не показатель.

Обидно то, что 3 с лишнем года все работало как часы, а вот теперь появилась проблема.
Не знаю как устроен внутри Квик, но с МТ-5 постоянно "цапался" с разработчиками, как новый билд,
так вылезает какая-либо ошибка.  
Так как у Вас время при возникновении ошибки не отличается, то это говорит о том, что заявка никуда не летала.
Это возможно, если ошибка в параметрах заявки. Т е ошибку обнаружил сам терминал.
надо вывести в лог файл содержимое самой заявки. Возможно оно искажается либо там nil.
Ошибка выставления ордера
 
посмотрите на время:
25.07.2024 10:00:18.501 --> SetEnterOrder: Ордер CMH5 отправлен.
25.07.2024 10:00:18.501 --> Ошибка:  Указанная транзакция по указанному классу не найдена: "SPBFUT".
--------------------
там где ошибки нет, время различается.
--------------
Предположу, что  еще не прошла регистрация транзакции  и что-то ее не нашло.  
Ошибка: Значение "" превышает допустимый размер, постоянно пишется ошибка: Значение "" превышает допустимый размер
 
2032842672992960000 - это 19 цифр  как и
2017080074297200000
предположу что сообщение относится не к номеру заявки.
сообщение в Telegram - это просто
 
Цитата
paluke написал:
Потом подключаетесь к своему боту, пишите ему что-нибудь, дергаете api (можно прямо в браузере открыть) и ищите там chat id.
можно не писать, а сразу спрашивать.
Изменено: Yaroslav Grebennikov - 24.07.2024 12:23:09
Хочу заказать скрипт., Хочу заказать скрипт по поиску роботов, которые покупают или продают рыночными заявками.
 
Написал первый вариант такого скрипта.
Пускаю его на тест сервере.
Он обрабатывает всю таблицу  это 330 инструментов и 1 млн 100 тысяч записей
Для каждого инструмента и каждой записи он ищет по истории нужных роботов.
Примерно так.
Хочу заказать скрипт., Хочу заказать скрипт по поиску роботов, которые покупают или продают рыночными заявками.
 
Цитата
VPM написал:
Это небольшая но рабочая утилита, которая умеет управляться с таблицей всех сделок, то есть тиками.
Конечно это не то что Вы хотите получить, но этот не большой скрипт легко превращается в поиск необходимых Вам данных и многое еще чего, достаточно дописать фильтры.
Что делает данный скрипт, он предназначен для использования в торговой платформе QUIK, создает таблицу, отображающую баланс покупок и продаж за последние 5 минут, и обновляет ее при поступлении новых обезличенных сделок, в окно выводится баланс полученный за каждую 1 минуту.
Это "классический" вариант, алгоритм и идея которого взяты от сюда QuikLuaCSharp.ru, за что автору отдельное "большое человеческое спасибо!",
все что я сделал это превратил его в класс - модуль луа, для удобства использования в своих программах. В общем удачи.
[CODE][/CODE]
это вообще не из той оперы.
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
Цитата
Дмитрий Б. написал:
 
Цитата
Лена  написал:
по факту выходит, что квик не сделан для работы с большим числом графиковю
и это очень плохо
 У меня более 100 вкладок, на каждом по дваграфика и стакан. Светлая тема. Ничего не виснет. Надо искать причину.
у меня ДВА компа, ДВЕ оси, ДВА квика, десятка и 11, и везде одна проблема, тема черная, мне так удобно, зачем ее было создавать, если при ее работе все вылетает.
И это явно не мо япроблема, раз на двух РАЗНЫХ компьютерах эта проблема вылазит. Памяти и всего прочего хватает, индикаторы не использую, на графиках только уровни. в ондом окне  5 ТФ и стакан, около 20 вкладок. Ели часто переключаюсь между вкладками, то квик вылетает, если работаю с одной, то держит.
Увы, но проблема Ваша.  Иначе Вы бы не писали на форуме.
----------------------------
Поясняю еще раз медленно, почему так и как это обнаружить:
----------------------------
У Вас в общей сложности  более 100 графиков (20 вкладок 5 ТФ на графике) и 20 стаканов.
-------------------------
При этом, когда закладка не активна, то окна на ней не рисуются.
---------------------------
Когда Вы начинаете бегать по вкладкам, то у вас начинается перерисовка всех окон вкладки.
и компьютер просто затыкается.
-----------------------
Если хотите это увидеть, то откройте радом с квиком окно диспетчера задач Процессы.
--------------------------
Когда начнете бегать между закладками, то увидите на сколько процентов у Вас загрузится процессор.
 
Хочу заказать скрипт., Хочу заказать скрипт по поиску роботов, которые покупают или продают рыночными заявками.
 
Цитата
funduk написал:
Конечно же смотрел, потому и спрашиваю.
скрипт будет игнорировать такого робота.
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
по факту выходит, что квик не сделан для работы с большим числом графиковю
и это очень плохо
скорее всего у Вас не хватает мощности компа.
Сколько у Вас открыто окон?
Я Вам советовал посмотреть  в диспетчере задач . И все будет понятно.
Здравствуйте подскажите пожалуйста. Почему есть доход но нет свободных средств, что делать. Демо режим мобильная версияЗдравствуйте подскажите пожалуйста. Почему есть доход но нет свободных средств, что делать. Демо режим мобильная версия Quik .
 
Цитата
Василий 1995 написал:
Здравствуйте подскажите пожалуйста. Почему есть доход но нет свободных средств, что делать. Демо режим мобильная версия Quik.
зарегистрируйте новый демо доступ
сообщение в Telegram - это просто
 
Код
token="......"  --робот в telegram
chat_id="....." --ваш в telegram
curl="C:/Windows/System32/curl.exe --silent --output null "..'"'.."https://api.telegram.org/bot"..token.."/sendMessage?chat_id="..chat_id.."&text="
------------------------------
mes="привет!!"   --сообщение
os.execute(curl..mes..'"');  --отправляем
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
хорошо бы увидеть диспетчер задач (загрузку процессора) и скрин экрана квик.
Вы случаем тики не отображаете ?
или таблицу обезличенных сделок случаем не смотрите?
Если так, смотрите загрузку процессора.
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Цитата
Лена написал:
Цитата
Nikolay написал:
Вы бы хотя бы какую-то информацию предоставили - версия терминала, темная или светлая тема, объем оперативной памяти рабочего места, установлен ли антивирус и т.д.
одна версия квика 10, вторая 11, обновление до последней версии не решило проблем, я писала ваше.
оперативка на одном компе 8 гиг, на другом 16.
с моими системами ВСЕ в порядке.

рабочая тема темная.

еще раз пишу, вылетает, если я сижу не в одном графике. а листаю вкладки.

антивирус в одном компе есть в другом нет
смените тему на светлую
Вылетает квик 50 раз за сессию!, вылетает квик при работе в период торговой сессии
 
Покажите скрин диспетчера задач(производительность,процессы) , когда это происходит.
Проблемы с КВИК у Сберброкера.на ИИС, Постоянно станоятся недоступны квальские бумаги и маржа.
 
Цитата
Alexey Ivannikov написал:
Цитата
Михаил написал:
В последнее время постоянно испытываю проблемы у Сберброкера на ИИС = при выставлении заявки выскакивает красное окно, что либо маржа недоступна, либо я не квал.инвестор. Надо ли говорить, что и маржа есть, и я квал. Происходит это на ИИС, на обычном брок.счете всё нормально. Так же заявки штатно выставляются через МП Сбер Инвестиции. Версия квика 11.1.1.11, выше не обновляется. Глюк появляется рэндомно, но на целый день, на след.день обычно пропадает и всё нормально. Звонил в поддержку Сбера - там все как обычно, составляют обращение, ответ на которое ждать 30 дней. Что я могу сделать на своей стороне? Очень это раздражает  
Добрый день.

Судя по описанию, некорректная настройка может присутствовать на каком-то из серверов Вашего брокера, куда Вы время от времени подключаетесь. Рекомендуем дождаться ответа от брокера, пока же можно при появлении ошибки пробовать переподключаться к серверу (есть вероятность попасть на другой сервер, на котором некорректной настройки не присутствует).
у сбербанка один ip адрес сервера.
Хочу заказать скрипт., Хочу заказать скрипт по поиску роботов, которые покупают или продают рыночными заявками.
 
Цитата
SellBuyStyle написал:
Цитата
Цитата
И по поводу цен. Считаю пример не уместным. Приходя в магазин, вы видите в первую очередь цены на смартфоны и автомобили.
То же самое касается различных услуг, исполнитель называет свои цены смотря на объём работ.
Я понимаю ваше правило, но я не готов тыкать пальцем в небо гадая цены. В конце концов я трейдер, моя задача анализировать цены, а не гадать :D
Чтобы реально определить трудоемкость серьезной разработки, а не поделки в 10 операторов, требуется тщательная проработка тех задания.
---------------------
Каждая хотелка, если ее нет бесплатно в интернете, это индивидуальный заказ, типа "смартфон с экранами с двух сторон".
----------------------
Как правило, то, что хочет заказчик не соответствует тому, что он написал за пять минут раздумий над своей хотелкой.
----------------------
Если тех задание не написано с анализом  возможных ситуаций и тщательным тестированием,
то получится поделка, которую долго будет дорабатывать разработчик ,
либо будет долго ругаться заказчик, что разработчик плохой и сделал ему то, что работает не так, как он хочет.
-----------------------------------
Вы предлагаете разработчику тыкать в небо и угадывать.
Циклические массивы - это просто
 
https://habr.com/ru/articles/828602/
Хочу заказать скрипт., Хочу заказать скрипт по поиску роботов, которые покупают или продают рыночными заявками.
 
Цитата
SellBuyStyle написал:
Здравствуйте! Хочу заказать скрипт по поиску роботов, которые покупают или продают по рынку.
Для примерного понимания ТЗ, есть бесплатный скринер: ( https://www.youtube.com/watch?v=-pTgrdbgpcg )
Мне нужно то же самое только более доработанное и лёгкое. Мне не нужен лишний функционал который имеется в этом скринере, меня интересует только поиск роботов.
В этом скринере есть ряд недостатков и недостающих функций, из-за чего хочу заказать скрипт. В программировании ничего не понимаю, по этому финансово оценить никак не могу. Можете писать свои предложения в ЛС или в тему.
Функции которые нужны в скрипте:
1) Определение роботов (Инструмент; Лотаж; Направление; Периодичность (Вплоть до миллисекунд); Время включения; Количество бросков; Время выключения)
2) Определение разнолотовых роботов. Например, робот с периодичностью 20сек кидает в рынок заявки объёмом 1105-1106. Скрипт должен их относить к одному роботу и выводить периодичность бросков (До миллисекунд).
3) Истории роботов, показывает когда скрипт заметил их и когда они выключились, какая была периодичность бросков (Время когда их заметил и когда они выключились можно было экспортировать в EXСEL)
4) Гибкие настройки. Например, регулировать процент/лотаж возможного отклонения объёма робота. Выбирать по каким бумагам будет работать скрипт.
5) Ну и просто звуковое оповещение в случае обнаружения робота
Постарался описать всё, жду любой обратной связи)
PS Не знаю возможно ли это уложить в скрипт, потому что вообще не шарю, поправьте если не прав.  
Правильно понял , что критерий обнаружения это равные объемы с одинаковым периодом покупаются и продаются?
Если верно, то скажите , Вы где читали или есть статистика, что такие дебильные роботы кто-то применяем?
----------------
Написать можно любую хотелку за Ваши деньги.
Но у меня правило.
Кому надо, тот и говорит за сколько надо.
Вы же не знаете как делать смартфон или автомобиль, но знаете за сколько хотите купить.
Пишите бюджет и время в личку.
Куда все подевались?
 
подчистил пример тестов ранее:
Код
local size = 1000000 local N=1023  local F = {}

local function shiftArray(x)
    F[3] = F[2]    F[2] = F[1]  F[1] = x  end
start = os.clock() for I=1,size do shiftArray(I) end time = 1000000*(os.clock()- start)/size
print("1. вариант 1(мкс):",time)

local index=0;
local function addElement(x) index=(index % 3)+1 F[index] = x end
start = os.clock()  for I=1,size do addElement(I) end time = 1000000*(os.clock()- start)/size
print("2. вариант 1a(мкс):", time)

index=0;
local function addElement(x)
    index=(index%3)+1 F[index]=x
    local result = {}  for i = 1,3 do  result[i]=F[(index-i+3)%3 + 1]    end
    return result
end
local index=0 start= os.clock() for I=1,size do  addElement(I)  end time = 1000000*(os.clock()- start)/size
print("3. вариант 2:(мкс):", time)

---- 3. Простой вариант с переменной currentIndex
local cIndex = 1
local function addElement(x) F[cIndex]=x cIndex=cIndex+1 if cIndex>N then cIndex=1 end end
start = os.clock()  for i= 1, size do   addElement(i) end  time = 1000000*(os.clock()- start)/size
print("4. вариант 3(мкс):", time)

local cIndex=1
local function addElementNK(x) F[cIndex&N]=x cIndex=cIndex + 1 end
start=os.clock() for i = 1, size do    addElementNK(i) end  time = 1000000*(os.clock()- start)/size
print("5. вариант NK(мкс):", time)

local cIndex = 1
start=os.clock() for i = 1, size do F[cIndex&N]=i;cIndex=cIndex+1 end time = 1000000*(os.clock()- start)/size
print("6. вариант NK без функции(мкс):", time)

результат Lua 5.4
Код
1. вариант 1(мкс):   0.047
2. вариант 1a(мкс):   0.048
3. вариант 2:(мкс):   0.721
4. вариант 3(мкс):   0.045
5. вариант NK(мкс):   0.04
6. вариант NK без функции(мкс):   0.012
>Exit code: 0
Куда все подевались?
 
VPM,
вот этот вариант можно  сделать еще быстрее:
это ваш вариант
Код
---- 3. Простой вариант с переменной currentIndex
local F = {} for i = 1, 1000 do  F[i]=0 end
size=1000000
local N=1024
local currentIndex = 1
local function addElement(x) F[currentIndex]=x currentIndex=currentIndex+1 if currentIndex>N then currentIndex=1 end return F end
local start_time = os.clock()
for i = 1, size do   addElement(i) end -- повторяем 1 млн.
local end_time = os.clock()
print("4. Время выполнения для варианта 3:", end_time - start_time, "секунд")
это мой вариант:
Код
local N=1024
local F = {} for i = 1,N do  F[i]=0 end
size=1000000
local currentIndex = 1
local function addElementNK(x) F[currentIndex&(N-1)]=x currentIndex=currentIndex + 1 return F end
local start_time = os.clock()
for i = 1, size do    addElementNK(i) end -- повторяем 1 млн.
local end_time = os.clock()
print("5. Время выполнения для варианта NK:", end_time - start_time, "секунд")

это результат:
Код
4. Время выполнения для варианта 3:   0.046   секунд
5. Время выполнения для варианта NK:   0.043   секунд

Пару слов без протокола.
В этих функциях лишним является оператор return F
т к нет смысла возвращать то, что изначально определено вне функции
тоже самое относится и к переменной currentIndex
нет смысла ее индексировать внутри функции, можно снаружи
в моем случае все можно записать  так:
Код
local N=1024
local F = {} for i = 1,N do  F[i]=0 end
size=1000000
local currentIndex = 1
local start_time = os.clock()
for i = 1, size do    F[currentIndex&(N-1)]=i;currentIndex=currentIndex + 1 end -- повторяем 1 млн.
local end_time = os.clock()
print("6. Время выполнения для варианта NK без функции:", end_time - start_time, "секунд")
результат:
Код
6. Время выполнения для варианта NK без функции:   0.014   секунд
Куда все подевались?
 
а это время вычисления для 1 млн.элементов для циклического массива в 1000 элементов
для стека указано время push pop
для очереди указано время записи и извлечения
Lua 5.4
Код
Время выполнения стек 0(сек):   0.048,0.051
Время выполнения очередь(сек):   0.036,0.051
>Exit code: 0

Luajit
Код
Время выполнения стек 0(сек):   0.003,0.001
Время выполнения очередь(сек):   0,0.001
Куда все подевались?
 
Если интересует производительность, то вот результат запуска скрипта, который выше, в lua 5.4 и luajit
-------------
lua5.4
Код
1. Время выполнения для варианта 1:   0.005   секунд
2. Время выполнения для варианта 1a:   0.005   секунд
3. Время выполнения для варианта 2:   0.077   секунд
4. Время выполнения для варианта 3:   0.004   секунд
>Exit code: 0

luajit
Код
1. Время выполнения для варианта 1:   0.001   секунд
2. Время выполнения для варианта 1a:   0.001   секунд
3. Время выполнения для варианта 2:   0.015   секунд
4. Время выполнения для варианта 3:   0   секунд
>Exit code: 0
Все индикаторы на Lua
 
Цитата
Сергей написал:
Благодарю, я так и предположил, что двойной расчёт идет.
Написал "костыль", теперь показывает верно, правда только с первого просмотра,
после обновления свечи опять слетает, но мне достаточно для анализа.  
-------------------------------
Создателям QUIK  'респект'
проблема решается путем установки в начальное значение всех переменных при индексе=1
например,так ваш скрипт:
Код
name="*Vet_Rollback"
Settings={Name =name};

function OnCalculate(i)
  local Hi,Li=H(i),L(i)
  if i==1 then
   maxh=0
  else
  if Hi then
    if maxh<Hi then maxh = Hi end
    rollback=(Li-maxh)/maxh * 100
    message(tostring(maxh..";"..Hi..";"..Li..";"..rollback))
  end
  end
return rollback
end


function Init()
Settings.line ={ { Color = RGB(153, 204, 0),Type = TYPE_HISTOGRAM,Width = 0}}
return #Settings.line
end

Все индикаторы на Lua
 
Цитата
Сергей написал:
что бы понятнее было, на графике просадка составила -31%, а на индикаторе -36, как от самого последнего хая.
У Вас так и считает скрипт.
Т е просадка вычисляется от самого большого High.
-------------------
Есть такая особенность в расчетах индикаторов:
--------------------
Индикатор  при запуске вычисляется два раза.
В первый раз в нем запомнится самый большой максимум на графике
Во второй раз вы и получите просадку всех значений относительного этого максимума.
--------------
Такой способ вычисления индикаторов это такой прикол создателей QUIK.
Чтобы жизнь медом не казалась.
-------------
Про это писал лет ...надцать назад.
Потом еще многие и много.
----------------
Пишите скрипт с учетом этого факта.  
Снять защиту с робота на LUA, Снять защиту с робота на lua, привязанного к закрытому счёту
 
Цитата
Maater написал:
Цитата
funduk написал:
Maater , Вам же nikolz выше ответил с исправленным кодом робота
Да теперь надо адаптировать этого робота под QUICK версии от 11й. За денежку конечно.
Скрипт на луа не надо адаптировать под 11 версию.
Вам надо исправить его под свои параметры.
------------------------
Кроме того, этот робот при запуске лезет на какой-то сайт .
Я Вас спрашивал в личке об этом , Вы не ответили.
----------------------------
Переделывать этот мутный скрипт нет желание.
Сомневаюсь, что он может что-то путное делать.
Все индикаторы на Lua
 
Цитата
Сергей написал:
Settings = {   Name = "*Vet_Rollback", line = {     { Color = RGB(153, 204, 0), Type = TYPE_HISTOGRAM, Width = 0 }, }}function Init() maxh = 0 return #Settings.lineendfunction OnCalculate(idx) if idx > 1 and H(idx)~= nil then if maxh < H(idx) then maxh = H(idx) rollback = (L(idx) - maxh) / maxh * 100 else rollback = (L(idx) - maxh) / maxh * 100 end message(tostring(maxh).."     "..H(idx).."     "..L(idx)) message(tostring(rollback)) return rollback end end
При выводе на график выходят  те данные, что приходят в месседж. Верно?


Проблема версии 11.2.0.16
 
11.3.1
полет нормальный.
Проблема версии 11.2.0.16
 
Обнаружил такой эффект.
делаем так:

1) Вызываем QUIK Junior, но не подключаемся к серверу.
2) Открываем  любой индикатор в отдельном окне Например ADX

3) Удаляем второе окно
В результате QUIK зависает, окно не удаляется.
4) Принудительно убиваем QUIK
Куда все подевались?
 
Цитата
VPM написал:
nikolz,  Когда Вы голову подымите чуть выше, заметите что я поправил Ваш вариант, и для сравнения выложил альтернативное решение с использованием кольцевого буфера, даже попробовал разный порядок хранения данных.  Что лучше, почему лучше, когда какой применять, решает пользователь под свои задачи. А я лишь привожу пример про универсальный способ, и показываю его преимущества, относительно других. Но в любом случае их нужно погонять в условиях когда пропадают свечи, когда вызывается по нескольку раз на одном индексе алгоритмы и прочие радости жизни алгоритмов в квике.  
можете ответить кратко на мой вопрос.
Чем ваш конкретный вариант на 3 элемента лучше чем тот который я привел. Я просто написал вам то, что элементарно делается.
Так делают  сортировку 3 элементов.  
-----------------------
И так ответьте на вопросы:
Обсуждаем вот эти две функции:

Код
local ChannelPDF={}
function ChannelPDF:FilterSmooth()
    local F = {0, 0, 0}  -- кольцевой буфер на 3 элемента
    local index = 1
    local start = true
    return function(I, x)
        if I == 1 or start then
            F = {0, 0, 0} -- Инициализация значений
            index = 1 -- Инициализация индекса
            start = false
        end
        F[index] = x -- Обновление (новое значение)
        local y = F[index] + 2 * F[(index - 1 - 1) % 3 + 1] + F[(index - 2 - 1) % 3 + 1]
        y = y and (y >= 1 and 0.999 or y <= -1 and -0.999 or x) or y
        index = index % 3 + 1 -- Обновление индекса
        return y
    end
end


Код
function   shiftArray (x)  local  z = F[ 1 ] F[ 1 ] = F[ 2 ] F[ 2 ] = F[ 3 ] F[ 3 ] = x   return  z  end
Чем функция 1 лучше, чем функция 2.
Прошу Вас не отвлекаться и не рассказывать мне, где и что Вы раньше написали.
Напишите кратко и конкретно здесь
---------------
Мой ответ на мой вопрос такой:
Функция 1 сложнее, чем функция 2.
------------------
Ваш ответ?
Не работает скомпилированный cURL для QUIK (Lua-cURLv3), но работает в простом lua-интерпретаторе
 
Цитата
Илья Вишняков написал:
package.cpath = ";;C:\\Open_Broker_QUIK\\clibs\\?.dll;"
вам надо написать путь туда, где вы положили эту библиотеку
можно сделать так
Код
path="C:/clibs/"  -- здесь лежит dll
package.cpath = package.cpath ..path.."?.dll"
Куда все подевались?
 
Цитата
VPM написал:
Nikolay,  Ну смотрите на моем примере выше при использовании двусвязной очереди, все Вами описанные задачи по сути сводятся к одному задать длину и метод извлечения, то есть ввести входные данные, которые можно менять динамически ведя дополнительные расчеты, или жестко установить. А вот что у меня получилось из примера nikolz, я в кольцевом буфере попытался поменять порядок хранения данных. Ну в общем то и не получается поменять.
Код
    
Давайте вернемся к Вашей функции циклического массива на 3 элемента.
Я исправил ошибку в своем варианте и он работает.
-----------------
Предлагаю не перескакивать с одной задачи на другую, Давайте сначала закончим с Вашим вариантом циклического массива на 3
потом перейдем к связанным или нет спискам.
-------------------
Повторю свой вопрос.
Чем Ваш вариант лучше по сравнению с указанным мною примером ( могу потом написать еще проще) но давайте закончим с этим.
Что не так у меня и что лучше у Вас?
прошу подробно объяснить именно про это.
Куда все подевались?
 
Цитата
VPM написал:
Цитата
nikolz написал:
Мне непонятно, в чем его выгода и что же он делает. ------------------Полагаю, что есть другие вариант решения.
 
Цитата
VPM написал:
Классический кольцевой буфер, также известный как циклический буфер или кольцевая очередь, используется для хранения фиксированного количества последних значений в массиве.
Наверняка есть, Айдар,  выложил свой, я могу в виде класса выложить.
Цитата
nikolz написал:
Если я правильно Вас понял, то вот элементарное альтернативное решение:Кодlocal F={0,0,0}
local function shiftArray(x) local x=F[1] F[1]=F[2] F[2]=F[3] F[3]=x  return x end

Массив F имеет размер как у Вас. В нем хранится последние 3 элемента. При записи нового , первый выталкивается. Что не так? И в чем преимущество Вашего решения?  
Если Вы загрузите в SciTe это пример он не будет работать. Вот я уже попробовал
Код
   local  F = { 0 , 0 , 0 } 
 local   function   shiftArray (x)  local  x = F[ 1 ] F[ 1 ] = F[ 2 ] F[ 2 ] = F[ 3 ] F[ 3 ] = x   return  x  end 
 for  I =  1 , 10   do 
 print (shiftArray(I), F[ 1 ], F[ 2 ], F[ 3 ] )
 end 
ответы:
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 0     0     0     0 
 > Exit code:  0     Time:  0.4064 
  
Пардон, опечатка.
----------------
должно быть так:
Код
 local   function   shiftArray (x)  local  z = F[ 1 ] F[ 1 ] = F[ 2 ] F[ 2 ] = F[ 3 ] F[ 3 ] = x   return  z  end 
---------------------------
 for  I =  1 , 10   do  print (shiftArray(I), F[ 1 ], F[ 2 ], F[ 3 ] )
 end 
-----------------------  
результат:
0   0   0   1
0   0   1   2
0   1   2   3
1   2   3   4
2   3   4   5
3   4   5   6
4   5   6   7
5   6   7   8
6   7   8   9
7   8   9   10
>Exit code: 0












Куда все подевались?
 
Цитата
VPM написал:
Судите сами вот тот же пример. Изменение класса Ehlers.ChannelPDF, чтобы использовать двусвязную очередь для кольцевого буфера.
Код
  
Называть наверно следует, кольцевая очередь, используется для хранения фиксированного количества последних значений в массиве
Вы правы, я не читаю форумы полностью.
Когда зашел, то и прочитал.
Спасибо, что написали примеры.
-------------------
Возможно не понял Ваши объяснения.
попробую задать вопросы снова, если не сложно расскажите свое понимание.
--------------------
Возьмем для начала беседы ваш кольцевой буфер на три элемента.
Код
- Метод FilterSmooth
local ChannelPDF={}
function ChannelPDF:FilterSmooth()
    local F = {0, 0, 0}  -- кольцевой буфер на 3 элемента
    local index = 1
    local start = true
    return function(I, x)
        if I == 1 or start then
            F = {0, 0, 0} -- Инициализация значений
            index = 1 -- Инициализация индекса
            start = false
        end
        F[index] = x -- Обновление (новое значение)
        local y = F[index] + 2 * F[(index - 1 - 1) % 3 + 1] + F[(index - 2 - 1) % 3 + 1]
        y = y and (y >= 1 and 0.999 or y <= -1 and -0.999 or x) or y
        index = index % 3 + 1 -- Обновление индекса
        return y
    end
end
Мне непонятно, в чем его выгода и что же он делает.
------------------
Полагаю, что есть другие вариант решения.
=============  
Если мы с Вами говорим об одном и том же,
то кольцевой буфер на три элемента позволяет нам получить лишь три последних элемента последовательности чисел.
---------------------------
Т е это буфер данных, но его глубина всего три элемента. Верно?
--------------------------
Т е это его недостаток, а за это Вы полагаете, получается экономия памяти . Верно?
===============
Если я правильно Вас понял, то вот элементарное альтернативное решение:
Код
local F={0,0,0} 
local function shiftArray(x) local x=F[1] F[1]=F[2] F[2]=F[3] F[3]=x  return x end

Массив F имеет размер как у Вас.
В нем хранится последние 3 элемента. При записи нового , первый выталкивается.
Что не так?
И в чем преимущество Вашего решения?  
Куда все подевались?
 
Цитата
VPM написал:
-- Метод FilterSmooth
local ChannelPDF={}
function ChannelPDF:FilterSmooth()
   local F = {0, 0, 0}  -- кольцевой буфер на 3 элемента
   local index = 1
   local start = true
   return function(I, x)
       if I == 1 or start then
           F = {0, 0, 0} -- Инициализация значений
           index = 1 -- Инициализация индекса
           start = false
       end
       F[index] = x -- Обновление (новое значение)
       local y = F[index] + 2 * F[(index - 1 - 1) % 3 + 1] + F[(index - 2 - 1) % 3 + 1]
       y = y and (y >= 1 and 0.999 or y <= -1 and -0.999 or x) or y
       index = index % 3 + 1 -- Обновление индекса
       return y
   end
end
хорошо бы еще пример с доказательством,
что это лучше чем , что?
Индикаторы
 
Цитата
Дмитрий Квази написал:
Я может быть не так выражаюсь. Меня не беспокоит время загрузки меня беспокоит что дельта отрисовывается только на том инструменте который активен. Можно это как то исправить, чтобы на всех выбранных инструментах дельта отрисовывалась не зависимо открыт график или нет. Если это в принципе не возможно и дельта будет отрисовываться только на активном графике тогда это вопрос в другом. В квике у меня 10 инструментов на них на всех стоит индикатор. таблица обезличенных сделок идет постоянно. как я понял дельта будет строится только на открытом графике. остальные графики будут ждать пока я на них не перейду. Одновременно на всех 10 инструментах дельта не отрисуется так как активно я выбираю только 1 инструмент я правильно понял?
У Вас открывается всегда один инструмент. Создайте для нескольких инструментов графики. Тогда они будут рассчитываться  одновременно.
Т е что 10 инструментов считались попробуйте открыть 10 графиков с ними.
Индикаторы
 
и еще...
если будете ставить эксперимент с одним инструментом,
то отключите остальные в таблице обезличенных сделок и перегрузите QUIK для чистоты эксперимента.
Индикаторы
 
Цитата
Дмитрий Квази написал:
Вот пример  https://drive.google.com/file/d/1npXkDUFAxD3zEgqknkFM1rG9NntBSVv6/view?usp=sharing
Тоже посмотрел Ваш ролик.
Так как у Вас экраны белые после перехода на инструмент, то это говорит о том что Ваш индикатор долго считает и тормозит КВИК
Вполне реально, так как работа с таблицей обезличенных сделок именно к этому и приведет.
Можно сделать  следующее так.
Откройте диспетчер задач и попереключайте инструменты не сворачивая окон.
Посмотрите как сильно будет QUIK грузить процессор.
Индикаторы
 
Цитата
Дмитрий Квази написал:
У меня установлен платный индикатор дельты. Вы хотите, чтобы я вам прислал корень программы вместе с ним? 👍
Я вам описал проблему. Не прогружаються данные на не активных вкладках. Могу прислать корень программы без индикатора
попробуйте открыть таблицу обезличенных сделок и явно выбрать в ней Ваши инструменты.  
Получить информацию об изменении цены активов с течением времени не в графическом виде
 
Цитата
Илья П написал:
Здравствуйте.

Задача: нужно тем или иным способом получить информацию об изменении цены актива с течением времени (то есть то, что обычно смотрят при помощи графика), но не в графическом виде, а в текстовом, табличном, csv, json или подобном.
Иными словами, нужно так или иначе преобразовать график цены в текстовую форму.

Как это можно сделать?
скачайте архив с сайта finam.ru .для любого инструмента, тайма и периода.
Еще можно получить архивы  скриптом с сайта биржи.  
Стоп по исполнению
 
это предторговый период.
Стоп по исполнению
 
Цитата
Pride написал:
Цитата
Karina Dmitrieva написал:
Здравствуйте,  Pride ,
 
Цитата
А в какое время после 0:00 можно выставить новую стоп-заявку на следующую сессию?
 на следующий торговый день (т.е. когда на сервере сменится дата и будет доступно выставление заявок).
Спасибо. Значит в, к примеру, в 0:05 можно выставлять заявки.
...и будет доступно выставление заявок
Все индикаторы на Lua
 
Цитата
glotov_pa@mail.ru написал:
Подскажите как с помощью индикатора ADX получить данные DI+ и DI-. Нужен пример.
Никак.
----------
Это ADX вычисляется через D+ и D-, а не наоборот.
--------------------
Можно  вычислить индикаторы D+  и D-:
D+  это  EMA от High(i)-High(i-1)
D- 'это  EMA от Low(i)-Low(i-1)  
-----------------
см. в интернете.
Стоп по исполнению
 
Применение заявок «по исполнению»

Срок действия заявок «по исполнению» - до окончания текущей торговой сессии,  т.е. пока заявка-условие может быть активной.

Параметры «Класс», «Инструмент», «Счет», «Код клиента», «Комментарий» для  заявки «по исполнению» заимствуются из заявки-условия.

Направленность заявки «по исполнению» всегда противоположная к  заявке-условию. Например, если заявка-условие имеет направленность «на покупку»,  то заявка «по исполнению» выставляется «на продажу».

Если в момент активации заявки «по исполнению» количество доступных средств  недостаточное для выполнения заявки, то такая заявка не активируется и  становится «Снятой».

Если заявка-условие снята или отвергнута торговой системой, то снимаются все  связанные с ней заявки «по исполнению».

Индикатор insidebar, Написать индикатор
 
Цитата
Павел Лоскутов написал:
Мот быть кто-то уже писал индикатор внутреннего бара для квика, или какой-нибудь подобный. Может ли кто написать простой индикатор insidebar, чтобы он изменял цвет или он отмечался точкой или другим знаком?
написал  такой вариант:
Код
name="nk_insBar";
Settings={Name =name};
local function  Cn(i) local Ci,Oi=C(i),O(i);if Ci>=Oi then return Ci,Oi; end return Oi,Ci; end
j=1;
function OnCalculate(i)
    Hi,Li=H(i),L(i);
    if Hi~=Li then
        BH,BL=Cn(i)
        if i~=j then BH1,BL1=Cn(j); H1,L1=H(j),L(j); j=i; end
        if H_ then
      if Hi>H_ or L_>Li then H1_,L1_=H_,L_;  H_,L_=nil; end
        else
      if H1>=Hi and Li>=L1 then  BH_,BL_,H_,L_=BH1,BL1,H1,L1; end
        end
    end
    if H_ then return H_,L_; else return H1_,L1_; end
end

function Init()
   Settings.line = {
      {Name = "H_",Color = RGB(0, 0, 255), Type =3, Width = 2},
      {Name = "L_",Color = RGB(255, 0, 255), Type =3, Width = 2},
   };
   return #Settings.line;
end

Запись в лог
 
Цитата
VelikiyTrader написал:
Добрый день.
Как записать строку в лог?
Нашел старый скрипт, раньше так работало, но сейчас не находит Log
Код
   function   ToLog (str)
    local  datetime  =   os.date ( "*t" , os.time ());  -- Текущие дата/время 
    local  sec_mcs_str  =  tostring( os.clock ());  -- Секунды с микросекундами 
   -- local mcs_str = string.sub(sec_mcs_str, sec_mcs_str:find("%.") + 1);   -- Микросекунды 
    -- Записывает в лог-файл переданную строку, добавляя в ее начало время с точностью до микросекунд 
   Log:write(tostring(datetime.day) .. " - "
             .. tostring(datetime.month) .. " - "
             .. tostring(datetime.year) .. "  "
            ..tostring(datetime.hour).." :"
             .. tostring(datetime.min) .. ":"
             .. tostring(datetime.sec) .. "."
            -  -   .. mcs_str .. "  "
            ..str.." \n");   -- Записывает в лог-файл 
   Log:flush();    -- Сохраняет изменения в лог-файле 
 end ;
  
надо сначала открыть файл Log , а потом писать в него.
Возможно ли на Lua написать такой скрипт?
 
Цитата
Евгений_174 написал:
Здравствуйте!
Ребята, подскажите, возможно ли на Lua написать следующий скрипт:

С периодичностью 1 минута скрипт проходит по окну "Текущие торги" и для каждого инструмента сохраняет данные в файл (ПКМ на свечах и в контекстном меню будет "Сохранить данные в файл"). Имя сохраняемого файла каждый раз отличается, например порядковым числом.
Кто может написать и сколько будет стоить?

Заранее благодарю за ответ!
Написать можно.
-------------------------------
Чтобы не играть в угадайку, тех задание, цену и сроки определяет тот, кому это нужно.
---------------------------------
Цена продукта - это не то, сколько стоит его сделать, а то, за сколько его покупают.
Ускоряем скрипт и выкидываем sleep
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
Нет никаких проблем в работе моей программы,Осталась лишь тебе понять то, что я написал Карл!!!
Я не Карл...
Это уже какая-то патология...
Тогда не волнуйтесь.
Я вам раньше уже ответил, что мой вариант решает вашу проблему.
Но Вы стали утверждать обратное, так как ничего не поняли.
--------------------
Я на вашем примере написал ликбез для карла и других читателей.
Вы можете это не читать.  
Я же Вас не заставляю, а Вы меня не нанимали.
---------------------
Вместо "спасибо" за то, что я вам разжевал  бесплатно что-то и в рот положил,
вы надулись как рыба луна.
вот это действительно патология.
----------------------------
Я просто погулять вышел, ты понял Карл!!!
.
Удаление не используемых счетов и перенос настроек, Удаление не используемых счетов и перенос настроек
 
Но если вам надо скрыть их на экране, то включите в КВИКЕ фильтр.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 74 След.
Наверх