Если речь идёт о параметре "Количество сделок за сегодня", можно написать такой скрипт, которые будет работать с этим параметром, при условии, что сервер брокера получает этот параметр из торговой системы МБ. Проверить это можно по списку доступных параметров для рассматриваемого класса в окне настройки фильтра списка заказываемых классов и инструментов и параметров ( в терминалах 8.12 и новее - это пункт меню Система/Настройки/Основные настройки/Программа/Получение данных/Котировки).
Если параметр недоступен - можно обратиться к брокеру и уточнить у него, возможно ли обеспечить трансляцию этого параметра. Если параметр доступен - Вы можете заказать его терминалом, например, явным образом отметив параметр для заказа, или используя умный заказ данных. Название параметра для заказа данных по нему с использованием функций QLUA - "NUMTRADES".
Если речь идёт о параметре "Количество сделок за сегодня", можно написать такой скрипт, которые будет работать с этим параметром, при условии, что сервер брокера получает этот параметр из торговой системы МБ. Проверить это можно по списку доступных параметров для рассматриваемого класса в окне настройки фильтра списка заказываемых классов и инструментов и параметров ( в терминалах 8.12 и новее - это пункт меню Система/Настройки/Основные настройки/Программа/Получение данных/Котировки).
Если параметр недоступен - можно обратиться к брокеру и уточнить у него, возможно ли обеспечить трансляцию этого параметра. Если параметр доступен - Вы можете заказать его терминалом, например, явным образом отметив параметр для заказа, или используя умный заказ данных. Название параметра для заказа данных по нему с использованием функций QLUA - "NUMTRADES".
Хотелось бы индикатор, показывающий среднюю величину сделки, только не за сегодня, а "общее количество", только без всяких сглаживаний. Аналогично индикатору объема, с возможностью вывода в виде линии, гистограммы и т.д. Раз его не существует, значит и согласовывать не надо не с кем по поводу авторских прав. Если есть возможность добавьте его в quik или хотя бы в архив
Если Вас интересует параметр, отображающие количество "всех сделок" за "всё время торгов", т.е. за текущую торговую сессию, + все прошедшие - то у нас нет информации о том, чтобы какая-либо биржа транслировала эту информацию. Наиболее вероятно, она не транслируется вовсе.
Пожелания по написанию и добавлению скриптов в рабочее место QUIK мы не принимаем, т.к. эта задача может быть решена пользователем самостоятельно. Вы можете найти готовое решение, заказать его у какого-либо разработчика, либо создать его самостоятельно.
Документация по функциям QLUA и примеры доступны для скачивания с нашего сайта по ссылке:
.
Пользователь
Сообщений: Регистрация: 21.02.2020
20.05.2021 17:45:27
Цитата
Andrey Bezrukov написал: Если Вас интересует параметр, отображающие количество "всех сделок" за "всё время торгов", т.е. за текущую торговую сессию, + все прошедшие - то у нас нет информации о том, чтобы какая-либо биржа транслировала эту информацию. Наиболее вероятно, она не транслируется вовсе.
Странно, в справке к приложению написано совсем другое: Контрактов во всех сделках - Общее количество - Объем совершенных в текущей сессии сделок, штук. Вот такой параметр доступен для построения графика. Где неправда?
Kander написал: Не нашел ни одного скрипта отслеживающего такой параметр, как количество сделок, на ммвб он доступен.
Мы Вам , что да, параметр, отражающий количество сделок за сегодня есть, доступен обращения при помощи функций QLUA по строке "NUMTRADES".
Далее, Вы уточняете, что Вас интересуют данные не только за текущую сессию, а за весь период торгов, что мы поняли как, условно - "несколько сессий, много прошедших сессий".
Цитата
Kander написал: Хотелось бы индикатор, показывающий среднюю величину сделки, только не за сегодня, а "общее количество"
На что мы ответили, что такого параметра ТС не транслирует, и в QUIK такого параметра нет. Вы можете только самостоятельно как-то выполнять накопление и учёт этих данных из сессии в сессию. Или построить график истории изменения параметра без использования lua-индикаторов. Возможно, если брокер ведёт накопление данных истории изменения этого параметра - Вы также получите и график за прошлые торговые сессии. Но этот момент лучше уточнить непосредственно у брокера. Для этого при добавлении графика измените источник данных с обезличенных сделок на изменения этого параметра
То, что Вы приводите в последнем сообщении - это другой параметр, но он тоже отображает данные только за текущую торговую сессию, и да, его можно использовать в скриптах на LUA и функциях QLUA. Чтобы узнать его текстовый идентификатор - Вы можете добавить его в таблицу текущих торгов и выполнить по DDE в Excel с формальными заголовками. Заголовок, указанный для этого столбца и будет его строковым идентификатором. Этот же подход можете применять и для других параметров. И по нему также можно построить график истории изменения параметра без использования LUA-индикатаров
Если же Вы имеете что-то другое и с нашей стороны имеет место недопонимание Вашей задачи - просьба подробно описать что именно Вам нужно.
Пользователь
Сообщений: Регистрация: 21.02.2020
21.05.2021 14:40:59
Цитата
Andrey Bezrukov написал: На что мы ответили, что такого параметра ТС не транслирует, и в QUIK такого параметра нет. Вы можете только самостоятельно как-то выполнять накопление и учёт этих данных из сессии в сессию.
Несколько раз перечитал, ваш ответ и нахожусь в недоумении. Что бы не припираться, я покажу скрин, а вы ответьте, что показывает параметр на графике "общее количество". Это разрешит обсуждаемый вопрос.
Скрытый текст
В справке к приложению написано, что он показывает - Объем совершенных в текущей сессии сделок, штук Если это не количество сделок за каждую сессию, как написано в справке, то что?
написал: Контрактов во всех сделках - Общее количество - Объем совершенных в текущей сессии сделок, штук.
Контракт и переводится как сделка. Вы можете дать вменяемый ответ, можно ссылкой на статью. Почему из вас надо сутками ответ выбивать?
О каких контрактах идет речь на скрине выше(акции Five)?
контракт - это обязательство, которое возникает вследствие сделки по определённым активам. Например, на акциях Газпрома возникает позиция по акциям, на фьючерсах Газпрома возникает позиция по контрактам. Контракт есть обязательство выполнить определенные действия к какому то сроку (например купить или продать акции)
не нужно наезжать, сначала имеет смысл определиться в терминологии.
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 21.02.2020
24.05.2021 16:09:38
Цитата
s_mike@rambler.ru написал: не нужно наезжать, сначала имеет смысл определиться в терминологии.
Я не наезжаю, а как раз пытаюсь разобраться, если бы вы нормально, так что бы не возникало вопросов, заполнили справочную информацию, мы бы не тратили свое время на выяснение.
Мы сейчас не говорим о срочном рынке(деривативах), фьючерсах или опционах, мы говорим о фондовом рынке, о рынке акций. Конкретно о акциях компании "Пятерочка", график которых на скрине выше. Где есть сделки, лоты и акции, ну и их денежное выражение в валюте(лента сделок)
Откуда взялись контракты? Откуда берется информация о этих контрактах? В общей ленте сделок нет никаких контрактов. В чем измеряются эти контракты и как они соотносятся со сделками?
Пользователь
Сообщений: Регистрация: 04.08.2021
04.08.2021 13:46:03
Кто-нибудь может поделиться индикатором скользящей средней Laguerre? Я бы и сам мог написать, но формулу не до конца понял. Может, кто-нибудь может подсказать?
H и L это максимум и минимум свечи? L0[1] это значение для предыдущей свечи?
Пользователь
Сообщений: Регистрация: 30.01.2015
04.08.2021 17:02:08
Цитата
Dobrota написал: Кто-нибудь может поделиться индикатором скользящей средней Laguerre? Я бы и сам мог написать, но формулу не до конца понял. Может, кто-нибудь может подсказать?
if (L0 >= L1) CU = L0 - L1; else CD = L1 - L0; if (L1 >= L2) CU = CU + L1 - L2; else CD = CD + L2 - L1; if (L2 >= L3) CU = CU + L2 - L3; else CD = CD + L3 - L2;
if (CU + CD != 0) LRSI = CU / (CU + CD); val1[i] = LRSI; i--; }
Пасхалочка для Алексея Иванникова:
Пользователь
Сообщений: Регистрация: 04.08.2021
17.08.2021 21:50:55
Вернулся к попыткам написать скользящую среднюю LaguerreMA. Не могу найти ошибку в коде(в программировании полный новичок) - индикатор постепенно улетает куда-то в космос после нескольких первых значений. По аналогичной схеме написал уже код для других 5-6 индикаторов, там все четко отображает. Часть кода:
function Init() local index_1 = 0 myEMA = cached_LMA() return 1 end
function OnCalculate(index) if index == 0 then return nil end if index ~= index_1 then index_1 = index return myLMA(index, Settings.value_type, Settings.gamma) end end
function cached_LMA() local cache={} local L0 = {} local L1 = {} local L2 = {} local L3 = {}
return function(ind, v_t, kk)
local v_type = v_t local index = ind local k = kk
if index == 1 then L0[index] = dValue(index, v_type) L1[index] = dValue(index, v_type) L2[index] = dValue(index, v_type) L3[index] = dValue(index, v_type) cache[index] = dValue(index, v_type) else L0[index] = (1 - k)* dValue(index-1, v_type) + L0[index-1] L1[index] = L0[index-1] + k * L1[index-1] - k * L0[index] L2[index] = L1[index-1] + k * L2[index-1] - k * L1[index] L3[index] = L2[index-1] + k * L3[index-1] - k * L2[index] cache[index] = (L0[index]+2*L1[index]+2*L2[index]+L3[index])/6
end
return cache[index] end end
Функция dValue просто определяет значение цены в зависимости от индекса и типа цены. Можете подсказать, в чем ошибка?
Пользователь
Сообщений: Регистрация: 04.08.2021
17.08.2021 21:54:04
В начале myLMA = cached_LMA() конечно
Пользователь
Сообщений: Регистрация: 27.08.2021
27.08.2021 21:39:52
Возникла проблема, что не подгружаются вообще никакие индикаторы. Может быть я что-то делаю не так? QUIK 8.13.3.1 предлагает на выбор запуск Lua 5.4.1 или Lua 5.3.5 Например, копирую код с этого форума от 24.05.2019 16:47:09 в файл с расширением .lua Сервис-Луа скрипты-добавить. Жму на любом графике Добавить график (индикатор) и в списке нет нового имени...
Пользователь
Сообщений: Регистрация: 27.08.2021
28.08.2021 00:09:13
Разобрался. QLUA.chm в помощь. ...расположены в папке LuaIndicators в каталоге терминала. Если папка отсутствует в каталоге, необходимо создать ее вручную. Список скриптов не доступен из диалога Сервисы / LUA скрипты....
Пользователь
Сообщений: Регистрация: 29.03.2017
07.09.2021 15:35:25
Индикатор RSI вылетает с ошибкой
эта строка выглядит так
Код
local val_Up = RSI_MA_U(it.l, {Period=P, Metod = M, VType=ANY}, {[it.l] = Up})
Вот код индикатора, уж не знаю какая это редакция, может не свежая.
Вызывается следующим блоком:
Код
func = RSI() ;
local rsi_count={}
nk=ds[real]:Size()
for i=1,nk do rsi_count[i]=func(i, {Period=rsi_period, VType="Typical"}, ds[real]) end
if rsi_count[nk]~=nil then
rsi0=rsi_count[nk]
rsi1=rsi_count[nk-1]
rsi2=rsi_count[nk-2]
rsi3=rsi_count[nk-3]
rsi4=rsi_count[nk-4]
max_rsi=math.max(rsi0,rsi1,rsi2,rsi3,rsi4)
in_rsi=math.min(rsi0,rsi1,rsi2,rsi3,rsi4)
else
mm (real.." "..nk.." rsi_count[num_candles]=nil") ; sleep (100)
end
Подскажите пожалуйста, в чём может быть дело.
Пользователь
Сообщений: Регистрация: 29.03.2017
07.09.2021 15:42:28
P.S. скрипт работает и всё считает нормально, но в какой-то момент вылетает с этой ошибкой.
Пользователь
Сообщений: Регистрация: 05.01.2022
08.01.2022 14:02:50
Добрый день!
Может быть есть готовый индикатор пропущенных данных для графиков ? Если нет, возможно его размещение средствами LUA в заголовке окна или только в области графика? [img]data:image/jpeg;base64,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[/img][img]data:image/jpeg;base64,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[/img]
Пользователь
Сообщений: Регистрация: 05.01.2022
08.01.2022 14:05:30
Добрый день!
Может быть есть готовый индикатор пропущенных данных для графиков ? Если нет, возможно его размещение средствами LUA в заголовке окна или только в области графика?
Если Вас интересует параметр, отображающие количество "всех сделок" за "всё время торгов", т.е. за текущую торговую сессию, + все прошедшие - то у нас нет информации о том, чтобы какая-либо биржа транслировала эту информацию. Наиболее вероятно, она не транслируется вовсе.
Пожелания по написанию и добавлению скриптов в рабочее место QUIK мы не принимаем, т.к. эта задача может быть решена пользователем самостоятельно. Вы можете найти готовое решение, заказать его у какого-либо разработчика, либо создать его самостоятельно.
Документация по функциям QLUA и примеры доступны для скачивания с нашего сайта по ссылке:
.
Добрый день! Скачал папку LuaIndicators, вставил в QUIK. Но при открытии программы, новые индикаторы не появляются. Меня интересует только индикатор Зигзаг. Вопрос, как мне его добавить в программу?
Если Вас интересует параметр, отображающие количество "всех сделок" за "всё время торгов", т.е. за текущую торговую сессию, + все прошедшие - то у нас нет информации о том, чтобы какая-либо биржа транслировала эту информацию. Наиболее вероятно, она не транслируется вовсе.
Пожелания по написанию и добавлению скриптов в рабочее место QUIK мы не принимаем, т.к. эта задача может быть решена пользователем самостоятельно. Вы можете найти готовое решение, заказать его у какого-либо разработчика, либо создать его самостоятельно.
Документация по функциям QLUA и примеры доступны для скачивания с нашего сайта по ссылке:
.
Добрый день! Скачал папку LuaIndicators, вставил в QUIK. Но при открытии программы, новые индикаторы не появляются. Меня интересует только индикатор Зигзаг. Вопрос, как мне его добавить в программу?
откройте в текстовом редакторе исходники индикаторов. уберите лишние. сохраните под именем индикатора. поместите его в папку ...QUIK\LuaIndicators
Пользователь
Сообщений: Регистрация: 23.03.2023
23.03.2023 18:03:47
Всем добрый день!
Скажите, пожалуйста, встречал ли кто-нибудь индикатор, который может отобразить график зеркально - цена в реальности идёт вверх, а на графике - вниз? Такие индикаторы есть - например, для MetaTrader - ReverseSymbol Для другой программы он называется Mirror bars.
Заранее спасибо!
Пользователь
Сообщений: Регистрация: 08.04.2021
31.07.2023 09:59:29
Добрый день, понадобился для Quik индикатор WMA, скопировал всю папку с индикаторами в Quik, при выборе MA индикатора программа подвисает на некоторое время с ошибкой.
...\LuaIndicators\MA.lua:234: attempt to index a nil value (global 'arg')
в чем может быть дело? Штатные индикаторы MA нормально работают.
Верно понимаем, что скрипты индикаторов были загружены с нашего сайта ()? Выберите версию Lua 5.3.5 для скриптов-индикаторов, удалите из окна графика ранее добавленные Lua-индикаторы, затем добавьте нужный индикатор повторно.
Верно понимаем, что скрипты индикаторов были загружены с нашего сайта ( )? Выберите версию Lua 5.3.5 для скриптов-индикаторов , удалите из окна графика ранее добавленные Lua-индикаторы, затем добавьте нужный индикатор повторно.
Нет, я ваши не нашел, скачал такую же папку с гитхаба, они там ссылались на эту ветку форума. Поставил вашу папку - все завелось сразу. Сравнил файлы MA.lua, есть различие примерно в 400 байт, ваш файл больше по размеру и работает. Спасибо за помощь.
Пользователь
Сообщений: Регистрация: 10.08.2023
10.08.2023 16:30:58
добрый день помгите пожалуйста, делаю индикатор для quik Хай лоу пред дня + ATR , вот как мне прибавить значение atr к линии хая и лоя? что совсем не пойму
Settings = { Name = "1-HLDAY+ATR", line = { { Name = "HIGH", Color = RGB(0,200,0), Type = TYPE_DASH, Width = 2 }, { Name = "LOW", Color = RGB(200,0,0), Type = TYPE_DASH, Width = 2 } } }
function Init() func = ATR() 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 0 if Out > prev then return HL,Out,nil else return HL,nil,Out end else return HL,nil,nil end end
function ATR() --Average True Range ("ATR") local f_TR = TR() local tmp = {pp=nil, p=nil} local it = {p=0, l=0} return function (I, Fsettings, ds) local Fsettings=(Fsettings or {}) local P = (Fsettings.Period or 14) if (P > 0) then if I == 1 then tmp = {pp=nil, p=nil} it = {p=0, l=0} end local tr = f_TR(I,ds) if CandleExist(I,ds) then if I~=it.p then it = {p=I, l=it.l+1} tmp.pp = tmp.p end if it.l < P then tmp.p = (tmp.pp or 0) + tr elseif it.l == P then tmp.p = ((tmp.pp or 0) + tr) / P return tmp.p elseif it.l > P then tmp.p = ((tmp.pp or 0) * (P-1) + tr) / P return tmp.p end end end return nil end end
function TR() --True Range ("TR") local it = {pp=0, p=0, l=0} return function (I, ds) if I == 1 then it = {pp=0, p=0, l=0} end if CandleExist(I,ds) then if I~=it.p then it={pp=it.p, p=I, l=it.l+1} end if it.l == 1 then return math.abs(GetValueEX(it.p,DIFFERENCE, ds)) else return math.max(math.abs(GetValueEX(it.p,DIFFERENCE, ds)), math.abs(GetValueEX(it.p,HIGH,ds) - GetValueEX(it.pp,CLOSE,ds)), math.abs(GetValueEX(it.pp,CLOSE,ds)-GetValueEX(it.p,LOW,ds))) end end return nil end 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®== "ON" then R=0 end if V and tonumber® 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 local arg = {...} arg.n = select('#', ...) 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 function Init() return #Settings.line end local atr = tonumber(function ATR()) local hl = { -- year -- month -- day -- high -- low }
function OnCalculate(index)
local dt = T(index) if not C(index) then return end local trdt = getTradeDate()
if dt.day ~= trdt.day or dt.month ~= trdt.month or dt.year ~= trdt.year then
if dt.day ~= hl.day or dt.month ~= hl.month or dt.year ~= hl.year then hl.year = dt.year hl.day = dt.day hl.month = dt.month hl.high = H(index) hl.low = L(index) else hl.high = (math.max(hl.high,H(index))) + atr hl.low = math.min(hl.low,L(index)) end
else return hl.high,hl.low
end
end
Пользователь
Сообщений: Регистрация: 24.04.2018
06.09.2023 10:00:59
Добрый день! Подскажите где взять indicators.zip под lua 5.4. У меня часть индикаторов на 5.4. и вместе на одном графике они не уживаются с 5.3.
Пользователь
Сообщений: Регистрация: 30.01.2015
06.09.2023 19:41:09
Цитата
написал: Добрый день! Подскажите где взять indicators.zip под lua 5.4. У меня часть индикаторов на 5.4. и вместе на одном графике они не уживаются с 5.3.
indicators.zip Это какой-то архив? Вы где его взяли? Вы думаете, что все должны знать, что у Вас в этом архиве?
Пользователь
Сообщений: Регистрация: 24.04.2018
06.09.2023 20:17:50
Цитата
Цитата
См
Цитата
Смотрите пост 80.Там есть ссылка, но там только lua 5.3, который не работает вместе с 5.4. Один индикатор psar я починил заменой unpack(arg) на table.unpack(arg), но не все можно так просто починить, нужно к автору этих индикаторов обращаться. И было бы здорово переделать их под 5.4, а не чтобы каждый сам их прилаживал под себя. Хотя и так тоже наверное можно. Вот переделанный мной Psar под lua 5.4
Код
Settings = {
Name = "*PSAR (Parabolic SAR)",
Step = 0.02,
MaxStep = 0.2,
line = {{
Name = "Horizontal line",
Type = TYPE_LINE,
Color = RGB(140, 140, 140)
},
{
Width = 3,
Name = "PSAR_Up",
Type = TYPE_POINT,
Color = RGB(221, 44, 44)
},
{
Width = 3,
Name = "PSAR_Down",
Type = TYPE_POINT,
Color = RGB(0, 206, 0)
}
},
Round = "off",
Multiply = 1,
Horizontal_line="off"
}
function Init()
func = PSAR()
return #Settings.line
end
function OnCalculate(Index)
local Out = ConvertValue(Settings, func(Index, Settings))
local HL = tonumber(Settings.Horizontal_line)
if Out then
if Out > ((H(Index)-L(Index))/2)+L(Index) then
return HL,Out,nil
else
return HL,nil,Out
end
else
return HL,nil,nil
end
end
function PSAR() --Parabolic SAR ("PSAR")
local tmp = {pp=nil, p=nil}
local it = {ppp=0, pp=0, p=0, l=0}
return function (I, Fsettings, ds)
local Out = nil
local Fsettings=(Fsettings or {})
local Step = (Fsettings.Step or 0.02)
local MaxStep = (Fsettings.MaxStep or 0.2)
if I == 1 then
tmp = {pp=nil, p=nil}
it = {ppp=0, pp=0, p=0, l=0}
end
if CandleExist(I,ds) then
if I~=it.p then
it={ppp=it.pp, pp=it.p, p=I, l=it.l+1}
tmp.pp = tmp.p
end
local cand = {ppp=nil, pp=nil, p=nil}
tmp.p = {Val = nil, Step = 0, Ext = 0, Long = true}
cand.p = {H = GetValueEX(it.p,HIGH,ds), L = GetValueEX(it.p,LOW,ds)}
if it.l==2 then
tmp.p = {Val = GetValueEX(it.p,HIGH,ds), Step = Step, Ext = cand.p.H, Long = true}
end
if it.l > 2 then
local Revers = false
tmp.p.Val = tmp.pp.Val + tmp.pp.Step * (tmp.pp.Ext - tmp.pp.Val)
tmp.p.Long = tmp.pp.Long
tmp.p.Ext = tmp.pp.Ext
tmp.p.Step = tmp.pp.Step
if tmp.pp.Long then
if cand.p.L < tmp.p.Val then
tmp.p = {Val = tmp.pp.Ext, Step = Step, Ext = cand.p.L, Long = false}
Revers = true
end
else
if cand.p.H > tmp.p.Val then
tmp.p = {Val = tmp.pp.Ext, Step = Step, Ext = cand.p.H, Long = true}
Revers = true
end
end
if not Revers then
cand.pp = {H = GetValueEX(it.pp,HIGH,ds), L = GetValueEX(it.pp,LOW,ds)}
cand.ppp = {H = GetValueEX(it.ppp,HIGH,ds), L = GetValueEX(it.ppp,LOW,ds)}
if tmp.pp.Long then
if cand.p.H > tmp.pp.Ext then
tmp.p.Ext = cand.p.H
tmp.p.Step = tmp.pp.Step + Step
if tmp.p.Step > MaxStep then tmp.p.Step = MaxStep end
end
if cand.pp.L < tmp.p.Val then tmp.p.Val = cand.pp.L end
if cand.ppp.L < tmp.p.Val then tmp.p.Val = cand.ppp.L end
else
if cand.p.L < tmp.pp.Ext then
tmp.p.Ext = cand.p.L
tmp.p.Step = tmp.pp.Step + Step
if tmp.p.Step > MaxStep then tmp.p.Step = MaxStep end
end
if cand.pp.H > tmp.p.Val then tmp.p.Val = cand.pp.H end
if cand.ppp.H > tmp.p.Val then tmp.p.Val = cand.ppp.H end
end
end
end
return tmp.p.Val
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
local arg = {...}
arg.n = select('#', ...)
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 table.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
Наши примеры Lua-индикаторов, доступные сейчас на сайте, действительно работают только с Lua версии 5.3.
Мы зарегистрировали Ваше пожелание на добавление индикаторов, совместимых с Lua 5.4. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Пользователь
Сообщений: Регистрация: 31.01.2015
01.10.2023 19:33:12
У вас какая-то странная формула у скользящей средней SMMA. Не могли бы вы её расшифровать, а то я запутался в её смысле.
Формула SMMA: SMMAi = (sum(Pi) - SMMAi-1 + Pi) / n, где Pi - значение цены в i-ом периоде, SMMAi-1 - значение SMMA в предыдущем периоде, n - установленное в параметрах индикатора количество периодов.
Если необходимо рассмотреть что-то более подробно, просим Вас уточнить вопрос.
Пользователь
Сообщений: Регистрация: 30.07.2017
25.06.2024 19:16:32
Подскажите как с помощью индикатора ADX получить данные DI+ и DI-. Нужен пример.
Пользователь
Сообщений: Регистрация: 30.01.2015
25.06.2024 20:07:14
Цитата
написал: Подскажите как с помощью индикатора ADX получить данные DI+ и DI-. Нужен пример.
Никак. ---------- Это ADX вычисляется через D+ и D-, а не наоборот. -------------------- Можно вычислить индикаторы D+ и D-: D+ это EMA от High(i)-High(i-1) D- 'это EMA от Low(i)-Low(i-1) ----------------- см. в интернете.
Пользователь
Сообщений: Регистрация: 17.09.2018
08.07.2024 21:54:24
Добрый день, написал маленький индикатор, который показывает просадку.
Пользователь
Сообщений: Регистрация: 17.09.2018
08.07.2024 22:07:45
Цитата
Сергей написал: Добрый день, написал маленький индикатор, который показывает просадку.
продолжение... написал маленький индикатор, который показывает просадку от максимума. Проблема в том, что при выводе на график выходят не те данные, что приходят в месседж. Почему-то последний максимум применяется для всех свечей, а нужно что-бы максимум применялся только для тех свечей, которые идут после вычисления очередного максимума.
Settings = { Name = "*Vet_Rollback", line = { { Color = RGB(153, 204, 0), Type = TYPE_HISTOGRAM, Width = 0 },
} }
function Init() maxh = 0 return #Settings.line end
function OnCalculate(idx) if idx > 1 and H(idx)~= nil then if maxh < H(idx) then maxh = H(idx) rollback = (L(idx) - maxh) / maxh * 100 else rollback = (L(idx) - maxh) / maxh * 100
end message(tostring(maxh).." "..H(idx).." "..L(idx)) message(tostring(rollback)) return rollback end
end
Пользователь
Сообщений: Регистрация: 30.01.2015
09.07.2024 09:32:35
Цитата
Сергей написал: Settings = { Name = "*Vet_Rollback", line = { { Color = RGB(153, 204, 0), Type = TYPE_HISTOGRAM, Width = 0 }, }}function Init() maxh = 0 return #Settings.lineendfunction OnCalculate(idx) if idx > 1 and H(idx)~= nil then if maxh < H(idx) then maxh = H(idx) rollback = (L(idx) - maxh) / maxh * 100 else rollback = (L(idx) - maxh) / maxh * 100 end message(tostring(maxh).." "..H(idx).." "..L(idx)) message(tostring(rollback)) return rollback end end
При выводе на график выходят те данные, что приходят в месседж. Верно?
Пользователь
Сообщений: Регистрация: 17.09.2018
09.07.2024 11:50:21
Да, данные правильно приходят, потому как хай у вас в начале графика,
но если взять например такой график, то видно, что расчет значения в месендже правильный, а на графический вывод подаёт значение высчитанное с самого большого хая, т.е (желтые стрелки) реальное значение должно быть -0,67, а на графике оно -17.
Пользователь
Сообщений: Регистрация: 17.09.2018
09.07.2024 11:57:44
что бы понятнее было, на графике просадка составила -31%, а на индикаторе -36, как от самого последнего хая.
Пользователь
Сообщений: Регистрация: 30.01.2015
10.07.2024 07:15:58
Цитата
Сергей написал: что бы понятнее было, на графике просадка составила -31%, а на индикаторе -36, как от самого последнего хая.
У Вас так и считает скрипт. Т е просадка вычисляется от самого большого High. ------------------- Есть такая особенность в расчетах индикаторов: -------------------- Индикатор при запуске вычисляется два раза. В первый раз в нем запомнится самый большой максимум на графике Во второй раз вы и получите просадку всех значений относительного этого максимума. -------------- Такой способ вычисления индикаторов это такой прикол создателей QUIK. Чтобы жизнь медом не казалась. ------------- Про это писал лет ...надцать назад. Потом еще многие и много. ---------------- Пишите скрипт с учетом этого факта.
Пользователь
Сообщений: Регистрация: 17.09.2018
10.07.2024 15:52:37
Благодарю, я так и предположил, что двойной расчёт идет. Написал "костыль", теперь показывает верно, правда только с первого просмотра, после обновления свечи опять слетает, но мне достаточно для анализа. ------------------------------- Создателям QUIK 'респект'
Пользователь
Сообщений: Регистрация: 30.01.2015
10.07.2024 17:13:20
Цитата
Сергей написал: Благодарю, я так и предположил, что двойной расчёт идет. Написал "костыль", теперь показывает верно, правда только с первого просмотра, после обновления свечи опять слетает, но мне достаточно для анализа. ------------------------------- Создателям QUIK 'респект'
проблема решается путем установки в начальное значение всех переменных при индексе=1 например,так ваш скрипт:
Код
name="*Vet_Rollback"
Settings={Name =name};
function OnCalculate(i)
local Hi,Li=H(i),L(i)
if i==1 then
maxh=0
else
if Hi then
if maxh<Hi then maxh = Hi end
rollback=(Li-maxh)/maxh * 100
message(tostring(maxh..";"..Hi..";"..Li..";"..rollback))
end
end
return rollback
end
function Init()
Settings.line ={ { Color = RGB(153, 204, 0),Type = TYPE_HISTOGRAM,Width = 0}}
return #Settings.line
end
Пользователь
Сообщений: Регистрация: 17.09.2018
10.07.2024 18:35:50
nikolz, то, что нужно. Я так не смог придумать как максимум обнулять, теперь Вашими стараниями принцип я понял. Благодарю ещё раз.
написал: Подскажите как с помощью индикатора ADX получить данные DI+ и DI-. Нужен пример.
Никак. ---------- Это ADX вычисляется через D+ и D-, а не наоборот. -------------------- Можно вычислить индикаторы D+ и D-: D+ это EMA от High(i)-High(i-1) D- 'это EMA от Low(i)-Low(i-1) ----------------- см. в интернете
DI+ и DI- явно вычисляются в Осталось понять как получить. Интернет не даёт результатов при поиске))