Здравствуйте, Подобное поведение уже исправлялось в одной из предыдущих версий. Возможно Вы столкнулись именно с этим. Попробуйте проверить на актуальной версии, сейчас это 7.6
согласно описанию функции getCandlesByIndex вторым параметром она возвращает количество свечек в таблице. т.к Вы всегда заказываете 2 свечки, топри n=n+1 получается всегда 3.
вы опять привели не полную версию кода. Что такое t?? где задается? Почему у функции main не хватает end? Почему Вы не выполнили рекомендации о переносе переменной n за пределы main?
Optimus1 Optimus1, Еще раз, то что Вам требуется и так вполне понятно и не требует уточнений. Конечно же Ваша задача элементарно решается. Но раз Ваш код не работает, значит в нем есть ошибка и чтобы ее найти нужна полная версия кода. Скорей всего, проблема именно в месте определения переменной N, попробуйте ее вообще вынести за пределы функций. Но это лишь догадка, для установления точных причин нужен код. Или его альтернатива в более компактном варианте.
Здравствуйте, Приведенный код, вызывает слишком много вопросов. Либо он вообще некорректно написан. Для диагностики, Вы можете добавить вывод информации через message тогда сразу будет понятно почему так происходит.
Здравствуйте, Позвольте дополнить к выше сказанному. По ссылке ниже, Вы найдете отдельный документ в котором рассказано о практическом применении PrintDbgStr: https://arqatech.com/upload/iblock/90b/quik_lua.zip
смотреть файл "Использование Lua в Рабочем месте QUIK.pdf", глава "Использование функции PrintDbgStr() на практике" на стр 40
Космонавт написал: Сергей, значит есть закономерности, которых Вы не знаете. Ведь по какой то причине ОнПарам опережает все другие колбеки, хотя и обновляется срезами.
Весь комплекс QUIK состоит из очень большого количества разных настроек. Возможно что действительно Ваш брокер что-то у себя подкрутил, а возможно что это просто совпадение. Но настроек влияющих на приоритет OnParam по сравнению с остальными колбэками не существует.
Космонавт написал: Вопрос 1: почему OnParam не всегда срабатывает, хоть и было изменение цены? (у меня в ОнПарам фильтр - не реагировать если цена прежняя). Я бы отказался от других колбеков, раз они медленные, но получается ОнПарам иногда даёт сбои.
OnParam обновляется срезами (раз в период), а не при изменении. Так было всегда и по другому настроить нельзя.
Цитата
Космонавт написал: Вопрос 2: у других участников форума тоже OnParam срабатывает первым? Или это зависит от брокера? Спасибо.
Это ни от чего не зависит, порядок срабатывания колбэков не определен.
Космонавт написал: Разработчики, прошу, не отмалчивайтесь.
И Вас тоже с праздниками.
Цитата
Космонавт написал: Откуда берётся этот постоянный трэш с Абрау Дюрсо?
К сожалению без полного кода узнать это даже теоретически не представляется возможным. Еще, в Вашем случае, следует проверить другие терминалы/срипты которые могут работать параллельно. И о какой версии терминала мы говорим?
Определитесь какую именно библиотеку Вы пытаетесь подключить. Сначала Вы пишите про socket, потом про ssl. Ели уж пробовать то на чем-то одном. Это нужно хотя-бы для того чтобы вести диалог об одном и том же.
medvedoff написал: Тоесть если мне нужен индикатор для визуализации и также для расчёта то приходится запускать две копии одного и того де кода, как то это не вяждется с дружественнеым интерфейсом нужели так сложно добавить код идентификатора в настройки индикатора?
На данный момент не существует штатного способа программно присвоить идентификатор графику. А значит, Вам придется решать задачу имеющимися способами.
medvedoff написал: Хорощо как обратиться, если нет идентификатора в этом то и вопрос?? Подробнее пожалуйста поясните а то у нас пока идёт обмен вопросами??,
Ответ уже был дан. Воспроизвести расчеты в теле скрипта. Без участия отдельного скрипта индикатора.
Ровно точно также, как если бы Вам нужно было решить задачу со стандартным индикатором.
medvedoff написал: Чем по вашему пользовательский индикатор хуже стандартного почему к нему нельзя применить теже правила ??н
Вопрос не понятен, что именно Вам требуется? Если обратиться к пользовательскому индикатору из скрипта, то к нему применяются ровно те же правила что и к стандартным.
medvedoff написал: Написал индикатор и хотел прикрутить его к скрипту и столкнулся с такой проблемой неужели нет возможности задействовать такой очень нужны й инструмент р
С какой проблемой Вы столкнулись? Если нужно, в Lua скрипте можно воспроизвести расчет индикатора.
dmitry dorjiev, Если бы проблема была в путях, была бы другая ошибка, вида "module 'socket.smtp' not found" У Вас же, судя по всему, проблема в самой библиотеке. Попробуйте использовать другую версию.
Андрей А написал: Или сначала как-то узнать все возможные комбинации (client_code + firmid), чтобы потом для каждой из них получить портфель..
Узнать можно из таблицы лимитов по деньгам.
Цитата
Андрей А написал: . Следующий фрагмент кода в итоговую таблицу почему-то не заносит ничего
Вы неверно используете функцию. Она возвращает массив состоящий из параметров клиентского портфеля, но не набор строк клиентского портфеля. Иными словами, функция GET_NUMBER_OF(MAP) вообще лишняя. И цикл перебора тоже. Попробуйте на простом примере
В заключении, язык QPILE признан устаревшим и уже давно не развивается. Рекомендуем работать на QLua который пришел на его замену. Документация лежит в папке с терминалом, файл QLUA.chm
Sergey Gorokhov написал: ЦитатаБорис Гудылин написал: То, что индикатор смог один раз отработать нормально (ведь, могут же!), дает мне надежду, что разработчики возводят на себя поклеп. Нужно их пояснение. Проблема изучается. Постараемся в ближайшее время дать ответ.
В текущей реализации свойства линии доступны в OnCalculate только при добавлении индикатора. На основе Вашего обращения мы зарегистрировали пожелание на доработку.
Космонавт, Ваш вопрос в чем? Как отправить транзакцию через брокерский API или как брокер эту транзакцию обработает? Вам уже три человека сказало что эти вопросы надо решать не здесь а с Вашим брокером. Касаемо советов, для начала просто объясните ему суть проблемы.
ROBOBORO написал: Как вообще пользоваться Settings? В скрипте(не индикаторе) могу ли потестировать и понять как оно работает и что вообще позволяет делать?
Если скрипт не индикатор, то в нем таблица Settings ничем не отличается от любой другой таблицы.
Цитата
Старатель написал: 1. Исправьте ошибку с лишними пересчётами индикаторов при их добавлении или изменении.
Мы знаем об этой проблеме и уже работаем над ее устранением.
Цитата
Борис Гудылин написал: То, что индикатор смог один раз отработать нормально (ведь, могут же!), дает мне надежду, что разработчики возводят на себя поклеп. Нужно их пояснение.
Проблема изучается. Постараемся в ближайшее время дать ответ.
Это не сложнее чем делать то что никто до Вас не делал. Вам всего-то нужно подавать транзакцию через sendTransaction с каким, нибудь уникальным TRANS_ID и далее ждать ответа в событии OnTransReply
Цитата
Александр Ковальский написал: подключится ли библиотека? Или надо что-то ещё дописать?
Если trans2quik.dll будет лежать в той же папке что и lua скрипт, напишите так:
Код
ScriptPath = getScriptPath()
package.cpath = ScriptPath .. "\\?.dll;".. package.cpath
package.path = ScriptPath .. "\\?.lua;".. package.path
local api = require('trans2quik')
assert(api)
Однако, как уже было сказано, нам не известно будет ли оно работать или нет, так как никто до этого такую схему не делал. Проверьте самостоятельно.
Для подключения библиотек в Lua существует функция require. Однако совершенно не понятно зачем это нужно, ведь в Lua есть все что есть в Trans2QUIK и даже больше. На наш взгляд такая схема абсолютно лишена смысла.
Как по формуле узнать последние 50 значений X из 100 имеющихся? Никак. Просто потому что для расчета надо знать чему равно X1 и от него уже подсчитать все остальные.
Вот по этому, еще в четвертый раз повторяем.
Цитата
Sergey Gorokhov написал: Индикатор RSI строится по EMA, которому нужен расчет по предыдущим значениям.
Если Вам нужно получить последние 50 свечек, будьте добры предварительно подсчитать и первые свечки. Просто такая формула.
Космонавт, Это Вы не уловили нить ответа. RSI требует согласно формуле, свои предыдущие значения. Это особенность данного индикатора. Даже если Вам надо только 50 последних свечей он в принципе не сможет Вам их дать не проведя расчет предыдущих. Просто такая формула.
Функция CreateDataSource никогда не возвращает ошибку, И это создаёт большие проблемы при разработке. В неё можно запихнуть любой мусор, и она скажет: "Всё отлично".
Антон Кыт. написал: Хорошо, зарегистрируйте пожалуйста доработки - "Проверка существования бумаги в классе" - "Проверка указания правильного интервала" (В данный момент можно без проблем заказать интервал "17")
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Цитата
Антон Кыт. написал: метод датасорса ds:ServerSize()
Функция CreateDataSource никогда не возвращает ошибку, И это создаёт большие проблемы при разработке. В неё можно запихнуть любой мусор, и она скажет: "Всё отлично".
Антон Кыт. написал: То есть имеется ошибка в реализации данной функции! Прошу исправить.
Не видим ошибки в функции. Так как в документации четко сказано
Цитата
Если указан неверный код класса или параметр, то возвращается «nil». При этом error_desc содержит описание ошибки.
Вы же, экспериментируете с кодом инструмента.
Касаемо остального, Вы сами как пользователь для себя должны определить чем лично Вам надо торговать а чем нет. Программа в этом месте даже больший враг чем Вы. Либо попросите Вашего брокера настроить блокировку на те инструменты которые он посчитает неликвидом.
С нашей стороны, можем только предложить зарегистрировать от Вас пожелание на проверку существования бумаги в классе.