Конечно. Именно так все и оформлено. Функция то находится (как и все остальное все функции в этой dll) и запускается на выполнение. Проблема в том, что loadbuffer выдает ошибку в какие и не выдает ее в стандартном интерпретаторе.
при этом прямая перекомпиляции без каких либо изменений в тексте в 5.3 даёт абсолютно рабочий вариант.
Руками. Там, где настраиваете цвета, периоды, толщину линий.. там же есть и ваше название. Вот его и можно изменять при накладывания индикатора на график и это изменённой название можно выводить в диагностике.
А если вы прочитаете ещё раз (или несколько раз, как получится), то вдруг окажется, что индикатор нужен всего один, а в настройках можно менять его Name вместе с иными параметрами.
Есть библиотека для 5.3. Работает на ура. И в квике и в standalone
Пересобрал ее на 5.4. Работают все три десятка ее функций (и в квике и в standalone) без каких либо проблем, кроме одной. Она работает в standalone, но напрочь отказывется работать в квике.
Выкинул из нее все лишнее, оставил минимум для теста
вызов из луа: message("result=" .. tostring(xx.test("message('hello world!!',3)")))
И если в standalone мы получаем два сообщения OK, hello world и nil в качестве возврата, то в квике мы сразу получаем loadbuffer error и дальше, конечно мусор.
Может, кто то пальцем сможет указать направление в пустыне?
Для идентификации можно использовать поле NAME из Settings. Каждой копии индикатора изменяйте название, в тексте индикатора все функции заверните в xpcall и в обработчике ошибки выводите NAME
Никита, подпишите ь на приход каждого типа посредством функции crratedatasource. При этом проверьте, что ваш брокер транслирует вам тиковые данные.
функция обратного вызова, которую вы укажете параметром в этой функции, будет вызываться на каждом тике и давать вам информацию об этом тике. Что делать дальше -решать уже вам.
Andrey Bezrukov написал: Оценка востребованности происходит в т.ч. и по количество обращений с запросом на реализацию какого-либо функционала, да.
Да большинству требуется вобше минимальный функционал, они дальше своего носа ничего не видят, и не пользуются скриптами, а вот если человек уже 10 лет пользуется вашей программой и выявляет ошибки и предлагает доработки, то его предложения никак не должны попадать категории большинства или количественной оценки. Но если предложения не реализуются, то и смысла предлагать их нет. Любые регламенты меняются на раз два, при необходимости, вопрос в том сколько было реализовано пожеланий и какие за последний год?
Версий вышло мильен, но все они сделаны не по желанию пользователей, а при острой необходимости.
сначала кусок терминала дали писать Васе, второй кусок дали писать Пете. Петя в свое куске написал с подчеркивание м, а Вася в свое без. Понятно, что руководящей роли партии не было и в помине.
когда в результате организовался винегрет, приводить к общему знаменателю было уже поздно и поэтому поля продублировали.
Alexandr написал: Правильно я понял, что по функции CreateDataSource мы точно не знаем, сколько мы получим свечей?
она даст вам 3000 свечей выбранного вами таймфрейма либо меньше, если на сервере их меньшее количество.
однако если ваш терминал работал давно и поток данных на этом таймфрейме на этом инструменте терминал получал с сервера (например, был открыт график этого инструмента на этом таймфрейме), то на локальном диске будут сохранены эти данные и createdatasource их тоже подхватит и отдаст вам. В этом случае максимальное количество доступных свечей ограничивается цифрой 32000.
количество свечей, которое вы получите, заранее никогда неизвестно. Терминал не знает, сколько свечей есть на сервере. Свечи становятся доступными по мере того, как они приходят с сервера. Все что вы можете узнать в каждый конкретный момент после выполнения createdatasource это сколько свечей доступны именно в этот момент.
В Квик встроен луа 5.4.1. я нашел в сети 5.4.2 и собирал библиотеку с ней. Не в этом ли дело? 5.4.1 я не смог найти, если подскажете где , будет здорово.
Nikolay написал: Такой возможности нет. Но Вы всегда можете снять стоп ордер, дождаться статуса снятия и просто закрыть по рынку. Это будет аналогичное действие.
Возможность принудительной активации стоп-заявки из луа, конечно же есть.
Подскажите - возможно ли перенести индикаторы с одного листа на другой, чтобы вручную на каждый график их не добавлять ?
шаманский метод дано: окно с наложенным нужным индикатором
Задача: добавить в другое открытое окно этот же индикатор без вызова интерфейса добавления индикатора на график
последовательность: 1. Ctrl-N в окне с исходным индикатором. создаётся копия окна с таким же индикатором 2. В легенде индикатора в полученном новом окне мышкой цепляем наш индикатор и переносим его в целевое окно
Николай-77 написал: Уважаемые разработчики, предлагаю сделать систему стоп-заявок более удобной. Сейчас нужно вручную вводить цену активации стопа "стоп-лимит, если цена <= (или >=) такого-то значения." И далее вручную же вводим цену, по которой заявка будет исполняться. Но в такой реализации есть подстава - если стоп на графике передвигать, то передвигается только цена активации, но не исполнения. Предлагаю изменить подход - вписывать не цену исполнения стоп-заявки, а количество тиков, отстоящих от цены активации. А цену активации стопа вписывать также, как сейчас. Т.е., если сделать так, чтоб при перемещении на графике линии активации стопа, автоматически перемещалась бы и цена исполнения, будет гораздо удобнее, и трейдеры скажут Вам за это спасибо! ) Надеюсь понятно написал...
в качестве отступа можно использовать проценты, если это поможет
Евгений написал: нет. менять в скрипте индикатора по условию
это просят уже лет 10.
видимо, невозможно
вы уважаемы достали уже со своим спамом и рекламой, вы не разработчик квика
с разработчиками вы вряд ли сможете пообщаться, не тот случай. Если вы желаете пообщаться с техподдержкой ПО Квик - вы можете использовать контакты для общения почтой. А здесь форум, вам придется потерпеть.
Ренат написал: Доброго времени суток всем. Прошу помочь.Есть следующий код
Код
--========> Н А Ч А Л О
is_Run = true
-->> Класс и код бумаги. для начала одна бумага
class = "QJSIM"
sec = "IRAO"
-->> Для Функций BUY_SELL
qty = "1" ---->> кол-во лотов на прокупку-продажу
--Основной поток отдельно от Quick'a
function main ()
-- *****************************************************************
---------->> Т Е Л О С К Р И П Т А <<---------
while is_Run = = true do
--Берем цену из стакана
stakan()
spred()
sleep ( 5000 )
end
end
--========== Ф У Н К Ц И И ========--
-- Основная функция для остановки
----------------------
function OnStop () --
is_Run = false --
end --
----------------------
---------->> П О Л У Ч Е Н И Е С Т А К А Н А
function stakan ()
ql2 = getQuoteLevel2 (class, sec);
bids_qty = tonumber(ql2.bid_count) -- кол-во BID-ов
--offers_qty = tonumber(ql2.offer_count) -- кол-во OFFER-ов
--message(tostring(bids_qty))
return ql2
end
---------->> Р А С С Ч Е Т С П Р Е Д А
function spred ()
--ql2 = getQuoteLevel2(class, sec)
b_qty = tonumber(ql2.bid_count)
price_bid = tonumber(ql2.bid[b_qty].price) --<<<<< Выдает ошибку
price_off = tonumber(ql2.offer[ 1 ].price)
spred_pr = tonumber(price_off - price_bid)/price_bid * 100
--spred_pr = 0.30
message (tostring(price_bid .. " < > " .. spred_pr .. " < > " .. price_off))
end
В quik Junior на тестовом счете все работает. А на рабочем Quik от сбера выдает ошибку "attempt to index a nil value (field 'bid')". Нужный стакан открыт и там и там. Перепроверял. Подскажите куда копать?
Это известная проблема архитектуры. Она не обходится программно. Необходимо каким то образом изначально задавать класс или приоритеты классов для поиска
Вы должны сами решить, в каком классе из возможных продавать ваши бумаги. Кроме вас, никто об этом не знает.
вы сами писали в первом сообщении, что можете перебрать доступные торговому счету классы и найти там тот в котором можно продать ваши бумаги. Ну и делайте так, если все равно, как превратить бумаги в деньги.
Акции в вашем портфеле не привязаны к классам. Это кажется необычным, но это так. Акци. Лукойла теоретически вы можете купить в разных классах, при этом они будут учтены вместе одним количеством.
стандартный случай, когда вы купили тот же Лукойл в классе tqbr и потом догнались тем же лукойлом в классе неполных лотов
У вас, скорее всего, проблемы синхронизации потоков. В массив queue другой поток уже добавил элемент, но ещё не записал в него значение. Поэтому вы получаете значение nil, которое функция tonumber не может прожевать
терминал на графике может нарисовать как свечи котировок, так и свечи параметров. Для получения свечей параметров необходимо в качестве источника указать один из параметров инструментов при построении графика. Вы можете это сами попробовать и (наверное) вы сможете это сделать.
функция createdatasource при указании названия параметра инструмента выводит не свечи котировок инструмента, а свечи истории этого параметра.
формат возвращаемых данных тот же самый и вы его правильно скопировали из документации.
таким образом, вы можете получать историю параметров в том же самом виде и формате, как и историю котировок.
спорить не стоит, но если потребуется помощь, спрашивайте.
У функции createdatasource есть последний параметр.
если вы его не указываете, функция возвращает свечи котировок инструмента. Если укажете ("bid" например), то будут свечи истории параметров инструментов.
Os.date есть в конце концов прямой вызов сишной функции и аозможно win api Неправильно работать оно не может.
Если возникают проблемы, дело не в os.date, а в чем то другом. Испорчен стек вызовов, проблемы синхронизации или что угодно ещё. Грешить на луа не имеет смысла.