Время сервера: 10:52:46 - "началась новая торговая сессия" от 06.05.2016 При этом на графике уже есть свеча за 18:45 от 06.05.2016.
Исправьте это недоразумение, чтобы скрипт всегда мог однозначно понять закончилась ли торговая сессия, дату которой QUIK транслирует или ещё не начиналась.
Прочитайте локальную дату и время и сравните ее с датой текущей сессии и временем сервера. И будет ваш скрипт знать точно, что и когда.
sandyman написал: Самописный индикатор, расположенный в одной области с графиком цены, в некоторых случаях отрисовывает линии на значительном удалении от текущих цен. При этом автоматическое масштабирование графика по вертикали хочет показать не только видимые значения цены, но и видимые значения индикатора(ов), что приводит к плохой читабельности графика цены. Можно ли сделать так, чтобы значения индикатора(ов) исключались при автоматическом масштабировании?
PS если нет такой возможностей, то прошу техподдержку зарегистрировать пожелание на добавление такой возможности, например, по аналогии с галочкой "с учётом цен заявок и позиций" в диалоге настройки автомасштабирования можно было бы предусмотреть и галочку "с учётом значений индикаторов"
Добрый день, В самописных скриптах я использую настраиваемый параметр максимального удаления индикатора, при котором индикатор перестает отображаться. Такой метод позволяет отображать графики в наиболее удобном масштабе. Предлагаю реализовать данный метод для встроенных индикаторов.
учебный сервер вообще не для торгов и тренировок. Это тестовый сервер для освоения работы с терминалом Т е результаты Ваших сделок на нем не имеют никакого смысла с точки зрения торговли.
То есть чтобы отслеживать два стакана, нужно запускать два скрипта ?
function OnQuote(class, sec ) ql2 = getQuoteLevel2(class, sec) if class ==clas1 and sec ==sec1 then -- первый инструмент end if class ==clas2 and sec ==sec2 then --второй инструмент end end
пардон, верно первое -------- getInfoParam('SERVERTIME') возвращает пустую строку ----------------------------------- string.gsub от пустой строки - пустая строка ----------------------------- message , если если его параметр пустая строка, выводит локальное время. ------------------------------- таким образом, данный прикол - это особенность работы функции message -----------------------------
пардон, опечатка string.gsub от пустой строки - nil ----------------------------- message , если если nil, выводит локальное время. -------------------------------
Добрый день, объясняю, почему так происходит. --------------------------------- getInfoParam('SERVERTIME') возвращает пустую строку ----------------------------------- string.gsub от пустой строки - пустая строка ----------------------------- message , если если его параметр пустая строка, выводит локальное время. ------------------------------- таким образом, данный прикол - это особенность работы функции message ----------------------------- Успехов в изучении КВИК.
сем плат написал: Нужен брокер с удобным тарифом под программу для торгов. Сделок за день делает много и результат не перекрывает комиссию брокера, т.к комиссия за оборот. Кто с этим сталкивался подскжите как быть?
вообще-то в тарифах у разных брокерах особой разницы Есть разница в загрузке серверов. Просто комиссия брокеров на акциях в 10 раз больше биржевой . Брокер тоже хочет кушать. Не делайте много сделок, не спешите стать миллионером , вернее сказать - сливать депозит. Поэтому выход один, как говорят ... "не суетитесь под клиентом"
сем плат написал: Нужен брокер с удобным тарифом под программу для торгов. Сделок за день делает много и результат не перекрывает комиссию брокера, т.к комиссия за оборот. Кто с этим сталкивался подскжите как быть?
Данная особенность может быть связана с работой стороннего ПО - например антивируса, файервола, брандмауэра. По возможности просьба отключить его и проверить работоспособность без данного ПО. В случае неиспользования экспорта в систему Metastock Вы можете удалить WinRos.exe.
Добрый день, У меня нет ничего из перечисленного Вами. Относительно убить навсегда WinRos , встречал на форуме сообщение о том, что тогда квик просит обновится при проверке наличия новой версии даже если версия не обновилась. попробую убить winRos навсегда.
перепишите ее так: SET_VALUE (T, "QUANTITY",0+QUANTITY) ----------------------------------- анекдот: К постовому подбегает беспризорник и просит: Дядя разгрызи косточку. Тот разгрыз. через час снова подбегает и просит - разгрызи. в очередной раз, постовой не выдержал и говорит - слушай мальчик, принеси сразу все косточки. тот в ответ -Да, ты думаешь так просто их на помойке искать?
Добрый день, Кликаем иконку каталог. Система отображает ожидание открытия и .... чего-то ждет. Потом открываем диспетчер и убиваем winRos Каталог открывается. Аналогично происходит при открытии пунктов в хелпе (например документация по QLUA). Если WunRos нет, то все открывается по клику без ожиданий(без зависания).
Добрый день, Давно наблюдаю такую проблему. Если открыть квик без подключения к серверу, то WinRos блокирует открытие каталогов и некоторых приложений (например справочника винды) -------------------------------- Для устранения данной проблемы приходится каждый раз убивать WinRos из диспетчера. Полагаю, что это можно считать ошибкой в системе QUIK Просьба сделать так, чтобы WinRos запускалась лишь , если включен экспорт данных в Metastock Спасибо
Николай Камынин написал: по фьючерсам есть ГО - т е залог, а не цена покупки продажи
Конечный финансовый результат определяется ценами покупки и продажи. А также стоимостью шага цены и количеством торгуемых контрактов. Всё. ГО к существу заданного вопроса отношения не имеет. ГО необходимо для обеспечения расчетов по сделкам между участниками торгов (фактически, исполнения обязательств в случае убытков). Технически это производится путем блокирования средств в соответствующем размере на счете, что, как следствие, означает ограничение максимального количества торгуемых контрактов. Эти средства блокируются, но остаются на счете и принадлежат клиенту. Размер ГО на финансовый результат сделок не влияет НИКАК.
ГО - это не исполнение обязательств в случае убытка, а залог по обязательствам. В момент исполнения обязательств залог равен цене актива, которую получает продавец , либо покупатель, если актив не поставлен продавцом.
Николай Камынин написал: цена покупки продажи фьючерса -1 рупь
Нет. Покупаются / продаются не фьючерсы, а базовые активы в рамках срочных контрактов. 1 рупь - это биржевой сбор (комиссия) за заключение / исполнение контрактов. Цены (вообще говоря, котировки) определяются спецификациями контрактов. Например, для фьючерса на индекс РТС - это значение индекса, умноженное на 100.
Не хочу читать лекбес, но замечу фьючерс - это покупка или продажа обязательств, а не покупка актива. Т е фьючерсная сделка - это сделка с отсроченным исполнением. т е Вы обязуетесь в будущем купить актив. это обязательство оформляется сделкой - фьючерсом за 1 рупь и берется залог , т е обязательства стороны взяли на себя, но еще не выполнили.
т е вам показывают ожидаемую цену актива на день поставки. Вы вносите ГО -т.е. залог как определенный биржей процнт от возможной цены. в клиринг производят пересчет возможной цена и пересчет ГО. если внесенный вами го больше чем, новый то вам возвращают разницу, если меньше , то еще берут с вас. Таким образом, ваша возможная прибыль или убыток фиксируются в момент клиринга и нет никакой разницы торгуете вы 1 день или три месяца. прибыль/убыток Вы получаете в 14 и 18 часов мск в
Ivanco написал: Николай Камынин , спасибо большое за материал, буду разбираться. Правильно понимаю, что при таких условиях (берется средняя цена за какой-то промежуток времени), если открытая позиция проходит через несколько клирингов, то правило "Вар. маржа = Цена продажи - Цена покупки" будет иметь большую погрешность из-за того, что в каждом из пройденных клирингов цена фиксировалась усредненная (и доход либо убыток по результатам клиринга на ваш счет зачисляются уже исходя из этой усредненной цены), и погрешность будет тем больше, чем больше клирингов проходит открытая позиция? Как тогда на фьючерсах торгуют "в долгую", ведь итоговый доход либо убыток будет зависеть не только от цен покупки и продажи, а дополнительно будет зависеть от множества пройденных усреднений цены во время клиринга. (Ты рассчитываешь купить контракт по цене X и продать по цене Y, получить доход Y-X, но из-за усреднений клирингов ведь доход становится величиной не определенной)
если кратко то по фьючерсам есть ГО - т е залог, а не цена покупки продажи ( вернее цена покупки продажи фьючерса -1 рупь)
Michael Bulychev написал: Добрый день. Вы можете прямо в теле функции сохранять нужную вам информацию и всегда возвращать false.
но тогда какой смысл в возврате функцией таблицы номеров строк? Если следовать Вашей логике, то можно все сохранять в теле функции. И вообще все писать от печки.
DELETE_ALL_ITEMS() 'ФУНКЦИЯ УДАЛЕНИЯ СТАРЫХ ДАННЫХ ИЗ ТАБЛИЦЫ ADD_ITEM(1,OUTPUT)
IF((CANDLE_1+0=0) or ( GET_VALUE (CANDLE,"TIME")-GET_VALUE (CANDLE_1,"TIME") <>0) ) CANDLE_2= CANDLE_1 CANDLE_1= CANDLE END IF
END_PROGRAM
PARAMETER DATE; PARAMETER_TITLE ДАТА; PARAMETER_DESCRIPTION ДАТА; PARAMETER_TYPE STRING(30); END
PARAMETER TIME; PARAMETER_TITLE ВРЕМЯ; PARAMETER_DESCRIPTION ВРЕМЯ; PARAMETER_TYPE STRING(30); END
PARAMETER OPEN; PARAMETER_TITLE ЦЕНА ОТК.; PARAMETER_DESCRIPTION ЦЕНА ; PARAMETER_TYPE STRING(30); END ------------------------------- если надо в таблице видеть предыдущую, то отобразите CANDLE_2 вообще-то все делается гораздо проще (но писать программу за вас не буду) ---------------------------------- надо вычислить время предыдущей свечи, вычитая интервал и времени текущей свечи и снова прочитать с этим временем При этом надо учесть, что для нахождения последней свечи предыдущего дня надо уменьшить день. Но при этом надо учесть, что предыдущий день это не всегда текущий день минус 1. ----------------------------
например, надо найти все активные стоп-заявки, чтобы их удалить. Указываем , что вернуть надо order_num, а ищем по flags. В результате получаем таблицу номеров активных стоп-заявок.
Добрый день, Считаю, что возврат только номеров найденных строк не совсем удачное решение. После этого надо еще вытаскивать эти строки из хранилища. -------------------------------- Предлагаю возвращать таблицу номеров и таблицу самих строк, в которых возвращать лишь параметры, которые не участвовали в поиске. Спасибо
OnParam(STRING class_code, STRING sec_code, STRING paramname) а класс и сек - вообще можно убрать (можно и оставить [дело вкуса])
1) класс и сек нельзя убирать, так как paramname существует у множества инструментов. ------------------------------------------------------------- 2) Сейчас в колбеке надо для данного инструмента вытаскивать строку из хранилища и проверять какой параметр изменился, если нужный то обрабатывать. Раньше я уже предлагал, но возможно забыли. Напишу повторно. Как вариант, Можно передавать в колбек таблицы изменившихся параметров. Тогда мы проверяем наличие в полученной таблице нужного нам параметра и если есть, то работаем. Но вариант с подпиской, полагаю лучше.
Серьезное выражение лица - это не есть признак ума. Серьезные программы - это программы , написанные сильно озабоченными своей значимостью программистами
В качестве совета. чтобы не было мучительно больно при использовании значений X, которые должны быть числами, надо делать так: if type(X)=="number" then ... end чтобы не попадаться на nil при условии, что X может быть лишь числом надо делать так: Z=X or 0;
GET_CANDLE Функция для обращения к данным «свечек» на графике, а также к значениям индикаторов технического анализа. MAP GET_CANDLE (STRING class_code, STRING sec_code, STRING parameter_name, STRING interval, STRING graph_type, DOUBLE Date, DOUBLE Time) Т е чтобы получить какую либо свечу Вам надо указать для нее дату и время. Если Вам надо предыдущую, то берете время текущей отнимаете от него величину интервала и получаете свечу . Примерно так.