Напишем функцию, которая будет возвращать сигнал к торговле по описанным выше правилам.
- Код: выделить все
string f_2MASygF1(int tf, int pef, int pes, int mef, int mes, int apf, int aps, int dy)
/*
Ф-ия определяет сигнал по пересечению быстрой МАшкой полосу вокруг
медленной МАшки (на последнем закрытом баре)
возвращает "BU" если быстрая МА пересекла вверх верхнюю границу полосы медленной МА
возвращает "SE" если быстрая МА пересекла вниз нижнюю границу полосы медленной МА
возвращает "NO" если нет пересечения
Параметры:
tf - таймфрейм (0 - текущий ТФ)
pef - период быстрой МАшки
pes - период медленной МАшки
mef - метод усреднения быстрой МАшки
mes - метод усреднения медленной МАшки
apf - тип цены быстрой МАшки
aps - тип цены медленной МАшки
dy - отступ от медленной МАшки вверх и вниз для определения полосы (пнт.)
Comment("\n", " Значение верхней полосы на прошлом баре = ", dblMAS_H1,
"\n", " Значение нижней полосы на прошлом баре = ", dblMAS_L1);
*/
{
double dblMAF_1, // значение быстрой MA на предыдущем баре
dblMAF_2, // значение быстрой MA два бара назад
dblMAS_H1, // значение верхней полосы от медленной MA на предыдущем баре
dblMAS_H2, // значение верхней полосы от медленной MA два бара назад
dblMAS_L1, // значение нижней полосы от медленной MA на предыдущем баре
dblMAS_L2; // значение нижней полосы от медленной MA два бара назад
dblMAF_1 = iMA(NULL, tf, pef, 0, mef, apf, 1);
dblMAF_2 = iMA(NULL, tf, pef, 0, mef, apf, 2);
dblMAS_H1 = NormalizeDouble(iMA(NULL, tf, pes, 0, mes, aps, 1) + dy * Point, _Digits);
dblMAS_H2 = NormalizeDouble(iMA(NULL, tf, pes, 0, mes, aps, 2) + dy * Point, _Digits);
dblMAS_L1 = NormalizeDouble(iMA(NULL, tf, pes, 0, mes, aps, 1) - dy * Point, _Digits);
dblMAS_L2 = NormalizeDouble(iMA(NULL, tf, pes, 0, mes, aps, 2) - dy * Point, _Digits);
if(dblMAF_1 > dblMAS_H1 && dblMAF_2 < dblMAS_H2) return("BU");
if(dblMAF_1 < dblMAS_L1 && dblMAF_2 > dblMAS_L2) return("SE");
return("NO");
}
Функция
f_2MASygF1 возвращает результат типа
string в виде:
- возвращает "BU" если быстрая МА пересекла вверх верхнюю границу полосы медленной МА;
- возвращает "SE" если быстрая МА пересекла вниз нижнюю границу полосы медленной МА;
- возвращает "NO" если нет пересечения.
В качестве
параметров для передачи в функцию используются:
tf - таймфрейм (0 - текущий ТФ)
pef - период быстрой МАшки
pes - период медленной МАшки
mef - метод усреднения быстрой МАшки
mes - метод усреднения медленной МАшки
apf - тип цены быстрой МАшки
aps - тип цены медленной МАшки
dy - отступ от медленной МАшки вверх и вниз для определения полосы (пнт.)
Последний параметр в списке (dy) как раз и будет определять значение уровней отложенных от медленной МАшки для формирования необходимой ширины полосы.