[code=php]
string aMASets[];
[/code]
Строковой массив-хранилище настроек скользящих средних.
Настройки средних хранятся в специальной форматной строке.
Пример такой строки: "@p21@m1@ap0@syEURUSD@sh1"
где
@p - период средней,
@m - метод расчета средней
@ap - цена для расчета средней
@sy - инструмент (валютная пара) для расчета средней
@sh - сдвиг от начала графика для получения цены средней.
Очень интересно. Огромное спасибо автору. насчет пожеланий - было бы интересно нечто аналогичное iMA.mqh для Стохастика. Желательно - с возможностью настройки всех параметров.
Возвращает цену скользящей средней по заданному индексу в массиве настроек и индексу бара.
[code=php]
double iMA_getByHandle(int handle=0, int shift=-1, int d=0){
/**
\version 0.0.0.2
\date 2013.06.27
\author Morochin Artiom
\details Возвращает цену скользящей средней по заданному индексу в массиве настроек и индексу бара.
\internal
>Hist:
@0.0.0.2@2013.06.27@artamir [] iMA_getByHandle
@0.0.0.1@2013.05.20@artamir [] iMA_getByHandle
>Rev:0
*/
int p = Struc_KeyValue_int(aMASets[handle], "@p");
int mode = Struc_KeyValue_int(aMASets[handle], "@m");
int ap = Struc_KeyValue_int(aMASets[handle], "@ap");
string sy = Struc_KeyValue_string(aMASets[handle], "@sy");
int sh = shift;
if(sh<=-1){
sh = Struc_KeyValue_int(aMASets[handle], "@sh");
}
double ma = iMA(sy,0,p,0,mode,ap,sh);
ma = Norm_symb(ma, "", d);
return(ma);
}
[/code]
Вычисляет если лоу бара по смещению shift было ниже ма на том же баре, а мин(закрытие/открытие)
бара было выше ма.
[code=php]
bool iMA_isPinAbove(int handle=0, int shift=0, int level_pip=50){
/**
\version 0.0.0.0
\date 2013.05.20
\author Morochin Artiom
\details Вычисляет если лоу бара по смещению shift было ниже ма на том же баре, а мин(закрытие/открытие)
бара было выше ма.
\internal
>Hist:
>Rev:0
*/
Вычисляет если хай бара по смещению shift было выше ма на том же баре, а мин(закрытие/открытие)
бара было ниже ма.
[code=php]
bool iMA_isPinBelow(int handle=0, int shift=0, int level_pip=50){
/**
\version 0.0.0.0
\date 2013.05.20
\author Morochin Artiom
\details Вычисляет если хай бара по смещению shift было выше ма на том же баре, а мин(закрытие/открытие)
бара было ниже ма.
\internal
>Hist:
>Rev:0
*/
Возвращает значение средней для заданного периода и смещения по текущему таймфрейму
[code=php]
double iMA_getMA(int per = 21, int shift = 0, int d = 0, int ty = MODE_EMA){
/*
>Ver : 0.0.5
>Date : 2012.08.30
>Hist:
@0.0.5@2012.08.30@artamir []
@0.0.4@2012.08.03@artamir [*] изменение в поведении переменной d
@0.0.3@2012.08.03@artamir []
>Description: Возвращает значение ЕМА для заданного
периода и смещения по текущему таймфрейму
>VARS:
per = период МА
shift = номер бара для расчета МА
d = число добавляемых знаков после запятой к текущему инструменту.
*/
//===============================================
double ma = iMA(Symbol(), 0, per, 0, ty, 0, shift);
ma = Norm_symb(ma, "", d);
//===============================================
return(ma);
}
[/code]
Возвращает номер бара последнего пересечения быстрой и медленной средней на текущем инструменте, по текущему таймфрейму
[code=php]
int iMA_getLastCrossBar(int f_per = 5, int s_per = 21, int start = 1, int ty = MODE_EMA){
/*
Ver: 0.0.2
Date: 2013.02.14
Author: artamir
Description: Возвращает номер бара последнего пересечения быстрой
и медленной ЕМА на текущем инструменте, по текущему
таймфрейму
VARS:
f_per = период быстрой ЕМА
s_per = период медленной ЕМА
start = номер бара, с которого начинается расчет в сторону увеличения номеров баров.
*/
Возвращает true, если заданная цена выше цены EMA с заданным периодом и на заданном баре
[code=php]
bool iMA_isPriceAbove(int per, double pr, int shift = 0, int ty = MODE_EMA){
/*
>Ver : 0.0.1
>Date : 2012.11.14
>Hist :
@0.0.1@2012.11.14@artamir []
>Author : Morochin Artiom
>Desc : Возвращает true, если заданная цена
выше цены EMA с заданным периодом
и на заданном баре
>VARS : per - период ЕМА
pr - значение цены для проверки
shift - индекс бара, для которого проверяется
положение заданной цены относительно ЕМА
*/
bool res = false;
double ma = iMA_getMA(per, shift, 0, ty);
Возвращает true, если заданная цена ниже цены EMA с заданным периодом и на заданном баре
[code=php]
bool iMA_isPriceUnder(int per, double pr, int shift = 0, int ty = MODE_EMA){
/*
>Ver : 0.0.1
>Date : 2012.11.14
>Hist :
@0.0.1@2012.11.14@artamir []
>Author : Morochin Artiom
>Desc : Возвращает true, если заданная цена
ниже цены EMA с заданным периодом
и на заданном баре
>VARS : per - период ЕМА
pr - значение цены для проверки
shift - индекс бара, для которого проверяется
положение заданной цены относительно ЕМА
*/
bool res = false;
double ma = iMA_getMA(per, shift, 0, ty);
Возвращает true если на предыдущем баре до бара с заданным номером быстрая EMA была ниже медленной EMA
[code=php]
bool iMA_isCrossUp(int per_f = 5, int per_s = 21, int cb = -1){
/*
>Ver : 0.0.2
>Date : 2012.11.15
>Hist :
@0.0.2@2012.11.15@artamir []
@0.0.1@2012.11.14@artamir []
>Author : Morochin Artiom
>Desc : Возвращает true если на предыдущем баре
до бара с заданным номером быстрая EMA
была ниже медленной EMA
*/
Возвращает true если на предыдущем баре до бара с заданным номером быстрая EMA была выше медленной EMA
[code=php]
bool iMA_isCrossDw(int per_f = 5, int per_s = 21, int cb = -1){
/*
>Ver : 0.0.4
>Date : 2013.02.19
>Hist :
@0.0.2@2012.11.15@artamir []
@0.0.1@2012.11.14@artamir []
>Author : Morochin Artiom
>Desc : Возвращает true если на предыдущем баре
до бара с заданным номером быстрая EMA
была выше медленной EMA
*/
Определяет, если заданная цена находится между ценами скользящих средних на заданном баре
[code=php]
bool iMA_isPriceBetween2Ma(int per_f, int per_s, double pr, int shift = 0, int ty = MODE_EMA){
/*
>Ver : 0.0.1
>Date : 2013.02.14
>Hist :
>Author : Morochin Artiom
>Desc : Определяет, если заданная цена находится между ценами скользящих средних на заданном баре
*/