купил как то индикатор Индикатор скользящей средней на минутках по часовому таймфрейму для QUIK на Lua • Торговые роботы и индикаторы все вро де нормально но есть косяк не со стороны автора а со стороны квика, при добавлении открытого интереса - этот долбанный интерес зачем то лезет в график и ломает данные индикатора, сам автор пытался исправить но не смог - поскольку сказал что это сам квик все ломает - хотя обычный мувинг не ломается - скрины прилагаю - справа график без OI , слева с OI ПОЛМАННОСТЬ ВИДНО - Я ТЕМУ продублировал квиковцы исправьте пожалуйста что бы открытый интерес не вмешивался в график - какакого рожна он туда лезет на до только чтоб данные в подвале окна индикатора обновлялись
Сомневаюсь, что виноват QUIK. Но без текста индикатора сложно сказать где ошибка автора. Правильно понимаю, что Вы хотите на графике с интервалом 1 час отобразить мувинг с интервалом 1 минута? Потом добавляете график OI с интервалом 1 минута на этот же график с интервалом 1 час?
спасибо за ответ - да это банальный индикатор MFT Moving который на младших периодах показывает себя дискретно ,для мт5 такого добра полно и вот он нормально работает пока нет индикатора открытого интереса, как только ставлю OI ВСЕ ЛОМАЕТСЯ
все разрабы не дают код индикатора даже если я плачу деньги - исправьте или напишите такой индюк который не ломает OI И Я ЗАПЛОЧУ БАБКИ только дайте рабочий вариант и открытый код
вы напишите этот индюк протестируйте его что бы OI ЕГО НЕ ломал и вышлите мне на почту koledin6969@mail.ru я посмотрю и обещаю вам заплатить 1000руб - в оригинале индюк стоит 1500руб - если 1000руб не то дам 1500руб только если индюк не ломается и нужен открытый код-)
Roman Koledin написал: вы напишите этот индюк протестируйте его что бы OI ЕГО НЕ ломал и вышлите мне на почту koledin6969@mail.ru я посмотрю и обещаю вам заплатить 1000руб - в оригинале индюк стоит 1500руб - если 1000руб не то дам 1500руб только если индюк не ломается и нужен открытый код-)
все по чесноку обманывать не буду - только чтоб индикатор работал-)
nikolz написал: Вот результат тестового скрипта. Индикатор может быть любой из встроенных в QUIK.
вы поймите - что пока нет торгов и данные не идут ВСЕ будет адекватно показываться - как только начнет поступать информация - то есть данные с биржи ВОТ тогда все начнет глючить - и самое интересное что такого индюка нет ни где РАБОЧЕГО - и на deepseek я пытался писать - поскольку я дилетант - видимо только ЧЕЛОВЕК сможет написать рабочий индикатор - но где такого найти, за адекватную цену - одни пишут - но не работает - и кода не дают - есла Вы напишите это будет прекрасно-)
nikolz написал: Вот результат тестового скрипта. Индикатор может быть любой из встроенных в QUIK.
вы поймите - что пока нет торгов и данные не идут ВСЕ будет адекватно показываться - как только начнет поступать информация - то есть данные с биржи ВОТ тогда все начнет глючить - и самое интересное что такого индюка нет ни где РАБОЧЕГО - и на deepseek я пытался писать - поскольку я дилетант - видимо только ЧЕЛОВЕК сможет написать рабочий индикатор - но где такого найти, за адекватную цену - одни пишут - но не работает - и кода не дают - есла Вы напишите это будет прекрасно-)
и еще если не получится написать - то есть альтернатива - написать индикатор OI КОТОРЫЙ БЕРЕТ РАННЫЕ с обезличенных сделок Скрипт lua читающий таблицу обезличенных сделок.можно как то совместить этот скрипт и индикатор самопал OI
А ВООБЩЕ им квиковцам по имхо пофиг на все - люди мучаются пишут индюки - их просят Multiframe MA — форум QUIK сколько времени прошло можно же такое написать - даже в банальном мт 5 это уже есть
напишите мне на почту koledin6969@mail.ru - поскольку как пример мой сбивает - дайте индюк как пример с закрытым кодом я проверю - если работает в режиме торгов - вам оплачу работу - только пишите на почту
Проблема НЕ в индикаторе, который рисует линию с графика бОльшего таймфрейма. Вы неправильно поняли Романа.
Индикатору. у которого проблема не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. А сама проблема в функции SetValue, которая перерисовывает крайний час (с его начала) в текущем времени при любом изменении текущей цены, т.к. какого .... при обновлении ОИ видимо идет пересчет всего графика и подставляется номер бара начала часа из прошлого и дальше не обновляется. В коде ошибки нет, там все прозрачно, час сменился - номер бара запомнился. При нажатии ПРИМЕНИТЬ в настройках индикатора, все сразу становится нормально.
Проблема НЕ в индикаторе, который рисует линию с графика бОльшего таймфрейма. Вы неправильно поняли Романа.
Индикатору. у которого проблема не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. А сама проблема в функции SetValue, которая перерисовывает крайний час (с его начала) в текущем времени при любом изменении текущей цены, т.к. какого .... при обновлении ОИ видимо идет пересчет всего графика и подставляется номер бара начала часа из прошлого и дальше не обновляется. В коде ошибки нет, там все прозрачно, час сменился - номер бара запомнился. При нажатии ПРИМЕНИТЬ в настройках индикатора, все сразу становится нормально.
Проблема НЕ в индикаторе, который рисует линию с графика бОльшего таймфрейма. Вы неправильно поняли Романа.
Индикатору. у которого проблема не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. А сама проблема в функции SetValue, которая перерисовывает крайний час (с его начала) в текущем времени при любом изменении текущей цены, т.к. какого .... при обновлении ОИ видимо идет пересчет всего графика и подставляется номер бара начала часа из прошлого и дальше не обновляется. В коде ошибки нет, там все прозрачно, час сменился - номер бара запомнился. При нажатии ПРИМЕНИТЬ в настройках индикатора, все сразу становится нормально.
Я все понzл. Написал индикатор ровно такой же, которому не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. и ничего не ломает. Свой скрипт отправил Роману.
Проблема НЕ в индикаторе, который рисует линию с графика бОльшего таймфрейма. Вы неправильно поняли Романа.
Индикатору. у которого проблема не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. А сама проблема в функции SetValue, которая перерисовывает крайний час (с его начала) в текущем времени при любом изменении текущей цены, т.к. какого .... при обновлении ОИ видимо идет пересчет всего графика и подставляется номер бара начала часа из прошлого и дальше не обновляется. В коде ошибки нет, там все прозрачно, час сменился - номер бара запомнился. При нажатии ПРИМЕНИТЬ в настройках индикатора, все сразу становится нормально.
Я все понzл. Написал индикатор ровно такой же, которому не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. и ничего не ломает. Свой скрипт отправил Роману.
Скрипт ничего не ломает, это ОИ ломает нумерацию баров в функции OnCalculate и это не лечится. у меня такие же красивые картинки, как у вас, достаточно нажать 1 раз ПРИМЕНИТЬ.
Вот картинки с номерами баров ДО ПРИМЕНИТЬ и ПОСЛЕ ПРИМЕНИТЬ. Там где 2 числа - это день сменился на графике.
Т.е. в данном примере OnCalculate вызвался на баре 3194, а потом сразу на 3449
Да и проявляется это не сразу, а при смене Интервала на графике. Во всяком случае я это смог стабильно воспроизвести таким способом (менял интервал на 30 минут и на 1 час).
Nikolay написал: Ну так перейдите на индексацию временем в виде числа, время-то не убегает.
Если OnCalculate в принципе вызывается через 250 баров, то какая разница, как индексировать бар.
Вот элементарный тестовый код и картинки по нему (сам график, который должен быть в виде прямой линии и номера баров):
Код
Settings=
{
Name = "*Example",
line =
{
{
Name = "Ex_line",
Color = RGB(96, 96, 255),
Type = TYPE_LINE,
Width = 2
}
}
}
function OnCalc()
local ind_l = 0
return function(ind,FSettings)
if ind<=1 then
ind_l=0
end
if ind_l<ind then
ind_l=ind
message (tostring(ind))
end
return ind_l
end
end
function Init()
OC = OnCalc()
return 1
end
function OnCalculate(index)
return OC(index,Settings)
end
Проблема НЕ в индикаторе, который рисует линию с графика бОльшего таймфрейма. Вы неправильно поняли Романа.
Индикатору. у которого проблема не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. А сама проблема в функции SetValue, которая перерисовывает крайний час (с его начала) в текущем времени при любом изменении текущей цены, т.к. какого .... при обновлении ОИ видимо идет пересчет всего графика и подставляется номер бара начала часа из прошлого и дальше не обновляется. В коде ошибки нет, там все прозрачно, час сменился - номер бара запомнился. При нажатии ПРИМЕНИТЬ в настройках индикатора, все сразу становится нормально.
Я все понzл. Написал индикатор ровно такой же, которому не нужен другой график, он на текущем ТФ рассчитывает бары бОльшего ТФ и по ним считает МА. и ничего не ломает. Свой скрипт отправил Роману.
Скрипт ничего не ломает, это ОИ ломает нумерацию баров в функции OnCalculate и это не лечится. у меня такие же красивые картинки, как у вас, достаточно нажать 1 раз ПРИМЕНИТЬ.
Вот картинки с номерами баров ДО ПРИМЕНИТЬ и ПОСЛЕ ПРИМЕНИТЬ. Там где 2 числа - это день сменился на графике.
Т.е. в данном примере OnCalculate вызвался на баре 3194, а потом сразу на 3449
Есл у вас скрипт не ломается то в чем проблема. У Романа ваш скрипт не работает когда он добавляет график открытого интереса. ------------------------ Я ничего не понял из вашего рассказа про нумерацию. У меня такой проблемы нет и не было. ------------------- Так как проблема лишь у Вас то причина не в КВИКЕ, а в Вашем написании скрипта.
Перечитал документацию. Нигде не увидел обещания вызова OnCalculate() в индикаторе в каком-то определенном порядке. Ну то есть в каком бы порядке вызовы не шли, это не является багом - слева направо, справа налево, да хоть вообще в случайном порядке.
Александр М, Вы продали Роману не работающий скрипт. Вместо того, чтобы переписать его, Вы переводите стрелки на QUIK. -------------------- Я написал Роману скрипт, который делает ровно тоже самое, что и Ваш и никуда не вываливается. ------------------------ Из беседы с романом предположу, что Вы еще и ошибаетесь в самом алгоритме построения индикаторов с большим периодом на меньших интервалах.
nikolz написал: Александр М , Если написать не можете, не важно по какой причине, верните человеку деньги и признайтесь, что не умеете.
Я выше представил полный минимальный код, который воспроизводит проблему с барами, с картинками результата. Зачем тут спорить, если есть открытый код и картинки, причем тут конечный скрипт? Если вы так уверены в своем скрипте, то выложите или пришлите, я на нем проверю, воспроизводится проблема или нет.
paluke написал: Перечитал документацию. Нигде не увидел обещания вызова OnCalculate() в индикаторе в каком-то определенном порядке. Ну то есть в каком бы порядке вызовы не шли, это не является багом - слева направо, справа налево, да хоть вообще в случайном порядке.
Если он будет вызываться в случайном порядке, то как вы вообще индикаторы с накоплением считать будете каждый тик? И тогда бы пересчет после ПРИМЕНИТЬ не исправлял ситуацию совершенно.
nikolz написал: Александр М , Если написать не можете, не важно по какой причине, верните человеку деньги и признайтесь, что не умеете.
Я выше представил полный минимальный код, который воспроизводит проблему с барами, с картинками результата. Зачем тут спорить, если есть открытый код и картинки, причем тут конечный скрипт? Если вы так уверены в своем скрипте, то выложите или пришлите, я на нем проверю, воспроизводится проблема или нет.
Я вообще-то про скрипт, который вы продали Роману и который не работает. ----------------------- Бары это или нет из Вашего теста не ясно, так как нет кода скрипта. ---------------------- Сделайте Роману работающий скрипт.
nikolz написал: Александр М , Если написать не можете, не важно по какой причине, верните человеку деньги и признайтесь, что не умеете.
Я выше представил полный минимальный код, который воспроизводит проблему с барами, с картинками результата. Зачем тут спорить, если есть открытый код и картинки, причем тут конечный скрипт? Если вы так уверены в своем скрипте, то выложите или пришлите, я на нем проверю, воспроизводится проблема или нет.
Я вообще-то про скрипт, который вы продали Роману и который не работает. ----------------------- Бары это или нет из Вашего теста не ясно, так как нет кода скрипта. ---------------------- Сделайте Роману работающий скрипт.
Вы либо читайте мои ответы полностью, либо не пишите замечания. Я написал - выше полный код, который воспроизводит ошибку и у меня и у Романа и у других. Вы можете запустить его у себя. Если у вас проблема НЕ воспроизводится по данному скрипту, тогда с чего вы взяли, что сделали ему рабочий скрипт? Или напишите, чем ошибка в этих 30 строках и куда делись бары. Уж такой простой код любой может прочесть, для этого не надо использовать ИИ.
paluke написал: Я бы вообще предполагал, что при прокрутке графика могут прилетать вызовы для тех баров, которые были не видны раньше.
Вот как раз в списке баров нет пропущенных номеров, хотя OnCalculate обязан пройтись по всем барам, ведь значения по ним были и следуя Вашей логики, они должны были быть раньше, но их не было и до 3194 бара нумерация идет строго последовательно, как она же идет, если насильно пересчитать индикатор (нажать на ПРИМЕНИТЬ) но уже полностью до 3449. Т.е. 250 бара просто пропали и по ним ни разу не вызывался скрипт.
Сразу пишу, изменение кода
Код
if ind_l<ind then
на
Код
if ind_l~=ind then
ничего не меняет и забытых баров не показывает.
Бары идут строго по нарастающей, только в конце теряются около 250 баров и идет прыжок сразу на крайний текущий
Еще раз - последовательные вызовы onCalculate() никто не гарантировал. Вызов не по порядку - это не ошибка qiuk. Ошибка - рассчитывать на поведение, которого не обещали.
paluke написал: Еще раз - последовательные вызовы onCalculate() никто не гарантировал. Вызов не по порядку - это не ошибка qiuk. Ошибка - рассчитывать на поведение, которого не обещали.
Я же специально для вас написал, что если бы вызовы были НЕ по порядку, то в результате код бы рисовал кривую линию или с всплесками, но вызов обязан обойти все бары. Тут же баров нет вообще - ни в начале, ни в середине. ни в конце, по ним вообще не было вызовов.