Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2624

 
Aleksei Stepanenko #:
Вроде как Ма2[1]=Ма1[0]=сумма последних Ма1 / период
    Сделал вывод в лог (М - машка обычная, S - она же, но со "сдвигом средней" = -1):
EURUSD,M15: M[4]=1.14110, M[3]=1.14133, M[2]=1.14121, M[1]=1.14107
EURUSD,M15: S[4]=1.14133, S[3]=1.14121, S[2]=1.14107, S[1]=1.14110

    Но что-то не сходится:
(M[2] + M[1])/15 = (1.14121 + 1.14107)/15 = 0,152152 != 1.14110 (S[1])
 
Maxim Kuznetsov #:

смотря что считать сдвигом ;-)

если под сдвигом имеется в виде то-же что в индикаторе:

то MA1[x] = MA2[x]

то есть сдвиг сугубо визуальный и про него надо просто помнить

Речь про 4-й параметр функции iMA(), который в документации называется "сдвиг средней".
 
Oleg K #:
    Сделал вывод в лог (М - машка обычная, S - она же, но со "сдвигом средней" = -1):
EURUSD,M15: M[4]=1.14110, M[3]=1.14133, M[2]=1.14121, M[1]=1.14107
EURUSD,M15: S[4]=1.14133, S[3]=1.14121, S[2]=1.14107, S[1]=1.14110

    Но что-то не сходится:
(M[2] + M[1])/15 = (1.14121 + 1.14107)/15 = 0,152152 != 1.14110 (S[1])

Возможно, я не так Вас понял.

Для простоты возьму период = 3.

(M[3] + M[2] + M[1])/3 = (1.14133 + 1.14121 + 1.14107)/3 = 1,14120(3) != 1.14110 (S[1])

Т.е. близко, но ведь не равно.


Да и формула - не универсальная. Представьте, что сдвиг - не -1, а уже -2 или больше. В 

этом разе непонятно, как считать S[1].
 
Если период 15, то нужно складывать 15 цен, а не 2
 
Во втором варианте Вы сравниваете среднюю с последней ценой, а нужно сравнивать со значением второй средней на нулевом баре
 
Не правильно сказал, Вы делаете среднюю от первой средней и сравниваете со второй средней. 

Если у Вас сдвиг на один бар, то каждое значение Ма1 должно быть равно значению Ма2 на предыдущем баре. Тут другого не дано
 
Oleg K #:
Речь про 4-й параметр функции iMA(), который в документации называется "сдвиг средней".

просто не надо самого себя сбивать и использовать этот параметр. Возьмите за правило, он всегда 0

нужный сдвиг получайте добавляя цифру к индексу баров 

 
Maxim Kuznetsov #:

просто не надо самого себя сбивать и использовать этот параметр. Возьмите за правило, он всегда 0

нужный сдвиг получайте добавляя цифру к индексу баров 

Это, я так полагаю, возможно, пока сдвиг средней - отрицательный. А если - положительный, как в Аллигаторе, например, то вряд ли совет применим.
 
Aleksei Stepanenko #:
Не правильно сказал, Вы делаете среднюю от первой средней и сравниваете со второй средней. 

Если у Вас сдвиг на один бар, то каждое значение Ма1 должно быть равно значению Ма2 на предыдущем баре. Тут другого не дано

Нарисую, чтобы было понятнее:

Shifted: 2  1  ?
             \\  \\  X
Normal:   3  2  1

Легенда: \\ - знак равенства, X - знак неравенства.

Т.е. на рисунке - индексы массива, а сравнение относится, конечно же, к значениям, находящихся по адресу этих индексов.


На месте вопросительного знака в МТ4-индикаторе - есть осмысленное значение. Я всего лишь хотел бы знать, как оно вычисляется.

 
Oleg K #:
Это, я так полагаю, возможно, пока сдвиг средней - отрицательный. А если - положительный, как в Аллигаторе, например, то вряд ли совет применим.

без разницы.

MA считается из глубины истории до актуального бара. И только потом для визуальности её двигают вправо-влево. 

Например в индикаторном буфере MA, 0 - всегда самый правый бар, вне зависимости от параметра shift