Индикаторы

Страницы: Пред. 1 2 3 След.
RSS
Индикаторы
 
Все должно работать тютелька в тютельку, если что то не работает, значит где то не допилили - если не долинно, а так можно и пальцами в небо тыкать - будет такой же результат.

Так по поводу формулы (первой и с учётом WMA) - в чём там там косяк правильно ли я рассчитал, потому что короткий вариант и WMA - пустая выводится.
 
http://www2.wealth-lab.com/WL5Wiki/ADX.ashx

Цитата
ADX is equivalent to the Wilder's moving average (see WilderMA) of the direction movement (DX) over the specified Period.
 
Цитата
Роман пишет:
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 пишет:
В общем, как я понял, если речь идёт об индексах - то у всех будут разные данные, а значит и индикаторы будут показывать абсолютно разное.
Это обсуждалось много раз.
https://forum.quik.ru/messages/forum13/message4543/topic503/#message4543
 
Этот код немного отличается о того что я сделал, в преобразовании в целое round - упоминаний об этом не встречал не где.

А что касается, проблем с отличием, в том же форуме - парни пишут о том что в одном из ТА применяется сглаживание по дедушки Виллиямса.
По многомерной формуле (  (AdmMinus[index-1] + ((period-1)/period)) + (DeltaHigh + (1/period)) )  сгладить у меня не получилось, не знаю почему, счас попробую WMA линейно применить.
 
Самое интересное что этот вариант с EMA, отличается от графика ADX Квика.  :)
 
главное, чтоб это помогло Вам зарабатывать...))
 
Вот со всеми вариантами: http://notepad.cc/smaijihe18 - не выходит, я не знаю как у вас в КВИКе расчёт выводит.
 
 Точней здесь: http://shorttext.com/64aaea9a , Sergey Gorokhov- теперь только от вас жду ответ, где Квик расчёт дёргает не знаю.
 
з.ы. Сергей и ваш код, совсем не похож на тот алгоритм который описан: https://forum.quik.ru/messages/forum13/message4707/topic461/#message4707
 
Цитата
Роман пишет:
Самое интересное что этот вариант с EMA, отличается от графика ADX Квика.
Вам явно и не двусмысленно было сказано, что тот код который я привел воспроизводит ту формулу которую Вы привели.
Эта формула НЕ такая как в QUIK о чем также было явно сказана.
Так что причин удивляться тому что этот индикатор НЕ такой как в QUIK совершенно нет.
Так как именно об этом и идет разговор последние 20 постов.

Цитата
Роман пишет:
Этот код немного отличается о того что я сделал, в преобразовании в целое round - упоминаний об этом не встречал не где.
Округление было добавлено по моей личной инициативе в процессе исследования.
Если оно Вам мешает, не вопрос просто выключите его:
Round = "-1",

Цитата
Роман пишет:
Вот со всеми вариантами: http://notepad.cc/smaijihe18 - не выходит
Поясните что именно не выходит?
Цитата
Роман пишет:
я не знаю как у вас в КВИКе расчёт выводит.
Я Вам уже приводил формулу
Еще раз дублирую
Система_направленного_движения
 
Цитата
Роман пишет:
з.ы. Сергей и ваш код, совсем не похож на тот алгоритм который описан: https://forum.quik.ru/messages/forum13/message4707/topic461/#message4707
Роман,
Гигантская просьба читайте посты внимательнее,
Я воспроизвел Вашу формулу по ссылке
Цитата
Роман пишет:
В общем не правильно у вас индюк рассчитывается.

Есть два вида ADX

1. на EMA - он же на финаме, у вас не верный
2. на WMA - он же в wealth lab

http://www.dinosaurtech.com/2007/average-directional-movement-index-adx-formula-in-c-2/

вот этот вариант EMA работает и в точности как на финаме, а вот под WMA - ячто то не понял как его подкрутить, посоветуйте ...
Цитата
Sergey Gorokhov пишет:

Эта формула НЕ такая как в QUIK о чем также было явно сказано.
Так что причин удивляться тому что этот индикатор НЕ такой как в QUIK совершенно нет.
Так как именно об этом и идет разговор последние 20 постов.
 
Еще раз повторяю
В QUIK индикатор ADX считается по формуле
Система_направленного_движения

Тот пример который я привел рассчитывает данне по ДРУГОЙ формуле
average-directional-movement-index-adx-formula-in-c-2

Это две РАЗНЫЕ формулы
Их сравнение обсуждалось тут:
mql4

и они приведены еще тут:
average-directional-index
 
Цитата
Там разница слишком большая и видна не вооружённым глазом даже дивергенция. Индекс или котировки акции - все разно боком показывают.

Поэтому большая просьба, кто нибудь, сбросьте на 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)


На сайте написано так:


у меня так:
Код
   
--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)
--где для 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)

В общем, я не вижу различий.
 
 
Сразу в глаза кидается ATR - зачем оно там.

Вот я нашёл описание wealth lab

Цитата


where,
DI+ = DIPlus
TR =

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:
  1. For up trending days, +DM = today's high - yesterday's high
  2. For down trending days, +DM = zero
  3. For inside days, +DM = zero
  4. 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
  5. For upwards gap days, +DM = today's high - yesterday's high
  6. For downwards gap days, +DM = zero
DI+ = Round( ( +DM / TR ) * 100 )
DI- = Round( ( -DM / TR ) * 100 )

DX = Round( 100 * |DIPlus - DIMinus| / |DIPlus + DIMinus| )

ADX is equivalent to the Wilder's moving average (see WilderMA) of the direction movement (DX) over the specified Period.
 
Цитата
Роман пишет:
Сразу в глаза кидается ATR - зачем оно там.
Роман,
Я Вам уже три раза повторил причину.
Существует ДВЕ формулы ADX
И тот пример который я написал НЕ по той формуле которая в QUIK
А по той формуле которая указана по ссылке
Цитата
Sergey Gorokhov пишет:
average-directional-movement-index-adx-formula-in-c-2
И там расчет ведется с учетом ATR
Это значит что Ваше утверждение
Цитата
Роман пишет:
если вы с c# взяли как пример для выше приведённого кода то у вас он получился не так в том коде.
является ложным

Большая просьба внимательно читать то о чем Вам пишут
 
Иду на 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 в ТА с самых основ и там уже найду в чём проблема.
 
Цитата
Роман пишет:
и честно не вижу в алгоритме что бы был использован ATR

Смотрите внимательней
Код
            double a = (double)2 / (double)(calc.ADXPeriod + 1);

            sig.AverageTrueRange = sig.TrueRange * a +

                symbolHistory[timePeriod][symbolHistory[timePeriod].Count – 2].AverageTrueRange * (1 – a);
 
Цитата
Роман пишет:
Ладно ну его в баню, там может быть косяк с чем угодно связан, учитывая что Луа с заплатками работает - там в сотые могут все сбить.
Потом сяду сравню расчёт и ADX в ТА с самых основ и там уже найду в чём проблема.
Роман, "косяк" в том что существуют разные способы в расчета ADX
Уже было сказано что в QUIK формула аналогична формуле в википедии.
Если не верите википедии посмотрите другие сайты average-directional-index
Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на LUA
 
Цитата
Sergey Gorokhov пишет:
"косяк" в том что существуют разные способы в расчета ADX
Наконец-то действительно правильный ответ. Полностью согласен, бо как даже сами создатели индикаторов подчас трактуют его работу по-разному.

Цитата
Если считаете наш выбор одного из способов не правильным, выберете свой и реализуйте его на 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 период, там есть каналы - но толку от них ...
Добрый день,

Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам, что реализация пожелания признана потенциально целесообразной. Если по результатам дальнейшего анализа, включающего юридические аспекты, анализ на непротиворечивость с общей политикой компании, никаких возражений не возникнет, мы постараемся включить Ваше пожелание в план доработок при выпуске одной из следующих версий нашего ПО.
 
Цитата
Sergey Gorokhov написал:
И ещё если возможно зарегистрируйте пожелание, что бы в стандартных индикаторах был чистыйADX (без всяких сглаживаний)
Добрый день,
   
    Ваше пожелание было реализовано в версии 7.1.0 терминала QUIK.
 
Цитата
Старатель написал:
Зарегистрируйте также, чтобы функцию 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г, а когда торги начнутся это будет уже другая свечка.
 
Значение предыдущей ЕМА. не есть (значение цены закрытия в 18:15)
текущее  EMA рассчитывается с учетом всех предыдущих цен, а не двух.
 
к слову говоря, если интересует расчет в LUA, пример есть по ссылке:
Все индикаторы на LUA
 
Понял. Большое спасибо!
 
Цитата
Sergey Gorokhov написал:
Скорее всего проблема именно в этом.
Вы правильно говорите что для расчета EMA нужно его предыдущее значение.
Нет, проблема не в этом.

Классический ADX считается с усреднением Wilders, как описано в его книге "New Concepts in Technical Trading Systems". Ваш считается по экспоненте. В итоге результаты отличаются, как гопак от балета. И что печально, системы, разработанные на ADX в том же метастоке, нельзя применять в квике.

Сделайте второй индикатор, ADX Classic, пожалуйста. Зарегистрируйте это пожелание, будьте добры.

И вам давно бы пора устроить на сайте модерируемый магазин скриптов и индикаторов на Lua, а то всё как на коленке.
 
Цитата
Shaggy написал:
Цитата
Sergey Gorokhov   написал:
Скорее всего проблема именно в этом.
Вы правильно говорите что для расчета EMA нужно его предыдущее значение.
Нет, проблема не в этом.

Классический ADX считается с усреднением Wilders, как описано в его книге "New Concepts in Technical Trading Systems". Ваш считается по экспоненте. В итоге результаты отличаются, как гопак от балета. И что печально, системы, разработанные на ADX в том же метастоке, нельзя применять в квике.

Сделайте второй индикатор, ADX Classic, пожалуйста. Зарегистрируйте это пожелание, будьте добры.

И вам давно бы пора устроить на сайте модерируемый магазин скриптов и индикаторов на Lua, а то всё как на коленке.
Здравствуйте!

Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
 
Shaggy,      Добрый день,
    Мы рассмотрели Ваше пожелание. По итогам его анализа сообщаем Вам,     что реализация пожелания признана потенциально целесообразной. Если     по результатам дальнейшего анализа, включающего юридические аспекты,     анализ на непротиворечивость с общей политикой компании, никаких     возражений не возникнет, мы постараемся включить Ваше пожелание в     план доработок при выпуске одной из следующих версий нашего ПО.
 
подскажите, как индикатор bw mfi сделать 4-х цветным, как написано у била вильямса.
 
Цитата
222333 написал:
подскажите, как индикатор bw mfi сделать 4-х цветным, как написано у била вильямса.

Здравствуйте,
К сожалению штатный индикатор нельзя раскрасить.
Воспользуйтесь индикаторами на Lua
Все индикаторы на Lua

нужный индикатор в файле BWMFI.lua
Там гистограмма раскрашена.
 
Цитата
Sergey Gorokhov написал:
Цитата
222333   написал:
подскажите, как индикатор bw mfi сделать 4-х цветным, как написано у била вильямса.
Здравствуйте,
К сожалению штатный индикатор нельзя раскрасить.
Воспользуйтесь индикаторами на Lua
Все индикаторы на Lua

нужный индикатор в файле BWMFI.lua
Там гистограмма раскрашена.
Огромное спасибо!
 
Цитата
Sergey Gorokhov написал:
Цитата
222333   написал:
подскажите, как индикатор bw mfi сделать 4-х цветным, как написано у била вильямса.
Здравствуйте,
К сожалению штатный индикатор нельзя раскрасить.
Воспользуйтесь индикаторами на Lua
Все индикаторы на Lua

нужный индикатор в файле BWMFI.lua
Там гистограмма раскрашена.
222333,
Страницы: Пред. 1 2 3 След.
Читают тему
Наверх