Alex Green, В данной теме обсуждается Lua индикатор фракталов, там такая возможность есть. Во встроенном индикаторе такой возможности не предусмотренно.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
21.11.2017 04:56:28
Цитата
Sergey Gorokhov написал: Alex Green , Да, установить Period не 3 а 5.
nero333 написал: _sk_, спасибо, это хорошая идея, думаю реализовать что-то подобное. Вопрос был к разработчикам относительно кнопки "Остановить", аварийный выход - это всё-таки когда скрипт падает с выводом ошибки в поле "Ошибки выполнения скрипта".
Кнопка "Остановить" это не аварийный выход, а просто остановка скрипта. Принудительная (в Вашем термине "аварийная") остановка происходит не по нажатию кнопки, а по истечении таймаута 5 сек. И это не зависит от того что в это время делает main, что-бы Вы туда не написали скрипт принудительно завершится. Таймаут можно изменить, это делается в return события OnStop (см документацию QLUA.chm) Если Вам что-то нужно снять заявки перед остановкой скрипта, делайте это в самом OnStop
Помогитете пожалуйста, Запись данных в таблицу.
Пользователь
Сообщений: Регистрация: 23.01.2015
17.11.2017 14:55:29
Цитата
Максим написал: Мне это нужно чтобы я мог видеть так называемый "горизоотальный объем" но выраженый не графически а в табличной форме. Поэтому мне нужно как то сделать так чтобы на каждую свечу у меня выпадала табличка в файл вот в таком виде:
т.е. каждые 10 минут Вам нужно видеть сделки за последние 10 минут. это решается через ту же getItem. в main делаем цикл, который через getItem будет перебирать сделки за последние 10 минут. т.к. getItem берет данные из таблиц по номеру строки, то оптимальней всего будет реализовать цикл начиная с конца таблицы. с каждой строки, берем код инструмента, время сделки, количество и цену. ПО коду инструмента отфильтровываем не нужные инструменты. По времени смотрим входит ли сделка в нужный промежуток 10 минут. Если да, то сохраняем данные или показываем в таблице. Если нет то прерываем цикл. Прошу понять что задачей поддержки не является написание кода на заказ. Мы можем только посоветовать алгоритм, либо помочь найти причины возникшей ошибки. Если у Вас недостаточно опыта в программировании, наверное лучше найти человека который сможет реализовать Ваш алгоритм за вознаграждение, на нашем форуме такие есть.
Помогитете пожалуйста, Запись данных в таблицу.
Пользователь
Сообщений: Регистрация: 23.01.2015
17.11.2017 13:42:44
Цитата
Максим написал: А эти готовые данные с таблицы всех сделок берутся в текущем времени?
Данные будут выглядеть также как Вы их видите на графике.
Цитата
Максим написал: Т.к. меня интересуют параметры qty, price, flags
если с qty, price проблем нет, то flags Вы через CreateDataSource не получите. Собственно не понятно зачем Вам это и изначально про него речи небыло.
т.е. грубо говоря Вам нужно из тиковых данных сделать 10 минутные, как на графике? Тогда можно обойтись вообще без OnAllTrade, ведь уже готовые данные можно получить через CreateDataSource с параметром INTERVAL_M10 она выдаст нужные данные в уже готовом виде.
Подвешивание info.exe через механизм межпоточного локинга
Пользователь
Сообщений: Регистрация: 23.01.2015
17.11.2017 12:57:02
El El, Воспроизвели. Проблема изучается. Постараемся в ближайшее время дать ответ.
Подвешивание info.exe через механизм межпоточного локинга
Пользователь
Сообщений: Регистрация: 23.01.2015
17.11.2017 12:38:19
El El, В заголовке times уже +30000 пока полет нормальный. А у Вас при каком значении зависает терминал?
Егор Масалкин, getCandlesByIndex работает с графиком а не с источником данных. А значит она будет реагировать на изменения с графиком. Если Вам нужно работать с исходными данными, для этого есть CreateDataSource
Отработка OnOrder после остановки скрипта
Пользователь
Сообщений: Регистрация: 23.01.2015
16.11.2017 18:31:56
Цитата
nero333 написал: Получается, что после нажатия "Остановить" OnOrder уже не отрабатывает. Это ошибка или так должно быть?
Если остановить скрипт то он остановит свою работу, все логично.
OnAllTrade срабатывает по событию, а не по таймеру. Если нужно по таймеру, то нужно избавиться от OnAllTrade и вместо нее использовать функцию getItem (см. документацию, раздел "Функции для обращения к строкам произвольных таблиц QUIK") Эту функцию, нужно вызывать внутри main, там же где и sleep. В самом sleep установить нужное значение паузы
Помогитете пожалуйста, Запись данных в таблицу.
Пользователь
Сообщений: Регистрация: 23.01.2015
16.11.2017 14:13:12
Цитата
Максим написал: А таблица после вывода будет иметь вид как ч описывал или нет?
вопрос не понятен. Если нужно узнать "что будет если" проще всего запустить код и самостоятельно увидеть результат.
Цитата
Максим написал: И еще вопрос. Код который вы прислали там есть sleep(1000) то есть запись будет производиться каждую секунду?
Нет. sleep вообще никак не влияет на OnAllTrade т.к. он в функции main которая живет в отдельном потоке. Данная конструкция нужна чтобы скрипт не завершал работку сразу после запуска а висел пока его не остановят.
Цитата
Максим написал: и в вашем коде цикл стоит помле описания переменных и функции - это принципиальный момент или этт дело вкуса?
Во первых, всё что вне функции mail крутится в основном потоке терминала. А значит если Вы опишите бесконечный цикл, то терминал просто зависнет. Во вторых, Ваша конструкция абсолютно лишена смысла и логики, зачем описывать функцию внутри цикла? Если хотите можно функцию main написать в верху, а OnAllTrade внизу, разницы никакой нет.
Помогитете пожалуйста, Запись данных в таблицу.
Пользователь
Сообщений: Регистрация: 23.01.2015
16.11.2017 13:45:46
Максим, В коде очень много ошибок, проще показать как оно должно быть
Код
IsRan=true
function OnAllTrade(alltrade)
if alltrade.sec_code=="xxx" then
cena=tostring(alltrade.price)
data=tostring(alltrade.datetime.year)..tostring(alltrade.datetime.month)..tostring(alltrade.datetime.day)
kolvo=tostring(alltrade.qty)
a={}
a["cena"]=cena
a["data"]=data
a["kolvo"]=kolvo
end
end
function main()
while IsRun do
sleep(1000)
end
end
функция getFuturesHolding вызывается внутри функции obnov(), которая нигде в коде не используется. Либо в этом и есть причина, либо Вы опять привели не полный код скрипта. И Вы так и не представили скриншот таблицы позиций по клиентским счетам, на котором видно что данные которые Вы запрашиваете, действительно существуют.
загрузка tri файла, как можно изменить скорость загрузки
Егор Масалкин, Алигатор показывает данные в будущее, в результате, в окне даграммы справа добавляются свечки. Пусть хоть и пустые, но они есть: А значит правильно и логично что getNumCandles реагирует на эти самые свечки.
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
14.11.2017 16:30:16
sav 312, Прошу понять что написание кода на заказ не является нашей задачей. Если есть проблема, готовы помочь ее решить. Но если проблемы нет, а надо написать код то увы. Что именно не получается?
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
14.11.2017 14:40:54
sav 312, Можно, для этого достаточно переделать условие "if Up and Down then" так чтобы оно срабатывало в нужный для Ваших целей момент. например добавить счетчик, который при нужном количестве 2 вызовет break
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
14.11.2017 13:01:27
t2,n2,i2 = getCandlesByIndex(CODE_FRAC, 0, 0, N2-1); if (t[num].high) > 0 then message("Up="..t[num].datetime.hour..":"..t[num].datetime.min,1)
t, n, l = getCandlesByIndex("qwe", 0, 0, getNumCandles("qwe")-1)
Up=false
Down=false
for i=0,n-1 do
num=n-1-i
if (t[num].high)>0 then
Up=true
message("Up=".. t[num].datetime.hour..":"..t[num].datetime.min)
end
if (t[num].low)>0 then
Down=true
message("Down=".. t[num].datetime.hour..":"..t[num].datetime.min)
end
if Up and Down then
break
end
end
Функция фракталы
Пользователь
Сообщений: Регистрация: 23.01.2015
14.11.2017 10:09:06
Здравствуйте, Также через функцию getCandlesByIndex нужно написать цикл, который будет перебирать свечки начиная с текущей и в прошлое, пока не найдет свечки фрактала.
Новичок QPILE. Где можно посмотреть, скачать примеры файлов со скриптами?
Пользователь
Сообщений: Регистрация: 23.01.2015
08.11.2017 04:59:11
Здравствуйте, QPILE признан устаревшим и более не развивается. Рекомендуем сразу же начать изучение альтернативного языка QLUA как более современного и перспективного. Документация и примеры доступны по ссылке
Лимитированная заявка
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 10:46:16
Цитата
DP написал: Я не нашел ответ в документации, к сожалению.
Для начала нужно определиться какой стоп Вы хотите, при каких обстоятельствах он выставляется, и при каких условиях он будет покупать. Документация на терминал QUIK: -Раздел 5. Торговые операции клиента --Условные (стоп-) заявки
И только после этого, следует обратиться к документации за поиском параметров транзакции -Раздел 6. Совместная работа с другими приложениями --Импорт транзакций ---Формат .tri-файла с параметрами транзакций
Ошибка, attempt to compare two table values
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 10:26:28
Алексей, Для того чтобы понять причину нужен весь код целиком, а не только часть
Лимитированная заявка
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 10:22:12
Цитата
DP написал: Пытаюсь всю схему в голове уложить. Стоп заявки используются для ограничения убытков и получения прибыли и всегда идут в паре с заявкой, которая осуществляет вход в рынок. Я правильно понял Вашу фразу "На срочном рынке такой возможности нет. Как вариант, можно использовать стоп заявки"?
Вы задали конкретный вопрос
Цитата
DP написал: А есть возможность выставить заявку так, чтобы она исполнилась, когда цена достигнет определенного значения вне зависимости от того есть ли предложения по лучшей цене?
На него был конкретный ответ:
Цитата
Sergey Gorokhov написал: На срочном рынке такой возможности нет. Как вариант, можно использовать стоп заявки
Зачем Вы ищите скрытый смысл там где его нет? Если надо ставить стоп для ограничения убытков, то пожалуйста ставьте. Если хотите поставить стоп для покупки или продажи, никто не запрещает.
Лимитированная заявка
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 09:57:56
DP, Не совсем понятно как вопрос связан с темой обсуждения. Если нужно ставить стоп заявку для ограничения убытков, то ставьте.
Ошибка, attempt to compare two table values
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 09:21:58
Цитата
Алексей написал: Есть еще вопрос, существует ли параметр что бы считать минимум и максимум пред идущей свечи на графике
для доступа к свечкам можно использовать функцию getCandlesByIndex Что касается минимумов и максимумов, то чтобы их найти нужно с чем-то сравнивать, не совсем понятно, с чем нужно сравнивать значения
Ошибка, attempt to compare two table values
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 09:06:27
Цитата
Nikolay Pavlov написал: возможно функция не возвращает значения, т.к. были указаны некорректный код класса или инструмента, также можно смотреть на поле getParamEx(...).result
или торги еще не начались
Индикатор на индикатор
Пользователь
Сообщений: Регистрация: 23.01.2015
07.11.2017 07:01:34
Let_it_go, Боюсь что в случае FRACTALS просто так решать задачу не получится т.к. он смотрит на Hight и Low источника, а у индикаторов, само собой никакого Hight и Low нет. Варианты решения есть, но они не простые. Либо брать данные через getCandlesByIndex (что сложно), либо переписать код индикатора, так чтобы вместо Hight и Low был Any (что по проще) Кроме того, следует иметь ввиду что в последней редакции FRACTALS возвращает номера свечек, значит, чтобы увидеть их на графике, следует установить значения через функцию SetValue.
И последнее, в QLUA есть встроенная функция GetValue в связи с чем в индикаторах она переименована в GetValueEX, обновите индикаторы
На срочном рынке такой возможности нет. Как вариант, можно использовать стоп заявки
Лимитированная заявка
Пользователь
Сообщений: Регистрация: 23.01.2015
03.11.2017 08:37:11
DP, Вчера по RIZ7 цена опускалась ниже 111700 Если на рынке есть цена лучше чем Вы указали, то заявка исполнится по лучшей цене. т.е. Вы купили дешевле чем хотели вот и все.
Активные-снятые заявки
Пользователь
Сообщений: Регистрация: 23.01.2015
02.11.2017 12:46:34
Цитата
Let_it_go написал: Сергей, а какие проблемы могут возникнуть при такой проверке:
Код
if t.flags = = 30 then
считать заявку снятой
end
Могут быть такие что у разных снятых заявок десятичное представление будет разным и проверка не сработает
Активные-снятые заявки
Пользователь
Сообщений: Регистрация: 23.01.2015
02.11.2017 12:35:59
Цитата
Let_it_go написал: Снятая заявка имеет параметр flags=30 Исполненная заявка имеет параметр flags=28
некорректно проверять флаги в десятичном виде, проверять следует в шестнадцатеричном. Для этого есть функции bit Например как указано выше
Цитата
Let_it_go написал: является ли это исчерпывающей характеристикой снятости-неснятости? ну например если hour==0, то заявка НЕ снятая, а если hour>0, то она снята? Спасибо.
нет т.к. заявка может быть снята в полночь. правильней проверять флаги
Информация получена, проблема изучается. Постараемся в ближайшее время дать ответ.
Как в индикаторе получить параметры обезличенной сделки?
Пользователь
Сообщений: Регистрация: 23.01.2015
01.11.2017 04:34:15
Здравствуйте, Доступ можно получить только через функцию getItem
Подскажите какая функция читает "доску опционов" ?, доска опционов
Пользователь
Сообщений: Регистрация: 23.01.2015
30.10.2017 09:41:13
Цитата
c3po написал: Спасибо за ответ. Имелся в виду открытый интерес по страйкам. В текущей версии квика данная колонка названа открытыми позициями.
Прошу прощения, изначально вопрос был понят не правильно. Открытый интерес из таблицы текущих торгов можно получить функцией getParamEx с параметром NUMCONTRACTS
Подскажите какая функция читает "доску опционов" ?, доска опционов
Пользователь
Сообщений: Регистрация: 23.01.2015
30.10.2017 06:13:52
Цитата
c3po написал: Добрый день! Какие способы есть прочитать значения открытых позиций из доски опционов?
На всякий случай:
Цитата
Egor Zaytsev написал: В текущей версии доступа к таблицы "Доска опционов" нет.
Но выход есть. Доска опционов берет данные об открытых позициях из таблицы Позиции по клиентским счетам. А значит, чтобы получить нужную цифру, Вам достаточно обратиться к этой таблице через функцию getItem
ошибка в примере а не в коде скриптов. укажите строку так ma_out=func(i, {Period=3, Metod = EMA, VType=CLOSE}, ds)
пример поправим
Индикатор на индикатор
Пользователь
Сообщений: Регистрация: 23.01.2015
27.10.2017 09:49:59
Let_it_go, 1) В QUIK нельзя накладывать индикаторы на индикаторы. 2) только если формулы обоих индикаторов уместить в одном скрипте. Или делать через привязку к идентификатору (см функцию getCandlesByIndex)
Автоматическая привязка линии тренда к свече
Пользователь
Сообщений: Регистрация: 23.01.2015
25.10.2017 12:10:08
Lap raze, Здравствуйте, Это возможно, то только через механизм меток, а не трендовых линий. В QLUA это функция AddLabel