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

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

Страницы: 1 2 След.
Использование данных по фьючерсам, вышедшим из обращения
 
Цитата
Владимир написал:
Да не забивайте Вы Квик всяким дерьмом - и так уже не продохнуть от дурацких "сервисов"!

Храните У СЕБЯ данные и обращайтесь к ним сколько душе угодно! САМИ "дергайте данные из файлов в папке Arhive"! Храните там ЛЮБЫЕ исторические данные по любому инструменту за любой период (в Интете этих данных просто ДО МАМЫ!), тестируйте там свои стратегии хоть до посинения - какое дело до этого разработчикам (и пользователям) Квика? НА КОЙ нам  "такой функционал:
в панель выбора инструмента добавить еще один раздел "Архив", в котором и появлялись бы те инструменты, срок обращения которых истек, но данные по которым для терминала доступны ? Мало глюков в софте, добавить надобно? И РАЗДЕЛИТЕ, блин, процессы доступа к данным и всю остальную херню вроде "склейки графиков!"!
Если вам кроме ТТТ от квика ничего не надо, то не надо думать что остальным этого достаточно.
Использование данных по фьючерсам, вышедшим из обращения
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Старатель.

Данное пожелание было реализовано как функционал склейки графиков при замене инструмента.
Сделайте лучше, чтобы к данным которые имеются у пользователя в архиве можно было бы обратиться.
Ну вот лежит у меня в папке archive файлик SPBFUT_SiH1_60.dat в нем как я понимаю часовые свечки по SiH1
Реализуйте возможность обратиться к ним из скрипта через CreateDataSource

Вероятно, что CreateDataSource и так дергает данные из файлов в папке Arhive.
Вот сейчас если я пытаюсь обратиться
 ds,error_desc=CreateDataSource("SPBFUT","SiH1",INTERVAL_H1)
мне возвращается в ds=nil, а в error_desc="SiH1 - unknown sec code."

Но данные то имеются, так дайте возможность к ним обратиться и использовать.
Это очень бы помогло для тестирования стратегий на исторических данных.


Как вариант решения вижу добавление в функцию CreateDataSource параметра отменяющего проверку на актуальность инструмента.
8 версия - глючный неработающий шлак, 8 версия - глючный неработающий шлак
 
Ну восьмерка, конечно, не без косяков, но то что вы говорите, это явно не в квике, а у вас проблемы с настройками.
Все летает на железе достаточно среднего уровня, QUIK 8.13.0.106

Почитайте про настройку и оптимизацию рабочего места QUIK, тут на форуме есть темы про это.
Первоначальные настройки индикаторов из LUA
 
Цитата
Egor Zaytsev написал:
Добрый день.

К сожалению, такой возможности нет.
Зарегистрируйте тогда пожелание на добавление таких возможностей.
Несчастное окно
 
Да с этим окном еще и не работают горячие клавиши Alt+L - "Закрепить окно" и Alt+B - "Убрать заголовок".
Вот со всеми остальными окнами горячие клавиши работает, а с этим нет.
Тоже бы исправить.
Первоначальные настройки индикаторов из LUA
 
Добрый день,
Заметил, что для всех индикаторов которые я пишу, при добавлении индикатора на график приходится снимать галочку "Поместить график в новую область", а в настройках индикатора выставлять галку "Показывать последнее значение"

Можно ли как-то из кода индикатора ставить и снимать эти галочки?
URL in message function
 
Только что проверил,
Цитата
message("www.bot4sale.ru")
открывается в браузере

QUIK 8.13.0.107
Windows 10 Корпоративная
Какой язык подойдет для написания торгового алгоритма?, Только изучаю данную тему и хотелось бы получить совет куда двигаться, и что осваивать .Относительно описанной в теме стратегии.
 
Любой алгоритм, это все лишь математика, так что практически любой язык справится.
В QUIK встроенный язык LUA, так что не нем и пишем.

Объемы дергать можно из стакана, из графика, из таблицы обезличенных сделок.
Значения индикаторов, вроде как не вытащить, только рассчитывать в скрипте.

Как интегрировать с MT5 и главное зачем ума не приложу.
Изменения в работе QUIK, Перед началом утренней сессии таблица текущих торгов стала обнуляться.
 
Цитата
Сергей написал:
Кстати, автоматизация при при двухфакторной аутентификации невозможна.
Кстати. вполне возможна, но естественно, сторонними средствами.

USB-модем, ловим SMS, достаем pin, подсовываем в окно двухфакторной авторизации.
Добавить аргумент param в колбек OnParam
 
Цитата
swerg написал:
Ровно это и приходит.
Или требуются новые значения параметров?
Так хотелось бы чтоб в колбеке не надо было дергать нужные параметры через GetParamEx и сравнивать с предыдущими чтобы понять изменилось ли значение.
Гораздо удобнее чтоб было как в первом сообщении Артем описал

Только думаю лучше не OnParam переделывать, а добавить новый коллбек
QUIK не отправляет заявку, в которой цена представлена переменной
 
Цитата
Андрей написал:
Кто-нибудь знает ЧТО ЭТО ЗА БРЕД?
Знаю, сталкивался с этим.
В переменной PRCStr у тебя строка типа "12345.0"
А в транзакцию цену надо передавать строку с учетом шага цены "12345"

Короче, точку с нулем из строки похерь и будет счастье
Код
function cut_zero(str)
  local num=tonumber(str)
  local zero=string.byte("0",1)
  local point=string.byte(".",1)
  if(string.find(num,'%.')) then -- Имеется точка в числе
    for n=string.len(num),1,-1 do -- Перебор справа налево
      if(string.byte(num,n)==point) then return string.sub(num,1,n-1) end
      if(string.byte(num,n)~=zero)  then return string.sub(num,1,n) end
    end
  end
  return num
end
Добавить аргумент param в колбек OnParam
 
Цитата
Roman Azarov написал:
В коллбек OnParam приходит  набор  измененных параметров, а не какой-то один конкретный параметр.
Сейчас OnParam просто сообщает что изменились параметры по инструменту и не более того.
А пожелание как раз в том и было, чтобы в коллбек приходили измененные параметры.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Цитата
Артем написал:
Цитата
BlaZed написал:
В результате чтобы нарушилась уникализация надо одним роботом более 100 раз в секунду транзакцию сделать, что практически невозможно.
Делать ставку на то что маловероятное событие НИКОГДА не произойдёт - плохая тактика. Владимир уже на своем опыте об этом знает.
Ну надо же соблюдать баланс между идеалом и разумностью.
Если у кого-то хотя бы теоретически может быть более 100 транзакций в секунду, то предложенный мной способ, конечно, не подойдет.

Вот только есть ли такие люди? Даже на высокочастотном скальпинге столько не надо.
Я вот даже представить не могу кому может не хватить такой уникализации. Вы можете?
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
Я у себя уникализацию trans_id так реализовал
Код
  trans_time=dt.hour*10000+dt.min*100+dt.sec -- время отправки транзакции HHMMSS
  trans_id_count=(trans_id_count+1)%100 -- счетчик транзакций, от 0 до 99 и по кругу
  trans_id=1000*trans_time+100*robot_id+trans_id_count -- Уникальный идентификатор транзакций
Расчет на 10 одновременно работающих роботов, у каждого робота свой robot_id от 0 до 9
В результате чтобы нарушилась уникализация надо одним роботом более 100 раз в секунду транзакцию сделать, что практически невозможно.
Ошибка при совершении операции "Скорректированное значение НПР1 -65572.12 (RUB) меньше 0"
 
QUIK тут не причем

Вы, вероятно, маржинальной торговлей занимаетесь и превысили риск-параметры.
Брокер вам заблокировал сделку.
Почитайте про маржинальные показатели, и в часности про "Норматив покрытия риска".
Ошибка флага сделки., Новый/старый терминал. Есть разница.
 
Цитата
Владимир написал:
Когда-то давно читал, как один умник в какой-то программе расчётов сделал так: расчёты велись с точностью до копейки (ну или там до цента). Так он остаток от округления (дробные части копеек) переводил на собственный счёт. Идея красивая, никому не мешает, деньги буквально из воздуха... а погорел на некачественной программной реализации: алгоритмист-то он был хороший, а программист - не очень.
Это ж история из фильма "Хакеры" 1995года
Lua функция ограничить кол-во сделок от 1 до N, Lua функция ограничить кол-во сделок от 1 до N
 
Цитата
Rusyan написал:
Добрый день!

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

Но мне нужно чтобы была возможность указать сколько раз робот может входить в сделку после закрытия позиции.
Сходу два способа.
1) Таблица сделок. Подсчитываем количество уникальных по полю "заявка" сделок с комментом робота
2) Таблица заявок. Подсчитываем количество заявок в статусе исполнена с комментом робота.

Ну и сравниваем полученное число с ограничениями робота. Если меньше торгуем роботом.
Как настроить квак под торговлю иностранцами, ETF, акции и облигации
 
Цитата
hts написал:
ARK Genomic Revolution ETF (NYSE: ARKG )  Вот этот тоже не могу в квике найти
QUIK тут не причем, доступы к биржам предоставляет брокер.
Вам надо обратиться к своему брокеру, и узнать как подключить выход на нужную вам биржу, в вашем случае NSYE
Lua скрипты теряют конфигурацию среды (?)
 
Вот на вашу проблему очень похоже https://forum.quik.ru/forum10/topic103/
Как настроить квак под торговлю иностранцами, ETF, акции и облигации
 
А иностранцы чем-то принципиально отличаются?

Ну выбери им английский интерфейс, если русского не знают.
Lua скрипты теряют конфигурацию среды (?)
 
Внешний модуль случаем не на сетевом диске находится?
Изменения в работе QUIK, Перед началом утренней сессии таблица текущих торгов стала обнуляться.
 
Цитата
hts написал:
Скажите а можно ли настроить так что бы при выходе из квик система автоматом сохраняла настройки в файл
Система->Настройки->Основные настройки->Программа->Файлы настроек->Сохранять настройки в файл при выходе
Индикатор торговой сессии
 
Цитата
Владимир написал:
Игорь М, Непохоже. Там у меня вообще стоит 10 секунд, а данные обновляются НАМНОГО чаще!
Именно вышеуказанная настройка мешала.

Вот простой код проверки частоты обновления параметров ТТТ по инструменту.
Проверьте у себя при разных значениях.
Код
class_code="SPBFUT"
sec_code="SiH1"
function main()
  clock1=0
  is_run=true
  while is_run do
    sleep(100)
  end
end
function OnStop()
  is_run=false
  return 100
end
function OnParam(c_code,s_code)
  if(c_code==class_code)and(s_code==sec_code)then
    clock2=os.clock()
    message("delta="..clock2-clock1.."sec")
    clock1=clock2
  end
end
Индикатор торговой сессии
 
Цитата
Владимир написал:
BlaZed, Ошибаетесь! Я же вижу, как у меня меняются данные, получаемые именно из TTT по BID и OFFER!
Сорри, вы оказались правы.
У меня в квике, как оказалось, ограничения стояли на получение данных раз в 1 секунду.
Индикатор торговой сессии
 
Что-то предыдущее сообщение криво отправилось, а правки нет...

Цитата
Владимир написал:
BlaZed, Не проще. Оккам запрещает: ведь BID и OFFER по-любому нужны. К тому же, о тормозах здесь и речи быть не может - это же фактически две соседние цены в стакане. доступные даже без наличия самого стакана. Я в меню обновляю эти цены раз в 150 мс - куда уж чаще? Ну, теперь ещё буду читать перед отправкой заявки - по затратам ресурсов это не стоящие внимания копейки. Свечи же (у меня они минимум 15-секундные, у Вас, я полагаю, не меньше) намного тормознутее.
Основной мой посыл сообщения был о том, что таблица текущих торгов крайне тормозная, обновляется не чаще чем раз в 1 секунду.
Что при высоколиквидных рынках весьма неприятно.

Поэтому ваши 150мс абсолютно бесполезное занятие.
Индикатор торговой сессии
Индикатор торговой сессии
 
Не проще ли пользоваться предназначенными для определения состояния сессии параметрами?
STATUS                  STRING   Статус инструмента

TRADINGSTATUS           STRING   Состояние сессии
Но есть такая проблема, что таблица текущих торгов очень тормозная и могут быть задержки


Я лично для индикации сессии сравниваю время последней свечи инструмента с локальным временем скорректированным под нужный таймфрейм
Для малых таймфреймов отлично подходит.
Тормоза при выставлении стоп заявки
 
Цитата
tom написал:
да уходит без файла настроек

Цитата
tom написал:
так что делать чтоб тормоза пропали? потому что это не поприколу когда торгуешь интрадей и терминал притормаживает на нескалько секунд
Т.е. у вас со старым файлом настроек были тормоза, а как его удалили тормозов не стало?
Если так, то значит какой-то косяк в этом файле.
Файл info.wnd отвечает за всякие вкладки и окошки в квике.

Поэтому закрываете квик, удаляете (на всякий случай куда-нибудь скопируйте) файл info.wnd, запускаете заново квик.
Открываете все нужные вам окна и графики вручную и сохраните настройки (Система->Сохранить настройки в файл)

Если у вас не 100500 вкладок, окошек и графиков, то должно помочь
Формирование списка Lua-скриптов
 
Нужная доработка бы была.
Хоть и на функционал не влияет, но удобство однозначно добавит.
Тоже замучился в куче скриптов нужный выискивать.

И добавлю от себя пожелание, в списке скриптов очень было бы неплохо добавить поле "название", которое бы бралось из самого скрипта.
Например, задали бы в скрипте переменную __NAME (ну или какую другую), чтобы она отображалась в списке скриптов.
Продаются акции которые не покупал
 
Цитата
hts написал:
Как то сложно.  Продал несуществующую акцию за 100 руб  потом купил эту акцию за 90 руб и заработал 10 руб  так что ли,
Или это как то по другому работает.   И если я продал акцию за 100 а на рынке она стоит 110 то что тогда.  
Тут все предельно просто, главное принцип понять.

Вот смотрите.
Например, вы из своих каких то размышлений решили что акции компании X пойдут вниз. И хотите на этом заработать.
Как это можно сделать?

Берем у брокера ВЗАЙМЫ акцию, и тут же продаем эту акцию на рынке, допустим за 100 рублей.У вас появились деньги с продажи акции (100 рублей) и имеется обязательство вернуть брокеру взятую у него акцию.
Вроде бы все хорошо, но брокеру то необходимо вернуть взятую взаймы акцию. А у вас ее нет, значит надо купит акцию.


Далее 2 варианта.
1) Если цена пошла вниз, до 90 рублей. Покупаем акцию и возвращаем брокеру. У вас есть 10рублей (100-90) и нет обязательств. Заработали
2) Если цена пошла вверх, до 110 рублей. Покупаем акцию и возвращаем брокеру. У вас есть -10рублей (100-110) и нет обязательств. Потеряли.
Индекс формирующегося бара.
 
Alexander, так пойдет?
Код
v={}
function OnCalculate(index)
  if(v[index]==nil)then
    if(T(index).hour==9)and(T(index).min==0)or(index==1)then v[index]=0
    else
      if O(index-1)<C(index-1) then v[index]=v[index-1]+V(index-1) end
      if O(index-1)>C(index-1) then v[index]=v[index-1]-V(index-1) end
      if O(index-1)==C(index-1)then v[index]=v[index-1] end
    end
  end
  return v[index]
end
Ошибка: указанная транзакция по указанному классу не найдена, Quik 8.11.0.66
 
Раньше тоже определял время по параметру STATUS, вот только как уже писали выше, он "тормозит" с утра на 3-4 секунды (открытие брокер, если что).
Хоть это и не очень критично, но иногда все же при утренних гэпах бывает нужно срочно закрыть сделку, и эти 3 секунды могут стоить 100-200 пунктов.


Решил вообще от проверки по статусу отказаться, решение то простое.
Сравниваем время последней свечи с локальным, переведенным в московское, если совпадает, то торгуем.

Естественно, локальное время должно быть синхронизированно.
Создание авто ввода текста в Lua, Как создать скрипт который при нажатии клавиши мышки вводил бы текст автоматически.
 
Цитата
Антон написал:
Мне нужно с помощью нажатия 1 кнопки активировать скрипт который введет 4 значения т.е. цифр
Это нужно для быстрого заполнения паролей где копировать и вставить не возможно

Также это как то на уровне мышки настроить грубо говоря я жму 4 конпку мышки у меня вводится там допустим число 3333  
Вы уверенны, что на нужном форуме вопрос задаете?
Тут про QUIK форум.В квике пароли и копируются и вставляются, и вопрос автоввода пароля решается совсем по другому.
Определить выбранный язык QUIK из LUA
 
Цитата
Anton написал:
Цитата
BlaZed написал:
более простой способ
в info.ini прочитать секцию regional-settings.
Тоже интересный вариант.
Спасибо.
Что это такое?, Вылетает квик
 
Цитата
Egor Zaytsev написал:
2.       Удалите временные файлы *.dat и *.log, кроме файлов: scripts.dat, portfolio.dat, alert.dat.
Скажите, ключ командной строки -clean делает то же самое или есть отличия?
Что это такое?, Вылетает квик
 
Цитата
Андрей написал:
Сегодня стал вылетать квик и пишет вот такое
Текст сообщения

Че делать
Проверьте в диспетчере задач не висит ли процесс квика. Если есть, то снимите.

Было как-то, квик вылетел, но процесс не убился.
Пока не снял процесс вручную запустить заново не мог, вроде как такую же ошибку давал.
Определить выбранный язык QUIK из LUA
 
Цитата
Nikolay написал:
В голову приходит одно: взять w32 и поискать главное окно. Если найдено  на английском, то english. Правда, если несколько терминалов, то уже  может быть не вариант.
Я надеялся на более простой способ,
Но ваш тоже подходит.
Спасибо.
Определить выбранный язык QUIK из LUA
 
Владимир, спасибо, конечно, но вопрос был совершенно другой
Определить выбранный язык QUIK из LUA
 
Цитата
Владимир написал:
Nikolay, Ну если интерфейс сделать двуязычным, то можно (делается, кстати элементарно даже на Lua). Но ЗАЧЕМ?!
Если это сделать элементарно, то что же не подскажешь как определить выбранный язык интерфейса?
Определить выбранный язык QUIK из LUA
 
Имеется ввиду выбранный язык интерфейса quik.
Русский или английский.
Определить выбранный язык QUIK из LUA
 
Собственно вопрос в теме.
Можно ли из LUA определить выбранный язык QUIK?
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Михаил Филимонов написал:
I-7 6850К завис после запуска скрипта  
В общем, значение слипа надо ставить минимум 1, тогда ничего не виснет.
А выбирать адекватное значение уже в зависимости от требований конкретно вашей стратегии.
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
swerg написал:
Цитата
BlaZed написал:
Другими словами, конструкция без слипа, типа такой
 
Код
      function    main ()
  a  =    0  
  is_run   =     true  
    while   is_run   do  
    a  =  a  +    1  
    end  
  end  
    
 может легко повешать квик.

Нет.
Если процессор одноядерный - да, это будет заметно в скорости общей работы.
Если процессор многоядерный (а это нынче стандарт де-факто) - то никто ничего даже не заметит, кроме термометра на процессоре.
Попробуйте, запустите
Ryzen 5 3500x на 6 ядер, квик скопытился после запуска
Эвента на изменение таблицы "Клиентский портфель"
 
Цитата
Михаил Филимонов написал:
и последний вопрос.
Я никогда не использую функцию sleep, но в скриптах LUA, как я понял, это необходимость

В конструкции

function OnStop()
 is_run = false
end

function main()
while is_run do
  sleep(??????)
 end
end

Какое значение в sleep(??) лучше ставить, чтобы скрипт работал как можно быстрее
sleep необходим чтобы дополнительный поток квика не загрузил ядро процессора наглухо.

Другими словами, конструкция без слипа, типа такой
Код
function main()
  a=0
  is_run = true
  while is_run do
    a=a+1
  end
end
может легко повешать квик.

А значение выбирается исходя из разумности и целесообразности для конкретно вашей стратегии торговли.

Для кого-то раз в час нормально, а кому-то 10 раз в секунду надо проверять.

Естественно, чем меньше значение тем меньше задержка.
1 значение = 1/1000 секунды
Что происходит утром?
 
Цитата
КВИК на виртуалке не имеет постоянного доступа к ноутбуку. Я вышел с виртуалки, и связь с ноутбуком пропала. Но я рассчитываю, что считанные данные останутся в памяти.
Я правильно понимаю что...

Квик на виртуалке, вы закрыли вечером виртуалку, виртуальная машина задампилась, и вы надеятесь, что когда утром включите виртуальную машину, то скрипт продолжит работу с того момента на котором закрыли виртуалку?

Ладно, поиграем в Нострдамуса.
Пока VM была выключена, связь с сервером, естественно, оборвалась по таймауту, а в скрипте стоит какая-нибудь проверка на наличие подключения типа onConnect() и при отсутствии подключения что-нибудь там сбрасывается в дефолтные значения и т.д и т.п.

PS:
Есть еще вариант, что скрипты при таком "издевательстве" и правда перезапустятся.
Эту теорию, думаю, сами можете без проблем проверить простеньким скриптом, который крутится в вечном цикле и при старте выводит какое-нибудь сообщение.
Что происходит утром?
 
Цитата
Уточните пожалуйста что происходит утром в плане:
-работы main
-существования переменных и таблиц скрипта.
Что запрограммировано, то и происходит.
Ничем принципиальным утро от другого времени не отличается.

Не видя кода только можно гадать, что у вас там запрограммировано.

Смотрите почему у вас main повторно запускается, и как скрипт обрабатывает потерю связи, короче код смотрите.
Фильтрация сообщений, Надоели ненужные сообщения
 
Добрый день.
Постоянно в окно сообщений валятся ненужные сообщения от биржи.
Например такие:
"[FORTS] Уважаемые клиенты, если цена останется на текущем уровне в течение 3 минут, то торги фьючерсами SLV будут приостановлены для 1-ого расширения верхней границы диапазона оценки ценового коридора и рыночных рисков"

А мне вот на фьючерс SLV вообще плевать, не торгую им и не собираюсь.

Причем не одно-два сообщения приходят, а в определенные моменты по 30-40 за 10 минут вываливаются. Полностью отключить сообщения не предлагайте, ибо иногда и правда что-нибудь полезное приходит.
Но вот этот "официальный спам" надоел.


Можно ли реализовать фильтрацию сообщений, по типу подписок?
Чтобы можно было бы указать по каким инструментам меня интересуют сообщения, а по каким нет.

Другими словами, чтобы биржа/брокер при отправке сообщения соотносили бы ее к определенному типу/инструменту, а со стороны клиента можно бы было выбирать какие сообщения видеть, а какие нет.
Средства разработки многопоточных скриптов в QUIK., OS_Quesha, свидетельство регистрации в Роспатенте № RU 2020612905. Бесплатная для некоммерческого использования.
 
TGB, вроде много пишите, а вот не цепляет и все.
Просто вот читаю и понимаю, что вроде что-то может быть даже и нужное, но вот зачем оно мне и какие преимущества даст совершенно не понятно.

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


Короче, грамотный рекламщик вам нужен, если хотите в массы свой софт пустить.
Остановка (зависание)
 
Цитата
Евгений написал:
Кнопки свернуть, закрыть, восстановить. Нажатие мышкой один раз и держать не отпуская. Если отпустить на кнопке клавишу то выполнится действие. Это так и должно быть, это стандартное поведение?
Это стандартное поведение клика мышкой в ОС
ищу инвестора для сотрудничества, закончил разработку робота для интрадей
 
Цитата
swerg написал:
Два пользователя с одним ни ком?! "А что, так можно было?!"
А почему бы и да?
Страницы: 1 2 След.
Наверх