Здравствуйте, Данный архив содержит примеры функций расчета индикаторов терминала QUIK. Скачать можно по ссылке:
Пользователь
Сообщений: Регистрация: 02.12.2015
Ростовская обл., г. Батайск
02.12.2015 22:34:05
Спасибо! Пригодится.
Пользователь
Сообщений: Регистрация: 24.11.2016
24.11.2016 09:23:11
Сергей, спасибо :)
Пользователь
Сообщений: Регистрация: 23.01.2015
19.04.2017 14:02:20
Выполнено обновление индикаторов. Ссылка остается прежней:
Все индикаторы переписаны с учетом проверок на возможные пропуски в данных. Выполнен ряд мер по оптимизации. Исправлен ряд ошибок в расчетах некоторых из индикаторов.
Пользователь
Сообщений: Регистрация: 03.03.2015
26.07.2017 02:15:14
Огромное спасибо!! В текстовом файле указан индикатор "TR" --True Range ("TR") его в папке нет ,жаль.
Пользователь
Сообщений: Регистрация: 23.01.2015
26.07.2017 04:39:52
echaki, В архиве только аналоги индикаторов которые есть в QUIK. В QUIK нет индикатора True Range, по этой причине он был удален из архива. А в readme остался по ошибке.
Если Вам нужен этот индикатор, Вы можете взять функцию для его расчета из индикатора ATR
Пользователь
Сообщений: Регистрация: 14.02.2015
21.11.2017 14:35:41
Скажите, пожалуйста. Могу ли я как-нибудь использовать два по-разному настроенных уровня Фибоначчи? Т.е. как в Квике по умолчанию + перенастроить и сохранить другие параметры. И использовать одновременно?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
22.11.2017 07:23:08
Цитата
Alex Green написал: Скажите, пожалуйста. Могу ли я как-нибудь использовать два по-разному настроенных уровня Фибоначчи? Т.е. как в Квике по умолчанию + перенастроить и сохранить другие параметры. И использовать одновременно?
Добрый день.
Да, вы можете настроить еще один уровень Фибоначчи, сохранит настройки в шаблон и использоваться Фибаначчи по умолчанию и еще один с настройками из шаблона.
Пользователь
Сообщений: Регистрация: 14.02.2015
22.11.2017 13:58:52
Да, Вас понял. Сделал так. Скажите, а как восстановить Фибоначчи по умолчанию? А то не помню параметры.
QUIK clients support
Сообщений: Регистрация: 27.01.2015
22.11.2017 14:19:00
Цитата
Alex Green написал: Да, Вас понял. Сделал так. Скажите, а как восстановить Фибоначчи по умолчанию? А то не помню параметры.
Добавьте еще одни уровни, зайдите в их настройки и примените шаблон "По умолчанию", настройки сбросятся.
Пользователь
Сообщений: Регистрация: 14.02.2015
22.11.2017 14:39:12
А где добавить еще уровни в Фибоначчи? После этого дает только сохранение, а шаблон по умолчанию не вижу?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
23.11.2017 08:20:56
Цитата
Alex Green написал: А где добавить еще уровни в Фибоначчи? После этого дает только сохранение, а шаблон по умолчанию не вижу?
Добрый день.
Возможность добавлять тренды в шаблоны реализована в версии рабочего места 7.14 и выше. У Вас судя по скриншоту версия ниже. Т.е необходимо обновиться. Пункт меню Система - Получение файлов.
Пользователь
Сообщений: Регистрация: 14.02.2015
23.11.2017 19:36:00
Добрый вечер. Спасибо. Обновил версию и всё увидел и нашёл.
Пользователь
Сообщений: Регистрация: 03.02.2018
03.02.2018 20:54:26
а как настроить правильно и установить
Пользователь
Сообщений: Регистрация: 16.03.2018
16.03.2018 13:22:19
Здравствуйте Sergey. Подскажите пожалуйста для чего нужны эти индикаторы, если в Quick они и так есть? Изучать lua начал недавно, поэтому не сочтите мой вопрос странным. Спасибо
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 13:25:41
Alexandr, Для того чтобы не было вопросов, как написать индикатор в lua. Зачем люди их пишут в Lua? Уже не к нам вопрос.
Пользователь
Сообщений: Регистрация: 23.01.2015
16.03.2018 13:26:23
Цитата
петя написал: а как настроить правильно и установить
В архиве есть reamde файл с инструкцией.
Пользователь
Сообщений: Регистрация: 23.01.2015
26.07.2018 10:04:13
Новая
Пользователь
Сообщений: Регистрация: 10.07.2018
27.07.2018 16:28:36
Спасибо!
Пользователь
Сообщений: Регистрация: 30.07.2018
30.07.2018 15:09:40
Здравствуйте, скачала индикаторы, установила. MFI (Bill Williams Market Facilitation Index)] выдает все столбцы красные, корректное окрашивание происходит только после того как захожу в редактирование настроек графика и нажимаю Применить, только тогда индикаторы перекрашиваются. Потом опять идут все красные, до тех пор пока не повторю нажатие "применить"
Пользователь
Сообщений: Регистрация: 23.01.2015
30.07.2018 18:04:41
Алена, ошибка найдена и исправлена. Архив на сайте обновим завтра. Пока можно взять исправленный код индикатора ниже
Скрытый текст
Код
Settings = {
Name = "*BWMFI (Bill Williams Market Facilitation Index)",
line = {{
Name = "Horizontal line",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{
Width = 3,
Name = "BWMFI_Green",
Type = TYPE_HISTOGRAM,
Color = RGB(0, 206, 0)
},
{
Width = 3,
Name = "BWMFI_Fade",
Type = TYPE_HISTOGRAM,
Color = RGB(128, 64, 0)
},
{
Width = 3,
Name = "BWMFI_Fake",
Type = TYPE_HISTOGRAM,
Color = RGB(0, 255, 255)
},
{
Width = 3,
Name = "BWMFI_Squat",
Type = TYPE_HISTOGRAM,
Color = RGB(255, 0, 255)
}
},
Round = "off",
Multiply = 1,
Horizontal_line="0"
}
function Init()
func = BWMFI()
return #Settings.line
end
function OnCalculate(Index)
local Out = ConvertValue(Settings, func(Index, Settings))
local HL = tonumber(Settings.Horizontal_line)
if Out then
local prev = GetValue(Index-1, 2) or GetValue(Index-1, 3) or GetValue(Index-1, 4) or GetValue(Index-1, 5) or 0
local prev_v = V(Index-1) or 0
if (Out > prev) and (V(Index) > prev_v) then
return HL,Out,nil,nil,nil
elseif (Out <= prev) and (V(Index) <= prev_v) then
return HL,nil,Out,nil,nil
elseif (Out > prev) and (V(Index) <= prev_v) then
return HL,nil,nil,Out,nil
elseif (Out <= prev) and (V(Index) > prev_v) then
return HL,nil,nil,nil,Out
else
return HL,nil,nil,nil,nil
end
else
return HL,nil,nil,nil,nil
end
end
function BWMFI() --Bill Williams Market Facilitation I ("BWMFI")
local it = {p=0, l=0}
return function (I, Fsettings, ds)
if I == 1 then
it = {p=0, l=0}
end
if CandleExist(I,ds) then
if I~=it.p then it={p=I, l=it.l+1} end
return GetValueEX(it.p, DIFFERENCE, ds) / GetValueEX(it.p, VOLUME, ds)
end
return nil
end
end
SMA,MMA,EMA,WMA,SMMA,VMA = "SMA","MMA","EMA","WMA","SMMA","VMA"
OPEN,HIGH,LOW,CLOSE,VOLUME,MEDIAN,TYPICAL,WEIGHTED,DIFFERENCE,ANY = "O","H","L","C","V","M","T","W","D","A"
function CandleExist(I,ds)
return (type(C)=="function" and C(I)~=nil) or
(type(ds)=="table" and (ds[I]~=nil or (type(ds.Size)=="function" and (I>0) and (I<=ds:Size()))))
end
function Squeeze(I,P)
return math.fmod(I-1,P+1)
end
function ConvertValue(T,...)
local function r(V, R)
if R and string.upper(R)== "ON" then R=0 end
if V and tonumber(R) then
if V >= 0 then return math.floor(V * 10^R + 0.5) / 10^R
else return math.ceil(V * 10^R - 0.5) / 10^R end
else return V end
end
if arg.n > 0 then
for i = 1, arg.n do
arg[i]=arg[i] and r(arg[i] * ((T and T.Multiply) or 1), (T and T.Round) or "off")
end
return unpack(arg)
else return nil end
end
function GetValueEX(I,VT,ds)
VT=(VT and string.upper(string.sub(VT,1,1))) or ANY
if VT == OPEN then --Open
return (O and O(I)) or (ds and ds:O(I))
elseif VT == HIGH then --High
return (H and H(I)) or (ds and ds:H(I))
elseif VT == LOW then --Low
return (L and L(I)) or (ds and ds:L(I))
elseif VT == CLOSE then --Close
return (C and C(I)) or (ds and ds:C(I))
elseif VT == VOLUME then --Volume
return (V and V(I)) or (ds and ds:V(I))
elseif VT == MEDIAN then --Median
return ((GetValueEX(I,HIGH,ds) + GetValueEX(I,LOW,ds)) / 2)
elseif VT == TYPICAL then --Typical
return ((GetValueEX(I,MEDIAN,ds) * 2 + GetValueEX(I,CLOSE,ds))/3)
elseif VT == WEIGHTED then --Weighted
return ((GetValueEX(I,TYPICAL,ds) * 3 + GetValueEX(I,OPEN,ds))/4)
elseif VT == DIFFERENCE then --Difference
return (GetValueEX(I,HIGH,ds) - GetValueEX(I,LOW,ds))
else --Any
return (ds and ds[I])
end
return nil
end
Сергей, подскажите пожалуйста, в коде индикаторов что-то поменялось или поменялась только ссылка?
Пользователь
Сообщений: Регистрация: 23.01.2015
30.07.2018 20:49:25
Let_it_go, был исправлен ряд ошибок найденных клиентами. подробного списка к сожалению нет.
Пользователь
Сообщений: Регистрация: 23.01.2015
31.07.2018 13:09:52
Новая
Пользователь
Сообщений: Регистрация: 13.09.2018
13.09.2018 14:08:41
Добрый день, а Вы можете написать индикаторы Laguerre на языке lua? Или подскажите где взять?))))
Пользователь
Сообщений: Регистрация: 23.01.2015
13.09.2018 14:13:13
Цитата
Сергей написал: Добрый день, а Вы можете написать индикаторы Laguerre на языке lua? Или подскажите где взять?))))
Здравствуйте, К сожалению нет т.к. это не является нашей задачей. Вы можете попросить написать нужный Вам индикатор у других участников форума, создав для этого ветку в разделе про Lua.
Пользователь
Сообщений: Регистрация: 19.12.2018
19.12.2018 16:54:17
Добрый день! Использовал функцию расчета индикатора из размещенной здесь библиотеки. В частности MA. В качестве исходных данных использую таблицу полученную с помощью CreateDataSource. Пересчитал индикатор для всех свечей как в описании. Сверяю полученные данные с графиком нарисованным с помощью этой-же библиотеки, совпадает только последняя свеча, все остальные предыдущие интервалы достаточно сильно отличаются. Что я делаю не так?
Пользователь
Сообщений: Регистрация: 17.12.2018
25.12.2018 15:58:15
Привет ребята. Как сделать среднюю линию на дополнительном индикаторе? Например на Volume?
Пользователь
Сообщений: Регистрация: 23.01.2015
27.02.2019 10:50:09
новая в индикаторе ADX было лишнее округление, что приводило к искажению результатов расчета на инструментах с дробными ценами
Пользователь
Сообщений: Регистрация: 13.03.2016
24.05.2019 16:47:09
Делал свою реализацию RSI так что бы она в точности совпадала с реализацией в quik.
Скачал последний файл с примерами реализаций индикаторов.
Посмотрел.
Очень сложный, не читабельный код! Разбираться в алгоритме индикатора по такому коду чрезвычайно сложно.
Комментарии в тексте кода очень бы помогли, а комментариев в коде нет.
Разобрался в вашем коде. Написал свою реализацию RSI намного проще.
Проверил. Результаты RSI она выдает такие же как у вас.
Вот моя реализация RSI.
Код
Settings = {
Name = "rsi",
line = {{
Name = "Horizontal line (top)",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{Name = "Horizontal line (bottom)",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{Name = "RSI2",
Type = TYPE_LINE,
Color = RGB(221, 44, 44)
}
},
Horizontal_line="20"
}
function Init()
smoothUp={} --в этом массиве храним сглаженные значения периодов роста
smoothDown={}--в этом массиве храним сглаженные значения периодов падения
return #Settings.line
end
-----------------------------------------------------------
function OnCalculate(Index)
local Out =RSI(Index)
local HL = tonumber(Settings.Horizontal_line)
if HL then
return 50+HL,50-HL,Out
else
return nil,nil,Out
end
end
-----------------------------------------------------------
function RSI(I)-- функция выдает значение RSI для свечи номер I
local valUp,valDown
if I==1 then --Для 1-й свечи результата нет
return
end
local Val=C(I) --Цена закрытия в эту минуту
local ValPrev=C(I-1) --Цена закрытия в предыдущую минуту
if Val>=ValPrev then --Если цена закрытия уувеличилась
valUp=Val-ValPrev
valDown = 0
else
valUp=0
valDown=ValPrev-Val
end
if I==2 then --для 2-й свечи устанавливает сглаженное значение
smoothUp[I]=valUp
smoothDown[I]=valDown
else --Для свечи начиная с 2-й
smoothUp[I]=(smoothUp[I-1]*13+valUp)/14 --Вычисляем сглаженное значение этой свечи для периодов роста
smoothDown[I]=(smoothDown[I-1]*13+valDown)/14 --Вычисляем сглаженное значение этой свечи для периодов падения
end
return 100*smoothUp[I]/(smoothUp[I]+smoothDown[I]) --получаем результирущее значение RSI
end
Пользователь
Сообщений: Регистрация: 30.01.2015
24.05.2019 19:41:32
Рано радуетесь. Даже если вы не видите кролика, он все равно есть.
Например,
в одной диаграмме на минутном графике постройте график газпрома и график какого-нибудь неликвидного фьючерса.и постройте ваш индикатор ПО НЕЛИКВИДНОМУ ФЬЮЧЕРСУ. Наблюдайте за кучей ошибок исполнения.
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 23.10.2019
29.10.2019 19:52:19
Доброе время суток, а у вас есть файлы индикаторов Volume (объем) и Количество открытых позиций?
QUIK clients support
Сообщений: Регистрация: 18.04.2019
30.10.2019 07:00:34
Здравствуйте, Раиль. Индикаторы объёма и открытого интереса могут быть построены как с использованием индикаторов, так и без использования дополнительных lua-индикаторов. График объёма Вы можете построить через пункт контекстного меню окна графика: ПКМ / Добавить график (индикатор). В появившемся окне выберите инструмент в качестве источника данных, а для типа графика выберите "Volume". График открытого интереса может быть построен из Таблицы Текущих Торгов по параметру "Колво отк.поз.", либо, как и объём - через контекстное меню меню. В этом случае, в окне добавления графика необходимо нажать Новый / Изменить / История значений параметра / Количество открытых позиций. Если Вас интересуют файлы, описывающие алгоритмы расчёта и построения данных графиков и индикаторов, то таких файлов не предоставляем. Готовых вариантов на lua-скриптах также не распространяем. Однако, Вы можете написать их самостоятельно с использованием документации , а также следующих .
Пользователь
Сообщений: Регистрация: 21.02.2020
26.02.2020 22:15:05
Цитата
Рустам написал: Привет ребята. Как сделать среднюю линию на дополнительном индикаторе? Например на Volume?
Ищу ответ на тот же вопрос. Как добавить для индикатора volume среднюю скользящую, это возможно в принципе? ставить раздельно два индикатора на объем неудобно, например volume & volume oscillator
Пользователь
Сообщений: Регистрация: 30.01.2015
27.02.2020 01:01:23
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 21.02.2020
27.02.2020 14:53:15
Цитата
написал:
Похоже это то, что я ищу, хорошо, что есть демка, можно потестить некоторое время, понять для себя, нужно или нет.
Пользователь
Сообщений: Регистрация: 14.03.2020
19.03.2020 11:11:44
подскажите, почему при добавлении индикатора Квик 7.27 выдает ошибку: attempt to compare number with nil ?
Settings= { Name = "PrChannel ClosMid", period = 55, line= { { Name = "UpChannelClose", Color = RGB(0,128,0), Type=TYPE_LINE, Width=1 }, { Name = "Middle", Color = RGB(255,0,0), Type=TYPE_LINE, Width=1
}, { Name = "DownChannelClose", Color = RGB(0,128,0), Type=TYPE_LINE, Width=1 }
}
} function Init() -- возвр сколько линий в индикаторе return 3 end function OnCalculate(index) if index<Settings.period then return nil else local maximum = 0 local minimum = 1000000
for i= index - Settings.period +1, index do if C(i)>maximum then maximum = C(i) end if C(i)<minimum then minimum = C(i) end end return maximum, maximum-(maximum-minimum)/2, minimum end
end
Пользователь
Сообщений: Регистрация: 23.01.2015
19.03.2020 13:04:12
Цитата
Максим написал: подскажите, почему при добавлении индикатора Квик 7.27 выдает ошибку: attempt to compare number with nil ?
Скорей всего просто на графике есть пустые пропуски. Рекомендуется проверять свечки функцией CandleExist
Максим, нам не известно какой график Вы смотрите, не известно какие индикаторы на нем кроме указанного, не известно какой таймфрейм, вообще ничего не известно. Только код, на котором у нас проблема НЕ воспроизводится.
Максим, нам не известно какой график Вы смотрите, не известно какие индикаторы на нем кроме указанного, не известно какой таймфрейм, вообще ничего не известно. Только код, на котором у нас проблема НЕ воспроизводится.
на любом графике вылетает эта ошибка, на графике только этот индикатор, любой таймфрейм выдает ошибку.
Пользователь
Сообщений: Регистрация: 23.01.2015
19.03.2020 14:16:25
Максим, Ок, Вот боевой график доллар рубль, дневной таймфрейм.
ошибки нет.
Пользователь
Сообщений: Регистрация: 23.01.2015
19.03.2020 14:21:01
Максим, Сообщите хотя бы полный текст ошибки, со всеми цифрами
Пользователь
Сообщений: Регистрация: 14.03.2020
19.03.2020 15:18:36
Цитата
Sergey Gorokhov написал: , Ок, Вот боевой график доллар рубль, дневной таймфрейм.
ошибки нет.
а теперь попробуйте сдвинуть в настройках - дополнительно график на 1 интервал вперёд.
Пользователь
Сообщений: Регистрация: 14.03.2020
19.03.2020 15:20:11
Цитата
Sergey Gorokhov написал: , Сообщите хотя бы полный текст ошибки, со всеми цифрами
Цифра 41 в данном сообщении указывает на строку где возникла ошибка.
Код
if C(i)>maximum then
Т.е. у Вас C(i) возвращает nil А значит свечи нет. И то что Вы говорите что это не так, совершенно ничего не значит. Свечи может не быть на момент обращения к ней из-за сдвига или из-за наличия нескольких графиков. Совет тот же, добавьте проверку через CandleExist
Цифра 41 в данном сообщении указывает на строку где возникла ошибка.
Код
if C(i) > maximum then
Т.е. у Вас C(i) возвращает nil А значит свечи нет. И то что Вы говорите что это не так, совершенно ничего не значит. Свечи может не быть на момент обращения к ней из-за сдвига или из-за наличия нескольких графиков. Совет тот же, добавьте проверку через CandleExist
спасибо большое, вы самый грамотный программист , второй раз мне уже помогаете!!!