Sergey Gorokhov, проблема выявляется, когда на диаграмме несколько графиков. Ниже упрощённый код:
Код
Settings =
{
Name = "!Тест" -- Название индикатора
}
function Init()
return 1
end
function OnCalculate(index) -- Первая (самая левая) свечка имеет индекс 1
tChartA, NumA, LegendA = getCandlesByIndex("A", 0, index - 1, 1) -- информация о свечках по идентификатору
return tChartA[0].close -- вывод результата на график
end
Нужно создать диаграмму с двумя графиками. На нижний график добавляем идентификатор "A". Загружаем индикатор на первый график, получаем дублирование Close: Пытаемся переключить таймфрейм, получаем нули: Предположим, что индикатор загружен на верхний график SRM7, а второй график не может быть прочитан, т.к. графики загружаются последовательно. Загружаем индикатор на нижний график. Переключаем таймфреймы, данные выводятся: Вроде бы все проблемы решены, но нет. Теперь при перезаказе данных на этом индикаторе недоступен верхний график. Устанавливаем идентификатор на верхний график, перезаказываем данные Заказ данных - Перезакать данные...:
Чтобы решить проблему, считаю, нужно производить расчёт индикаторов после получения данных по всем графикам на диаграмме.
Здравствуйте! Имеется индикатор, использующий данные графика "А" через функцию getCandlesByIndex(). Каждое утро на сервере происходит перезаказ данных. (Можно эмулировать: Заказ данных - Перезакать данные...) График "А" ещё не получен от сервера, а индикатор уже производит расчёт. Т.к. данных графика "А" нет, индикатор не может быть рассчитан.
Решается входом в "Редактирование настроек графика" и нажатием "Применить" или "Ок". В этом случае, происходит перезапуск OnCalculate() и индикатор перерисовывается.
Как сделать перезапуск OnCalculate() или есть другое решение?
Здравствуйте! В QUIK версий 7 и выше индикаторы (функция OnCalculate) рассчитываются по 2 раза при первой загрузке и при изменении параметров. Причём, при изменении параметров рассчитываются по 2 раза ВСЕ ИНДИКАТОРЫ НА ВСЕХ ДИАГРАММАХ ОКНА (это сильно тормозит систему). При переключении таймфрейма, индикаторы рассчитываются 1 раз, как должно быть. Пожелание по исправлению проблемы зарегистрировано многократно. Может есть какой-то способ обойти лишний вызов в коде индикатора? Спасибо!
Да, можно по ID или мониторить исполнение стоп-заявки. Если можно, как пожелание с невысоким приоритетом, добавить в Таблицу Заявок информацию о переносе заявок. На данный момент, я просматриваю через глупый метод "Заменить заявку".
Здравствуйте! Стоп-заявка исполняется, выставляется заявка без переноса. Как сделать заявку с переносом? Можно ли как-то в таблице заявок определить переносится ли заявка? Спасибо!
Хотел раскрасить метку из Settings.line[1]["Color"]. Но функции, как получить RGB из числа не нашёл. Нужна такая функция или другое решение. Заранее спасибо!
Ещё: • отсутствует возможность сохранения ширины столбцов Не помешала бы функция GetColumnSize(column). Всё же, реализация в QPILE с сохранением параметров таблиц в .wnd файлы была наиболее удобна.
Здравствуйте! Как лучше обрабатывать событие изменения файла в LUA? Контроль размера файла не подходит. Контроль даты и времени изменения файла не нашёл. Спасибо!
Ещё раз спасибо за развёрнутый ответ! Решения через QLUA устраивают. Горячие клавиши нужны будут для вызова добавленных возможностей, например, экспорта DDE. Для меня в приоритете сохранение вкладки и экспорт DDE.
Здравствуйте! 1. Запускаю скрипт, создаётся таблица QLUA, сохраняю координаты окна таблицы, перехожу на другую вкладку, перезапускаю QUIK, таблица появляется на том же месте, НО НА ТЕКУЩЕЙ ВКЛАДКЕ, А НЕ НА ТОЙ, ГДЕ ОНА БЫЛА ОТКРЫТА. Есть ли возможность "запомнить" вкладку? 2. Есть ли возможность задать свою иконку в верхнем левом углу? 3. Очень не хватает возможностей, которые имели место в QPILE таблицах. Ниже приведен список действий, которые не поддерживаются для таблиц, созданных на языке Lua: • таблицы не сохраняются в файл конфигурации (решилась бы проблема сохранения вкладок); • отсутствует диалог редактирования таблицы; • отсутствует контекстное меню таблицы (кроме пункта «Переместить на закладку»); • не создается копия таблицы; • не задается по умолчанию заголовок окна таблицы; • отсутствует экспорт данных из таблицы (особенно важен DDE экспорт, т.к. функциями DDE LUA пользоваться непривычно и неудобно); • недоступно управление «горячими клавишами». Спасибо!
UP Decoda (https://www.quik2dde.ru/viewtopic.php?id=32) часто отключается и возобновляет работу только перезагрузки. Требует введения имени переменной. Неудобно. Мне вполне по душе реализация QPILE, где вбиваешь волшебный breakpoint() в заветном месте и видишь сразу все свои переменные в формате НАЗВАНИЕ_ПЕРЕМЕННОЙ;ЗНАЧЕНИЕ. Там, правда, очень не хватало сортировки по имени переменной. Может быть кто готов поделиться своими наработками (пивом угощаю)? Хотелось бы аналог описанный выше. Ну, и конечно, хотелось бы увидеть реализацию по умолчанию от Вас, уважаемые разработчики. Спасибо!
Notepad++ оказался не готов к подсказкам по функциям. Нужна доработка. Если найдётся решение, пишите. Выкладываю пока то, что получилось.
Описание. Файл lua.xml содержит подсказки при вводе параметров функций. Выявлены недочёты: - не выводится подсказка для функций с точкой (io.open и т.д.), - подсказка на русском выводится в виде иероглифов. Установка. 1. Скопировать файл lua.xml в папку <Path>\Notepad++\plugins\APIs. 2. Перезапустить Notepad++. Последняя версия Notepad++: http://notepad-plus-plus.org/download/ Последняя версия этого пакета: http://pmntrade.ru/other/luaxml.rar Текущая версия: 20160608
Да, но так оказалось не очень удобно. Т.к. нужно создавать новый синтаксис и добавлять все стандартные функции Lua вручную. Разработчики Notepad++ наверное не предусмотрели создание языка на основе существующего или подключение нескольких синтаксисов.
Файлы Notepad++ оказались в понятном текстовом формате. Поэтому я сделал так:
Открыл папку C:\Documents and Settings\<пользователь>\Application Data\Notepad++, где <пользователь> - имя пользователя Windows (возможно папка скрыта).
Открыл файл langs.xml в Notepad++ (или Блокноте).
Нашёл блок Lua (name="lua").
Добавил в name="type2" имена функций QLua (не весь список).
Доброго времени суток! Хотелось бы, когда-нибудь, в будущем, увидеть возможность создания всплывающего списка (Combo Box) и полей ввода в таблице QLUA. Это нужно для удобства настройки параметров скриптов. Открывать отдельную программу для настройки, да ещё и копировать коды бумаг, классов и т.п. весьма не удобно. На данный момент придумал привязку роботов к графику. В ТТТ меняем инструмент, и график привязанный якорем к ТТТ. Данные Кода бумаги беру из легенды. Правда, работает только на фортс, для остальных групп вместо кода бумаги, краткое название. Может подскажите, как удобнее настраивать скрипты?
Космонавт написал: внезапно стало отображаться время сервера в формате 5:07:22 PM Раньше было 17:07:22 Это сбило всю работу робота так как он брал время сервера. Это настраивается в КВИКе или у брокера?
Стало так:
Как вернуть чтобы было так:
Это настраивается в Windows 7 - Пуск - Панель управления - Часы, Язык и регион - Изменение форматов даты, времени и чисел - выберите свой стандарт. В Windows Server 2003 немного иначе.
Отсутствие единых стандартов у брокеров и отсутствие стремления их поддерживать не есть хорошо. От себя могу только пожелать придерживаться единых стандартов.
Например, сегодня брокер «Открытие Брокер» изменит параметр «Фирма» на FORTS, с «SPBFUT» на «MC0139600000». Это означает, что роботы, которые ведут свой учёт, потеряют свои позиции. Это может привести к исполнению лишних сделок. Например, робот потеряет свою прежнюю позицию и откроет новую.
"Уважаемый клиент! Уведомляем Вас о том, что с 29 марта 2016г. «Открытие Брокер» изменит параметр «Фирма», транслируемый в ИТС QUIK с «SPBFUT» на «MC0139600000». Изменения касаются только рынка FORTS. Просим Вас учитывать эту информацию при планировании торговых операций. "
А можно ли каким либо образом "прощупать" будет ли выставлена заявка, т.е. проходит ли она по ценам и количеству? Дело в том, что бывают ситуации, когда 1)робот выставляет заявку, 2)сервер выводит ошибку, скажем непопадание цены в мин./макс. по акциям, 3)но на следующем расчёте снова выставляет заявку и выводит ошибку. Я проверяю всё это в коде робота, но не всегда это удобно.
Прошу добавить в ближайшие 50 лет возможность отображения информации на перекрестии, как на скриншоте ниже. Очень удобно отмерять расстояния на графике. Например, увидеть ширину канала в цене или длину тренда в количестве свечей. Ещё хотелось бы добавить расстояние цены в %, в MetaTrader эту возможность не добавили. Заранее, спасибо!
Но если используется несколько QUIK на одном компьютере, всё равно, запоминается путь, но к другому QUIK. В итоге, запоминается путь к скриптам другого QUIK. Это не хорошо.
Можно ли получить Код бумаги из Краткого названия бумаги? Например, знаем краткое название "ЛУКОЙЛ". Нам нужно узнать код бумаги при помощи функции QPILE.
Индикатор предназначен для отображения на графике истории счёта, свободных средств, гарантийного обеспечения, а также пользовательских исторических данных.
- Возможность отображения данных: истории счёта, свободных средств, гарантийного обеспечения, пользовательских исторических данных - Возможность отображения истории счёта для счетов всех типов: акций, фьючерсов, валют - Возможность отображения в окне индикатора всех данных или выборочных - Возможность отображения на таймфреймах:М1, М2, М3, М4, М5, М6, М10, М15, М20, М30, H1, H2, H4, D1, W1, MN1 - Возможность накопления данных без ограничений - Возможность самостоятельного редактирования данных - Возможность изменение частоты сохранения данных - Простота использования - Открытый код с описанием всех функций вплоть до каждой строки