Все должно работать тютелька в тютельку, если что то не работает, значит где то не допилили - если не долинно, а так можно и пальцами в небо тыкать - будет такой же результат.
Так по поводу формулы (первой и с учётом WMA) - в чём там там косяк правильно ли я рассчитал, потому что короткий вариант и WMA - пустая выводится.
Роман пишет: 1. на EMA - он же на финаме, у вас не верный
Роман, нашу формулу я Вам приводил, да она отличается от той что привели Вы. Покопавшись в истории выяснилось что наша формула совпадает с формулой метастока. В то время как например в том же метатрейдере используется формула приведенная Вами На счет сайта финама ничего не могу сказать. Так вот, оказывается эти различия заметили не только Вы http://forum.mql4.com/ru/47825
И как оказалось единого мнения не нашлось. Также в процессе исследования, я воспроизвел расчеты приведенные Вами, может оказаться полезным:
Код
SMA="SMA"
EMA="EMA"
SMMA="SMMA"
Settings= {
Name = "!LUA_ADX",
Period=14,
Metod = EMA, --Metod: SMA, EMA, SMMA
MetodADX = EMA, --Metod: SMA, EMA, SMMA
Round = "0", --округление
line = {
{
Name = "LINE_ADX",
Type = TYPE_LINE,
Width = 1,
Color = RGB(0, 0, 255)
},
{
Name = "LINE_ADX +DI",
Type = TYPE_LINE,
Width = 1,
Color = RGB(0, 255, 0)
},
{
Name = "LINE_ADX -DI",
Type = TYPE_LINE,
Width = 1,
Color = RGB(255, 0, 0)
}
}
}
function Init()
F=ADX()
return #Settings.line
end
function OnCalculate(Index)
return F(Index, Settings)
end
--Average Directional Movement Index (ADX)
function ADX()
local pDM_MA=MA()
local mDM_MA=MA()
local ATR_MA=MA()
local ADX_MA=MA()
local pDM={}
local mDM={}
local TR={}
local DX={}
return function (Index, Settings)
local Settings=(Settings or {})
local N = (Settings.Period or 14)
local M = (Settings.Metod or EMA)
local MetodADX = (Settings.MetodADX or M)
if (Settings.Round=="") or (tonumber(Settings.Round)<0) then idp=nil else idp=tonumber(Settings.Round) end
if Index>1 then
local dHigh = H(Index) - H(Index-1)
local dLow = L(Index-1) - L(Index)
if ((dHigh < 0) and (dLow < 0)) or (dHigh==dLow) then
pDM[Index-1] = 0
mDM[Index-1] = 0
end
if (dHigh > dLow) then
pDM[Index-1] = dHigh
mDM[Index-1] = 0
end
if (dHigh < dLow) then
pDM[Index-1] = 0
mDM[Index-1] = dLow
end
--Average Directional Move Indicator
local pAMD = pDM_MA(Index-1, {Period=N, Metod=M}, pDM, idp)
local mADM = mDM_MA(Index-1, {Period=N, Metod=M}, mDM, idp)
--True Range
TR[Index-1] = math.max(math.abs(H(Index) - L(Index)), math.abs(H(Index) - C(Index-1)), math.abs(C(Index-1) - L(Index)))
--Average True Range
local ATR = ATR_MA(Index-1, {Period=N, Metod=M}, TR, idp)
if Index > N then
--Directional Index
local pDI = round(100 * pAMD / ATR, idp)
local mDI = round(100 * mADM / ATR, idp)
--Directional Movement Index
DX[Index-N] = 100 * math.abs(pDI-mDI) / (pDI+mDI)
return ADX_MA(Index-N, {Period=N, Metod=MetodADX}, DX, idp),pDI,mDI
else
return nil,nil,nil
end
else
return nil,nil,nil
end
end
end
function MA()
local t_SMA=fSMA()
local t_EMA=fEMA()
local t_SMMA=fSMMA()
return function(Index, Settings, ds, idp)
local Settings=(Settings or {})
local P = (Settings.Period or 9)
local M = (Settings.Metod or EMA)
if M == SMA then
return t_SMA(Index, P, ds, idp)
elseif M == EMA then
return t_EMA(Index, P, ds, idp)
elseif M == SMMA then
return t_SMMA(Index, P, ds, idp)
else
return nil
end
end
end
------------------------------------------------------------------
--Скользящие средние (SMA, EMA, VMA, SMMA)
------------------------------------------------------------------
--[[Simple Moving Average (SMA)
SMA = sum(Pi) / n
]]
function fSMA()
return function (Index, Period, ds, idp)
local Out = nil
if Index >= Period then
local sum = 0
for i = Index-Period+1, Index do
sum = sum +ds[i]
end
Out = sum/Period
end
return round(Out,idp)
end
end
--[[Exponential Moving Average (EMA)
EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1)
]]
function fEMA()
local EMA_TMP={}
return function(Index, Period, ds, idp)
local Out = nil
if Index == 1 then
EMA_TMP[Index]=round(ds[Index],idp)
else
EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
EMA_TMP[Index-2]=nil
end
if Index >= Period then
Out = EMA_TMP[Index]
end
return round(Out,idp)
end
end
--[[Smoothed Moving Average (SMMA)
SMMAi = (sum(Pi) - SMMAi-1 + Pi) / n
]]
function fSMMA()
local SMMA_TMP={}
return function(Index, Period, ds, idp)
local Out = nil
if Index >= Period then
local sum = 0
for i = Index-Period+1, Index do
sum = sum +ds[i]
end
if Index == Period then
SMMA_TMP[Index]=round(sum / Period, idp)
else
SMMA_TMP[Index]=round((sum - SMMA_TMP[Index-1] + ds[Index]) / Period, idp)
end
SMMA_TMP[Index-2]=nil
Out = SMMA_TMP[Index]
end
return round(Out,idp)
end
end
------------------------------------------------------------------
--Вспомогательные функции
------------------------------------------------------------------
function round(num, idp)
if idp and num then
local mult = 10^(idp or 0)
if num >= 0 then return math.floor(num * mult + 0.5) / mult
else return math.ceil(num * mult - 0.5) / mult end
else return num end
end
Sergey Gorokhov пишет: наша формула совпадает с формулой метастока. В то время как например в том же метатрейдере используется формула приведенная Вами
Опечатка, перепутал метасток и метатрейдер, следует читать так:
Цитата
наша формула совпадает с формулой метатрейдера. В то время как например в том же метастоке используется формула приведенная Вами
sam063rus пишет: В общем, как я понял, если речь идёт об индексах - то у всех будут разные данные, а значит и индикаторы будут показывать абсолютно разное.
Этот код немного отличается о того что я сделал, в преобразовании в целое round - упоминаний об этом не встречал не где.
А что касается, проблем с отличием, в том же форуме - парни пишут о том что в одном из ТА применяется сглаживание по дедушки Виллиямса. По многомерной формуле ( (AdmMinus[index-1] + ((period-1)/period)) + (DeltaHigh + (1/period)) ) сгладить у меня не получилось, не знаю почему, счас попробую WMA линейно применить.
Роман пишет: Самое интересное что этот вариант с EMA, отличается от графика ADX Квика.
Вам явно и не двусмысленно было сказано, что тот код который я привел воспроизводит ту формулу которую Вы привели. Эта формула НЕ такая как в QUIK о чем также было явно сказана. Так что причин удивляться тому что этот индикатор НЕ такой как в QUIK совершенно нет. Так как именно об этом и идет разговор последние 20 постов.
Цитата
Роман пишет: Этот код немного отличается о того что я сделал, в преобразовании в целое round - упоминаний об этом не встречал не где.
Округление было добавлено по моей личной инициативе в процессе исследования. Если оно Вам мешает, не вопрос просто выключите его: Round = "-1",
Эта формула НЕ такая как в QUIK о чем также было явно сказано. Так что причин удивляться тому что этот индикатор НЕ такой как в QUIK совершенно нет. Так как именно об этом и идет разговор последние 20 постов.
Там разница слишком большая и видна не вооружённым глазом даже дивергенция. Индекс или котировки акции - все разно боком показывают.
Поэтому большая просьба, кто нибудь, сбросьте на Lua или Qpile - реализацию ADX в Квике, хотя бы методом тыка определить в чем фишка.
p.s. вариант c# я написал сам (там проблема с присобачиванием сглаживания), на форуме того же мнения:
Цитата
Тут, вероятно, все дело в сглаживании, которое якобы должно быть от Уайлдерса. Там ведь Rosh что-то выложил, проверьте.
если вы с c# взяли как пример для выше приведённого кода то у вас он получился не так в том коде. А пример я просил именно Квиковский, что бы подкрутить сглаживание как надо, вот собственно и всё. Задача у меня простая что бы wealt-lab вариант со сглаживанием Уайлдерса выводила и всё.
Я Вам уже говорил, LUA примера ADX по формуле как в QUIK у нас уже нет, и делать я его не буду. Попробуйте сделать его самостоятельно (формула у Вас уже есть), готов помочь при возникновении проблем.
local dHigh = H(Index) - H(Index-1)
local dLow = L(Index-1) - L(Index)
На сайте написано так:
у меня так:
Код
if ((dHigh < 0) and (dLow < 0)) or (dHigh==dLow) then
pDM[Index-1] = 0
mDM[Index-1] = 0
end
if (dHigh > dLow) then
pDM[Index-1] = dHigh
mDM[Index-1] = 0
end
if (dHigh < dLow) then
pDM[Index-1] = 0
mDM[Index-1] = dLow
end
На сайте написано так:
у меня так:
Код
--Average Directional Move Indicator
local pAMD = pDM_MA(Index-1, {Period=N, Metod=M}, pDM, idp)
local mADM = mDM_MA(Index-1, {Period=N, Metod=M}, mDM, idp)
--где для EMA
--EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
--Average True Range
local ATR = ATR_MA(Index-1, {Period=N, Metod=M}, TR, idp)
--где для EMA
--EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
На сайте написано так:
у меня так:
Код
local pDI = round(100 * pAMD / ATR, idp)
local mDI = round(100 * mADM / ATR, idp)
на сайте написано так:
у меня так:
Код
DX[Index-N] = 100 * math.abs(pDI-mDI) / (pDI+mDI)
и наконец, на сайте написано так
а у меня так:
Код
return ADX_MA(Index-N, {Period=N, Metod=MetodADX}, DX, idp),pDI,mDI
--где для EMA
--EMA_TMP[Index]=round((EMA_TMP[Index-1]*(Period-1)+2*ds[Index]) / (Period+1),idp)
The distance from today's high to today's low. The distance from yesterday's close to today's high. The distance from yesterday's close to today's low.
The +DI is then smoothed over the period specified, the same way as a simple moving average, and +DM is calculated as follows:
For up trending days, +DM = today's high - yesterday's high
For down trending days, +DM = zero
For inside days, +DM = zero
For outside days, if today's high - yesterday's high, is greater than yesterday's low- today's low, then +DM = today's high - yesterday's high, otherwise +DM = zero
For upwards gap days, +DM = today's high - yesterday's high
Роман пишет: Сразу в глаза кидается ATR - зачем оно там.
Роман, Я Вам уже три раза повторил причину. Существует ДВЕ формулы ADX И тот пример который я написал НЕ по той формуле которая в QUIK А по той формуле которая указана по ссылке
Иду на http://www.dinosaurtech.com/2007/average-directional-movement-index-adx-formula-in-c-2/ и смотрю код, и честно не вижу в алгоритме что бы был использован ATR - да он там есть как пример, но он не используется в коде, вы на код смотрите, в википедии тоже фигня может быть понаписана в формулах (кто их проверяет) - по результату сравнивайте, 2 + 2 = 4, но не как не 5 потому что там 2 + 2 !!!
Книгу деда Welles Wilder-а просмотрите, не где ATR нет, есть TR. И в целом зачем воду в сите тоскать, запустили индикатор - открыли ТА и сравниваем, если не подходят не к одному, значит не то, мы же не новую сверхновую выдумываем - нам нужно идентичный результат получить.
Ладно ну его в баню, там может быть косяк с чем угодно связан, учитывая что Луа с заплатками работает - там в сотые могут все сбить. Потом сяду сравню расчёт и ADX в ТА с самых основ и там уже найду в чём проблема.
Роман пишет: Ладно ну его в баню, там может быть косяк с чем угодно связан, учитывая что Луа с заплатками работает - там в сотые могут все сбить. Потом сяду сравню расчёт и ADX в ТА с самых основ и там уже найду в чём проблема.
Роман, "косяк" в том что существуют разные способы в расчета ADX Уже было сказано что в QUIK формула аналогична формуле в википедии. Если не верите википедии посмотрите другие сайты average-directional-index Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
p.s. так проблема в этом и есть что вашего способа реализации тоже нет, в википедии не написано где возведение в целое требуется, а где нет - если использовать LUA, я в принципе понял - если в формуле есть что то типа 100*.. нужно в Луа болты крутить.
Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
p.s. так проблема в этом и есть что вашего способа реализации тоже нет, в википедии не написано где возведение в целое требуется, а где нет - если использовать LUA, я в принципе понял - если в формуле есть что то типа 100*.. нужно в Луа болты крутить.
как известно - не являясь сторонником разработчиков НО! Честно говоря в данном вопросе согласен с ними: неужели Вам так жизненно принципиально совпадает ли квиковская модель индикаторов с Вашей или какой-то ещё? Торгуйте и рассчитывайте по своей. Выше Вам уже было в разных формулировках и с разных сторон сказано, что рынок - это не математическая модель, равно как и жизнь - не сухая математика.
Цитата
если в формуле есть что то типа 100*.. нужно в Луа болты крутить.
да без проблем - не нравится QLUA - есть C++/Delphi. Именно так и делались стандартные индикаторы в квике. А QLUA - это всего лишь интерфейсная обёртка.
p.s. помимо "стандартности" того или иного индикатора в квике - следует ещё учесть особенности их реализации - все "стандартные" индикаторы квика - находятся в qchart.dll - том самом, который их и отрисовывает. И, учитывая то, что он постоянно "допиливается" разработчиками - нисколько не удивительно, что на "стандартную" формулу индикатора накладывается ещё и особенности его отображения. Например, можно неудачно изменить алгоритм округления, константы пересчёта осей (алгоритм масштабирования) и уже даже стандартная формула будет врать (а точнее, врать её представление, т.е. интерфейс отображения). Что тоже не раз уже было высказано на полях этого форума и признано самими разработчиками.
Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
p.s. так проблема в этом и есть что вашего способа реализации тоже нет, в википедии не написано где возведение в целое требуется, а где нет - если использовать LUA, я в принципе понял - если в формуле есть что то типа 100*.. нужно в Луа болты крутить.
Роман, При чем тут LUA когда мы говорим о математике? Если считаете виноватым LUA воспроизведите формулу из википедии на excel увидите те же самые цифры.
Наша реализация аналогична реализации википедии, за исключением двух моментов, это умножение -M и +M на 100 и округление значений (ADX, +DI, -DI ) до целых
sam063rus пишет: неужели Вам так жизненно принципиально совпадает ли квиковская модель индикаторов с Вашей или какой-то ещё?
Это может быть принципиально, например, в том случае, если делается предварительное тестирование торгового алгоритма на исторических данных с использованием другой программы технического анализа, а уже затем этот алгоритм используется для торговли в Quik. Если показания индикатора в программе теханализа будут отличаться от показаний того же индикатора в Quik, то смысл такого тестирования на исторических данных во многом теряется.
Дмитрий пишет: Это может быть принципиально, например, в том случае, если делается предварительное тестирование торгового алгоритма на исторических данных с использованием другой программы технического анализа, а уже затем этот алгоритм используется для торговли в Quik. Если показания индикатора в программе теханализа будут отличаться от показаний того же индикатора в Quik, то смысл такого тестирования на исторических данных во многом теряется.
1. Это заведомо тупиковый путь. Без обсуждения. 2. Данные всегда будут отличаться и от этого никто и никогда не уйдёт бо как и системы разные и методы невсегда одинаковые, т.е. их представление и реализация. 3. Важно то, что если расхождение между системами на всём промежутке стремится к константе - то - это говорит о том, что системы действительно одинаковые и заявленный Вами выше пример - действительно имеет право на существование. Если: обе системы ведут себя без единой корреляции то и тестировать и применять ваш подход не имеет никакого смысла, равно как и пытаться найти "чудо-грааль" в виде пресловутой математической формулы индикатора из квика. 4. Если вся система построена и чувствительна к показанию всего лишь одного индикатора, а уж тем более дающего разные результаты (при одинаковом названии) на разных системах - то грошь ей цена. 5. старина Квик - уж как нам тут всем не хотелось - это не программа ТА, а только для связи с брокером: приём/отправка поручений/ну может "чонить" нарисовать свои "каракули"-индикаторы". Поэтому просить от него слишком много - врядли получится. Потому как пока ещё никому не удавалось построить такой терминал, чтоб имел возможности amisharp, wealthlab и при этом ещё и обрабатывал торговую информацию при том, что не "End of the day", а в реальном времени. Да ещё и был бесплатен. -------- Итого: если показания в целом коррелируют - то и нет смысла заморачиваться и пытаться "допиливать" под себя.
Роман пишет: закрытие, открытие - есть, добавьте ещё туда и все индикаторы размещённые на графике, если там есть закрытие, открытие, максимум, минимум, объем и EMA(14), то у пусть спрашивает к чему применить новый индикатор.
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
Добрый день. Подскажите как происходит масштабирование у индикатора MACD Histogram? Объясняю ситуацию, допустим инструмент срочного рынка SIU5, часовой график, время и цены закрытия за 09.07.2015: 10-00 - 58 354, 11-00 58 312, 12-00 58 387, 13-00 58 330, 14-00 58 086, 15-00 57956, 16-00 58 013 и т.д.. Теперь я хочу построить MACD Histogram в EXCEL с параметрами скользящее среднее (короткий период 1, длинный период 2, метод simple, поле цены close), сигнальная скользящая средняя(количество периодов 3, метод simple). Теперь считаю по формуле которая в программе
MACD Histogram = MACD – MACD Signal где MACD = MA(P, Nlong) – MA(P, Nshort), MA( P, Nlong) – средняя скользящая цены P за Nlong периодов (обычно 26), MA(P, Nshort) – средняя скользящая цены P за Nshort периодов (обычно 12), MACD Signal = MA( MACD, N) – «сигнальная линия», средняя скользящая от MACD за N периодов (обычно 9).
Nshort – количество интервалов в коротком периоде, Nlong – количество интервалов в длинном периоде.
Получается, 1) MA(P, Nlong) = (58354+58312)/2= 58 333, MA(P, Nshort)= 58 312, MACD =58 333 - 58312= 21, 2) MA(P, Nlong) = (58312+58387)/2= 58 349,5, MA(P, Nshort)= 58 387, MACD =58 349,5 - 58387= -37,5, 3)MA(P, Nlong) = (58387+58330)/2= 58 358,5, MA(P, Nshort)= 58 330, MACD =58 358,5 - 58330= 28,5 MACD Signal= (21-37,5+28,5)/3=4 MACD Histogram= 28,5-4=24,5 4) MA(P, Nlong) = (58330+58086)/2= 58 208, MA(P, Nshort)= 58 086, MACD =58 208 - 58086= 122 MACD Signal= (-37,5+28,5+122)/3=37,667 MACD Histogram= 128-37,667=90,333 и т . д . В программе QUIK выдает значения при аналогичных параметрах MACD Histogram следующие результаты (время, результат): 1) на 13-00 -0,04198 (а по моим расчетам получается 24,5) 2) на 14-00 -0,144873(а по моим расчетам 90,333). Как привести в аналогичное соответствие значение по цифре и знаку («-», «+»)? Где у меня ошибка в расчетах либо чего у меня не хватает?
Константин 1 пишет: Добрый день. Подскажите как происходит масштабирование у индикатора MACD Histogram? Объясняю ситуацию, допустим инструмент срочного рынка SIU5, часовой график, время и цены закрытия за 09.07.2015: 10-00 - 58 354, 11-00 58 312, 12-00 58 387, 13-00 58 330, 14-00 58 086, 15-00 57956, 16-00 58 013 и т.д.. Теперь я хочу построить MACD Histogram в EXCEL с параметрами скользящее среднее (короткий период 1, длинный период 2, метод simple, поле цены close), сигнальная скользящая средняя(количество периодов 3, метод simple). Теперь считаю по формуле которая в программе
MACD Histogram = MACD – MACD Signal где MACD = MA(P, Nlong) – MA(P, Nshort) , MA( P, Nlong) – средняя скользящая цены P за Nlong периодов (обычно 26), MA(P, Nshort) – средняя скользящая цены P за Nshort периодов (обычно 12), MACD Signal = MA( MACD, N) – «сигнальная линия», средняя скользящая от MACD за N периодов (обычно 9).
Nshort – количество интервалов в коротком периоде, Nlong – количество интервалов в длинном периоде.
Получается, 1) MA(P, Nlong) = (58354+58312)/2= 58 333, MA(P, Nshort)= 58 312, MACD =58 333 - 58312= 21, 2) MA(P, Nlong) = (58312+58387)/2= 58 349,5, MA(P, Nshort)= 58 387, MACD =58 349,5 - 58387= -37,5, 3) MA(P, Nlong) = (58387+58330)/2= 58 358,5, MA(P, Nshort)= 58 330, MACD =58 358,5 - 58330= 28,5 MACD Signal= (21-37,5+28,5)/3=4 MACD Histogram= 28,5-4=24,5 4) MA(P, Nlong) = (58330+58086)/2= 58 208, MA(P, Nshort)= 58 086, MACD =58 208 - 58086= 122 MACD Signal= (-37,5+28,5+122)/3=37,667 MACD Histogram= 128-37,667=90,333 и т . д . В программе QUIK выдает значения при аналогичных параметрах MACD Histogram следующие результаты (время, результат): 1) на 13-00 -0,04198 (а по моим расчетам получается 24,5) 2) на 14-00 -0,144873(а по моим расчетам 90,333). Как привести в аналогичное соответствие значение по цифре и знаку («-», «+»)? Где у меня ошибка в расчетах либо чего у меня не хватает?
Небольшие исправления MACD Histogram= 122-37,667=84,333 и т . д .
Константин, у нас есть подробный расчет данного индикатора в Excel. Вы можете нам написать письмо quiksupport@arqatech.com и запросить расчет. Далее подставите в формулы свои значения и проверите расчет. Расчет индикатора MACD Histogram нами проверялся и ошибок обнаружено не было.
Сначала вычисляются значения MA(P,Nshort) и MA(P,NLong) на основе графика цены, при этом для расчета берутся значения начиная с самого первого на графике. Далее, вычисляются значения индикатора MACD, для расчета берутся значения MA(P,Nshort) и MA(P,NLong). Первое значение для этого индикатора берется равным, NLong по счету разнице между MA(P,Nshort) и MA(P,NLong). После этого, вычисляется MACD Signal. Это значение, так же как и MACD, начинает рассчитываться с NLong по счету значения, но на индикаторе он начинает отображаться начиная с NSignal (Количество периодов для MACD Signal) по счету значения относительно первого значения MACD (или, если считать от начала, то это значение будет (NLong+NSignal-1) по счету) Последним вычисляется MACD Histogram. Первое значение на индикаторе будет таким же по счету как и MACD Signal.
Роман пишет: Да, зарегистрируйте пожалуйста. Хотя бы что бы была возможность делать по функционалу как стандартные индикаторы, ЕМА применить к другому ЕМА или другому индикатору.
И ещё если возможно зарегистрируйте пожелание, что бы в стандартных индикаторах был чистый ADX (без всяких сглаживаний) и два самых распространённых индикатора, Нахождение High и Low за N период, там есть каналы - но толку от них ...
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
Старатель написал: Зарегистрируйте также, чтобы функцию getDataSourceInfo() можно было использовать в Settings
Добрый день,
Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что пожелание отклонено по причине того, что оно не соответствует текущей концепции развития данного ПО.
Здравствуйте! Подскажите, пожалуйста, как рассчитывается экспоненциальная скользящая средняя в Квике.
В справке к Квику есть формула: EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1), где Pi - значение цены в текущем периоде, EMAi - значение EMA текущего периода, EMAi-1 - значение EMA предыдущего периода Начальное значение равно параметру, по которому рассчитывается индикатор: EMA0=P0 – при расчете по цене
Пробую рассчитать ЕМА (для упрощения проверки возьмем кол-во периодов = 2) для Сбербанка, 5 мин., время: 29.06.16 18:20: Для расчета ЕМА с такими параметрами понадобятся: 1) Значение предыдущей ЕМА. Т.к. значение предыдущей ЕМА в нашем случае является начальным значением, то EMAi-1 = 133,65 (значение цены закрытия в 18:15); 2) Значение текущей цены. Pi = 133,82 (значение цены закрытия в 18:20). Рассчитываем текущую ЕМА (29.06.16 18:20): EMAi = (EMAi-1*(n-1)+2*Pi) / (n+1) EMAi = (133,65*(2-1)+2*133,82) / (2+1) = (133,65 + 267,64) / 3 = 133,763333. В Квике текущая ЕМА (29.06.16 18:20) = 133,745581.
Vesa написал: 1) Значение предыдущей ЕМА. Т.к. значение предыдущей ЕМА в нашем случае является начальным значением, то EMAi-1 = 133,65 (значение цены закрытия в 18:15);
Скорее всего проблема именно в этом. Вы правильно говорите что для расчета EMA нужно его предыдущее значение. Но от куда Вы взяли что предыдущее EMA в 18:15 будет именно EMAi-1 = 133,65 (значение цены закрытия в 18:15)?? Ведь на 5 минутном таймфрейме сбербанка куда более чем 2 свечки. Даже если у Вас отключена история на графике, в 18:20 Вы никак не получите 2 свечки.
Для расчета EMA нужно его предыдущее значение EMAi-1. А для расчета этого предыдущего значения нужно его предыдущее EMAi-2 и так далее пока график не кончится.
и только самое самое левое значения графика цены и будет тем самым EMA0=P0 на 5 минутном таймфрейме сбербанка, это примерно 19 мая 2016г, а когда торги начнутся это будет уже другая свечка.
Sergey Gorokhov написал: Скорее всего проблема именно в этом. Вы правильно говорите что для расчета EMA нужно его предыдущее значение.
Нет, проблема не в этом.
Классический ADX считается с усреднением Wilders, как описано в его книге "New Concepts in Technical Trading Systems". Ваш считается по экспоненте. В итоге результаты отличаются, как гопак от балета. И что печально, системы, разработанные на ADX в том же метастоке, нельзя применять в квике.
Сделайте второй индикатор, ADX Classic, пожалуйста. Зарегистрируйте это пожелание, будьте добры.
И вам давно бы пора устроить на сайте модерируемый магазин скриптов и индикаторов на Lua, а то всё как на коленке.
Sergey Gorokhov написал: Скорее всего проблема именно в этом. Вы правильно говорите что для расчета EMA нужно его предыдущее значение.
Нет, проблема не в этом.
Классический ADX считается с усреднением Wilders, как описано в его книге "New Concepts in Technical Trading Systems". Ваш считается по экспоненте. В итоге результаты отличаются, как гопак от балета. И что печально, системы, разработанные на ADX в том же метастоке, нельзя применять в квике.
Сделайте второй индикатор, ADX Classic, пожалуйста. Зарегистрируйте это пожелание, будьте добры.
И вам давно бы пора устроить на сайте модерируемый магазин скриптов и индикаторов на Lua, а то всё как на коленке.
Здравствуйте!
Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Shaggy, Добрый день, Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.