Germany | Finland | Saint Petersburg | Drive

Индикатор времени до окончания свечи

4.7/5 оценка (6 голосов)
  • Версия: 3.1
  • Требования: Quik 8.6
  • Размер: 277.65 KB
  • Просм: 6230
  • Добавлено: 05.02.16
  • Скачано: 1224
  • Изменено: 02.06.20

Следуем моде на умные часы:

Представляем вам умные часы от компании Bot4Sale! wink


Индикатор, показывающий на графике время, оставшееся до закрытия свечи.

 

 

Установка

Архив содержит 2 версии: демонстрационную и полную. Сеанс работы демонстрационной версии составляет 10 минут, после чего скрипт необходимо перезапустить. В полной версии ограничений нет.

  1. Прочите файл readme.html
  2. Разархивируйте полученный с сайта файл. Файлы демонстрационной версии не защищены паролем.
  3. Поместите файл bot4sale64.dll в папку терминала quik
  4. Если в папке терминала quik отсутствует подпапка LuaIndicators, создайте её.
  5. Поместите файл Candle_Rest.lua в папку LuaIndicators.
  6. Файл cr.lua положите в любое удобное вам место. В ту же папку  поместите звуковые файлы .wav
  7. Запустите скрипт cr.lua посредством меню терминала Сервисы-Lua скрипты.
  8. Графику цены инструмента (или любому другому графику) назначьте идентификатор. Для этого вызовите его свойства и во вкладке Дополнительно введите идентификатор
  9. Теперь можно на этом графике запустить индикатор. Его вы увидите в списке доступных индикаторов. В настройках индикатора в поле Идентификатор графика цены укажите тот же идентификатор, который вы только что дали графику цены. При необходимости настройте и остальные параметры индикатора.

 

Если Вам необходимо, чтобы индикатор исполнял звуковую сигнализацию, укажите в параметрах имя звукового файла и время до окончания свечи, когда необходимо проиграть звук. Например, при задании 0-12-34 сигнал будет произведен за 12 минут 34 секунды до завершения времени свечи (1-23-34 означает 1 час, 23 минуты, 34 секунды).

Если звуковая сигнализация вам не нужна, не указывайте название звукового файла в настройках индикатора.

Демонстрационная версия по функционалу аналогична полной, но каждые 10 минут просит нажать на кнопку.

 

История версий

 
Версия Описание
3.1
  • Адаптировано для работы с квик версии 8.6
  • Небольшие улучшения
3.0
  • Адаптировано для работы с квик версии 8
2.0
  • Полностью переписано.
  • Удалена библиотека staticvar.dll как не оправдавшая себя.
  • Добавлен функционал, позволяющий индикатору корректно (на сколько это возможно в терминале quik) работать при размножении графиков и в режиме связанных окон.
1.4
  • Уменьшена нагрузка на процессор
  • Исправлены ошибки
1.3
  • Пересобрано для работы с библиотекой bot4sale.dll
  • Оптимизация кода
1.2
  • Добавлена индикация секунд, оставшихся до наступления времени сигнала
1.1
  • Возможность задать цвет символа часов
  • Возможность задать толщину рамки
1.0
  • Исправление неточностей первой версии
  • Звуковая сигнализация
0.99
  • Начальная версия

Полная версия идет в обмен на взнос на постройку зимнего приюта для майских жуков. Номер банковской карты и электронные кошельки:

 

BTC: 13vSKhinR1QRxTkZBKgrpDpKV44n2vuBkQ
ETH: 0xa203d980b913851576f07002a92c181868177985
Руб: 410012694478342

 

 

 

 

 

 

 

 

Размер взноса не регламентируется, но торг здесь неуместен! )))

 


Есть предложения? - Пишите.

Понравятся - Добавлю.

  

Комментарии   

# Peligrin 11.02.2016 12:08
Не получилось увидеть часики
делал как в описании, но пока результат ноль.

скажите - 10 минут ограничение - потом перезапустить скрипт :
1 - он сам остановится ? или просто перестает исполнять свои функции
2 - нужно ли перезапустить квик что бы скрипт заработал опять?
# admin 11.02.2016 12:24
Здравствуйте.

Если не получилось вообще ничего увидеть -значит, что-то забыли установить или сделали не так, как написано в порядке установки.

Если индикатор запустился, но не получается увидеть символ часиков и получить оповещение перед завершением свечи - значит, вы не указали в параметрах индикатора время, когда это звуковое оповещение нужно издавать. Зададите это время правильно - часики появятся и дуделка будет дудеть.

Перезапускать нужно файл cr.lua в меню Сервисы-Скрипты Lua

Если что-то совсем не получается - звоните скайпом
# Peligrin 11.02.2016 14:09
Все делал верно.
Вся засада оказалась в самом квике ( восстановил его из резервной копии - и все заработало с первого раза)
# Peligrin 11.02.2016 14:17
Подскажите - как разместить часы у верхней границы окна?
Как отодвинуть вправо - понятно - нужно в ini файле указать расстояние от правой свечки
как их в верх-вниз можно двигать?
# admin 11.02.2016 14:23
Это вопрос на 100 рублей.

Ответ. Никак. Разработчики терминала не предоставили никаких возможностей для этого. От слова "совсем".

Пишите им, ругайтесь, требуйте.... Можно нецензурно.
# Peligrin 11.02.2016 15:08
Перемещать часы получилось с небольшим извратом и не совсем красиво (но может кому пригодится)
-сделать под них отельный график в отдельно окне,
- убрать все лишнее надписи
- оставить 1 последний бар
- сделать сдвиг графика на 1 интервал
-, сделать тонкими границы окна и убрать заголовок
- сделать активным поверх всех окон


вопрос - а можно ли менять размер шрифта?
# admin 11.02.2016 15:23
А ведь верно. Привязать часы можно не только к графику цены, но вообще к любому графику. Создаем новое окно, кладем в него какой-нибудь осциллятор типа стохастика, болтающегося вокруг нуля. масштабируем окошко, чтобы график превратился в линию и привязываем часики к графику этого стохастика.

Спасибо за идею!

Касаемо шрифта. На текущий момент шрифт не масштабируется. Это не совсем "windows font". Я могу сделать масштабирование шрифта, но мне непонятна надобность оного. Сможете обосновать картинкой и пояснениями?
# Peligrin 11.02.2016 17:39
масштабирование шрифта - это скорее вопрос юзабилити, а не насущной потребности.
Получается что масштабировать пространство вокруг часиков можно,
а сами часы подогнать под размер окна нельзя.

сейчас шрифт нормально читаемый, возможность его увеличить - это что то вроде, дополнительная возможность настроить рабочее место более комфортно
# admin 11.02.2016 17:52
Ок, Народ заинтересуется индикатором - добавлю и эту возможность
# Peligrin 11.02.2016 17:52
к чему лучше привязать часики ?
к какому индикатору и с какими параметрами - что бы он возле нуля был?

мои эксперименты в этом направлении пока нормального результата не дали) в индикаторах я не силен
# admin 11.02.2016 17:55
стохастик в отдельном окне и с вручную сжатым масштабом по вертикальной оси, чтобы стохастик превратился в линию. Нормально получается?
# Peligrin 11.02.2016 18:22
с масштабирование м интересная мысль)),

пока самый лучший вид получился , если взять просто
"График % изменения закрытия" - и вытянуть по оси в одну линию, часы никуда не скачут, и хорошо смотрятся
# Peligrin 11.02.2016 20:50
интересная идея с цифрами обратного отсчета!!!
секундная цифра и кружок близко друг возле друга - и сливаются , по возможности отодвинуть бы их хоть на немного друг от друга
(хотя это у меня может к концу дня уже в глазах плывет ))

# admin 11.02.2016 21:14
Цвет кружочка поярче подберите и все перестанет сливаться :P
# konst 13.05.2016 20:57
Доброго вечера! Подскажите-
1.При распаковке демо индикатора времени файлам cr надо добавлять luac и ini?Положить их в любую папку quik?
2.Файл staticvar.dll и w32.dll переместить в папку quik созданную самому или в любую из существующих?
3.Можно файлы пунктов1 и 2 сложить в одну папку?Спасибо.
# admin 14.05.2016 16:12
Здравствуйте.

В статье подробно описана процедура установки. Мне кажется, что она приведена достаточно подробно и точно. Возможно, мне это лишь кажется...

Первый вопрос я не могу понять. Все слова знаю, но вместе их сложить я не смог. Папка quik это папка, в которой находится сам терминал quik.

Dll файлы должны находиться в папке терминала quik. То есть в той же папке, в которой находится файл info.exe
# konst 14.05.2016 20:53
Доброго вечера,всё подробно расписано,а вопросы у меня уточнились,благ одаря Вам.
1.В папке терминала quik множество еще папок(ВТБ).Там есть папка под названием info_ini . В неё можно положить Dll файлы?
2.При распаковке у меня указывается со значком интернета файлы-- Candle_Rest и просто-сr. Cо значком шестеренки-пара менты конфигурации-та кже просто-сr.Надо ли два этих cr переименовывать в cr.luac и cr.ini ? Спасибо.
# admin 14.05.2016 22:06
1. Положить надо в папку терминала Квик. Если бы нужно или можно было бы положить в другую папку, подпапку, диск, карман, чулан - это было бы написано в явном виде.

2. Переименовывать не нужно. Эти файлы уже имеют необходимые расширения. Ваша windows скрывает расширения от вас. Режим сокрытия расширений зарегистрирован ных типов файлов можно и желательно отключить - вам будет удобнее.
# konst 15.05.2016 11:53
Спасибо за совет.
# Aleksey174 17.10.2016 10:06
Сколько стоит полная версия индикатора? И как оплатить?
# admin 17.10.2016 10:26
Здравствуйте.

В статье есть номер карты.
# Aleksey174 17.10.2016 11:30
А сколько оплатить то?
# admin 17.10.2016 11:55
Решайте сами. Ту сумму, которую вы считаете справедливой.
# Кos 22.02.2017 17:22
Такой момент может кому пригодиться.
Файлы cr.luac и cr.ini надо также положить в папку LuaIndicators. Когда эти файлы были в другой произвольной папке то часики на графике не отображались, хотя скрипт запускался и в списке индикаторов находился, но часы на графике упорно не показывались.
# Snider 06.04.2017 20:45
Оплатил xxx руб. Как снять ограничение по времени?
# admin 06.04.2017 21:04
Пароль у вас в почте
# Snider 06.04.2017 22:00
Спасибо.
# Snider 07.04.2017 18:49
День прошел, пароля нет. Прошу скинуть повторно.
# admin 07.04.2017 20:30
Проверьте папку спам. Если не найдете - пишите мне почтой или в скайпе
# Snider 09.04.2017 15:46
Да, все нашел. Спасибо.
# subspear 26.04.2017 20:29
Оплатил Квитанция: 1493223836331
# Roman-gor 16.02.2018 15:14
Еще можно оплатить полную версию?
# admin 16.02.2018 15:27
Даже необходимо! )
# sapojnik59 04.07.2018 11:03
Здраствуйте,
оплатил за ИНДИКАТОР ВРЕМЕНИ ДО ОКОНЧАНИЯ СВЕЧИ, с карты .... 0350,
Номер документа: 911314
взнос на постройку зимнего приюта для майских жуков.
# djovanni 28.01.2019 09:43
Еще актуально оплатить за полную версию?
# admin 28.01.2019 10:15
На этом сайте все актуально. )))

В той или иной степени )))
# Asd 25.03.2019 15:06
Оплатил полную версию,док.5251 78 карта ....3976. Заранее спасибо.
# tokser 23.05.2019 07:05
Амин привет! Полную версию индикатора получить ещё актуально? со взносом на домик:)
# admin 23.05.2019 08:03
В мире нет ничего более актуального чем взнос на домик!)
# tokser 23.05.2019 12:19
что-то не получается установить индикатор, ругается, такой индификатор уже существует
# admin 23.05.2019 23:05
Ругается не индикатор. Ругается терминал. Если он говорит, что такой идентификатор уже существует, значит вы пытаетесь друг разным графика дать один и тот же идентификатор.
# Eugene Bright 18.10.2019 18:36
Здравствуйте!
Проработал все версии Руководства по QLUA и не нашел, как можно передать в скрипт бота (не индикатора) тайм-фрейм ценового графика.
Есть версия получать ТФ как разницу времени двух любых идущих по порядку свечек:

function GetTimeFrameInSec(TickerName)
-- Берем время свечи из графика. CreateDataSourc e пока не используем, т.к. при необходимости модификации
-- алгоритма, хотим легко добавлять индикаторы.
-- Плюс меньше зависим от коннекта - графики всегда с нами.
local NL=getNumCandles(TickerName.."_Price")
local tL2, nL2, lL2 = getCandlesByInd ex (TickerName.."_ Price", 0, NL-1, 1) -- last свеча
local tL1, nL1, lL1 = getCandlesByInd ex (TickerName.."_ Price", 0, NL-2, 1) -- last свеча

local aTimeFrameInSec = (tL2[0].datetim e.hour - tL1[0].datetime .hour)*3600 + (tL2[0].datetim e.min - tL1[0].datetime .min)*60 + (tL2[0].datetim e.sec - tL1[0].datetime.sec)

return aTimeFrameInSec
end

Но не нравится тот момент, что при изменении фрейма в терминале для "усвоения" нового фрейма скриптом, нужно перезапускать скрипт вручную.
Попытки автоматизироват ь процесс обновления внутри цикла while run=true do ...(здесь обращение к функции определения ТФ)... end
приводят к самоблокировке скрипта при переходе с длинного ТФ на короткий.

Есть ли идеи?
Спасибо.
# admin 18.10.2019 18:54
Это не поможет?

www.bot4sale.ru/.../419-how-to-know-timeframe.html

Ну а отслеживать изменение таймфрейма графика пользователем - это вторая задача. Можно перед каждым обращением к этому графику из скрипта проверять количество свечей на нем. Если оно отличается от предыдущего - вычислять таймфрейм заново.
# Eugene Bright 18.10.2019 19:36
Цитирую admin:
Это не поможет?

www.bot4sale.ru/.../419-how-to-know-timeframe.html

Ну а отслеживать изменение таймфрейма графика пользователем - это вторая задача. Можно перед каждым обращением к этому графику из скрипта проверять количество свечей на нем. Если оно отличается от предыдущего - вычислять таймфрейм заново.

===================================

Спасибо, но, по сути, это то же решение, что и приведенное мной.
Проблема в другом. Видимо, я не очень точно описал проблему.
Вот посмотрите на код, приведенный по Вашей ссылке: там тоже ТФ считается как разность смежных свечек.
Но для того, чтобы вызвать функцию, считающую этот параметр, нужно уже "жить" внутри этого ТФ. Если Вы только что "жили" в ТФ1 = 1 час (согласованный с ним sleep (ТФ1)) и вдруг поменяли на графике на ТФ2=5 минут, то скрипт узнает об этом в тот момент, когда снова обратится к sleep (ТФ2).
Но произойдет факт обновления только через 1 час! А график целый час уже "крутится" в ТФ=5 минут.
Обратная задача (переход с короткого ТФ на длинный) - безболезненный и автоматический (с использованием либо Вашего либо моего вариантов функций).

Вот в чем дело.
# admin 18.10.2019 22:35
Я предложил вам перед каждым чтении данных с графика проверять его таймфрейм. Если он изменился - то скрипт немедленно производит нужные действия
# Eugene Bright 18.10.2019 23:11
Скрипт производит нужные действия немедленно. как только "проснется" после очередного sleep().
И если этот sleep() спал до сих пор 1 час, а фрейм графика поменяли на 5 минут, то об этом изменении скрипт узнает сам только по истечении своего "старого" 1 часа. А потом - да, немедленно перейдет на новый период sleep(), который мы установили в размере 5 минут уже 1 час назад. А что делает скрипт в это время 1 час - 5 минут = 55 минут? Торгует?)))
# admin 19.10.2019 12:23
Он спит и ничего не делает.
# Eugene Bright 19.10.2019 14:06
Именно, спит.
Работать нужно, а он дрыхнет бессовестно)))
# Eugene Bright 18.10.2019 21:15
Другой вариант.

Тайм-фрейм вычисляется в одном скрипте (назовем его Служебный - service.lua), который вызывается путем dofile() из второго (назовем его Главный - souvereign.lua) , основного скрипта, использующего результат расчета ТФ в первом скрипте?
Служебный скрипт
(service.lua)

function main()
while run==true do
...
TF = (функция расчета ТФ по графику)
...
sleep (1 минута)
end
end

Главный скрипт:
souvereign.lua


dofile(service.lua)
...
function main()
while run==true do
...
...
...
sleep (TF)
end
end

Создаем 2 независимых потока.

Что думаете?

ЗЫ: пока писал подумал, что и это не совсем полное решение. Нужен третий скрипт, который отслеживает изменение TF в скрипте service.lua.
Если TF(2) не равен предыдущему своему значению TF(1), то нужно перезапустить скрипт souvereign.lua путем вызова его через тот же оператор
dofile(souvereign.lua).
Так лучше?

Остается только понять, что означает "перезапустить" скрипт из-под другого скрипта?
Ведь чтобы "пере-"запустит ь, нужно сначала просто запустить, потом "закрыть" (прекратить его работу, выгрузить), а после - снова вызвать к жизни (загрузить, запустить и т.п.)...
# admin 18.10.2019 22:37
Вы что то совсем закопались.

Проще всего заменить стандартный индикатор на самописный, который делает то же самое и при начале пересчета создает сигнал для скрипта.
# Eugene Bright 18.10.2019 23:05
Вы не поняли: мы можем создавать любые сигналы, но скрипт, у которого "жизнь" зависит от команды sleep(), не узнает об этом сигнале, пока не проснется в следующей "петле". А спать он будет согласно с
предыдущему фрейму. Значит. нужна сторонняя сила, которая "пнёт" скрипт. Сторонний модуль.

Есть одно решение у Роберту Иерузалимски в разделе "Модули и пакеты" (стр. 190 его "программирован ия на ЛУА":

Чтобы заставить r e q u i r e загрузить один и тот же модуль дважды, мы
просто стираем запись о нем из p a c k a g e . l o a d e d:

p a c k a g e . l o a d e d . = n i l

В следующий раз, когда понадобится этот модуль, r e q u i r e проделает
всю необходимую работу еще раз.

Так что решение нетривиальное, но мне, пока я рассуждал с Вами, стала абсолютно понятна логика. Буду искать реализацию автоматической синхронизации фрейма графика и параметра для sleep().
# admin 19.10.2019 12:17
У вас время sleep равно текущему таймфрейму графика?

Если да, то что мешает сделать так

for I=1, тайм-аут/100 do
if естьсигнал от индикатора() then
ДелаемЧтото()
break
end
sleep(100)
end

Заменяем один sleep() на кучу последовательны х мелких, между которыми проверяем сигнал

Если и такой вариант вас не устраивает, то лучше идти на форумы и пытаться там объяснить свою проблему


В любом случае вы погружаетесь в немыслимые глубины в поисках сложного решения простой проблемы. Хотя простые и понятные решения плавают на поверхности.
# Eugene Bright 19.10.2019 14:04
Цитирую admin:
У вас время sleep равно текущему таймфрейму графика?

Если да, то что мешает сделать так

for I=1, тайм-аут/100 do
if естьсигнал от индикатора() then
ДелаемЧтото()
break
end
sleep(100)
end

Заменяем один sleep() на кучу последовательных мелких, между которыми проверяем сигнал

Если и такой вариант вас не устраивает, то лучше идти на форумы и пытаться там объяснить свою проблему


В любом случае вы погружаетесь в немыслимые глубины в поисках сложного решения простой проблемы. Хотя простые и понятные решения плавают на поверхности.


Спасибо, что послали...

Недостаточно прав для комментирования