Приветствую!
Пока есть немного времени я хочу поговорить о ещё одной возможности индикации флэта.
У RSI есть одна интересная особенность: чем больше волатильность, тем меньше мгновенное значение движения RSI. И, соответственно, наоборот.... что даёт нам возможность получить индикатор мгновенного флэта.
Итак, начнём...
Это будет просто вывод сообщения о том, что "Индикатор мгновенного флэта" показывет вероятность флэта.
Будут пять внешних параметров:
[MQL]
extern double РазмерФлэта=3.0; // проверочная значение шага RSI
extern int ПериодФлэта=10; // период для расчёта RSI
extern color ЦветФлэта=Yellow; // цвет вывода надписи
extern int КоординатаX=400; // координаты вывода надписи
extern int КоординатаY=0;
// нам нужна одна переменная, которая бы хранила прошлое значение
static double OldValue;
[/MQL]
Собственно никаких идикаторов нет... просто будет выводиться надпись о том, что RSI сигналит о возможном флэте.
Создаём эту надпись и временно убираем с экрана:
[MQL]
int init() {
ObjectCreate("FlatSig",OBJ_LABEL,0,0,0);
ObjectSet("FlatSig",OBJPROP_XDISTANCE,1000);
ObjectSet("FlatSig",OBJPROP_YDISTANCE,1000);
ObjectSetText("FlatSig","ФЛЭТ!",14,"Arial Cyr",ЦветФлэта);
return(0);
}
int deinit() {
ObjectDelete("FlatSig");
ObjectDelete("HalfLine");
Comment(" ");
return(0);
}
// эта функция показывает надпись
void Make() {
ObjectSet("FlatSig",OBJPROP_XDISTANCE,КоординатаX);
ObjectSet("FlatSig",OBJPROP_YDISTANCE,КоординатаY);
}
// эта функция прячет надпись
void Del() {
ObjectSet("FlatSig",OBJPROP_XDISTANCE,1000);
ObjectSet("FlatSig",OBJPROP_YDISTANCE,1000);
}
int start() {
double NewValue = iRSI(NULL,0,ПериодФлэта,PRICE_CLOSE,0);
double CurFlat = MathAbs(NewValue - OldValue);
Comment("Флэт="+ CurFlat);
if (CurFlat > РазмерФлэта || CurFlat == 0) {
Make();
} else {
Del();
}
OldValue = NewValue;
}
[/MQL]
Вот, собственно, и всё...
При подозрении на флэт будет выводиться надпись "ФЛЭТ!", а в месте коментария будет выведено расчётное значение.
Для каждого инструмента, таймфрэйма и ДЦ значения мгновенного флэта будут разные и тут нужно поработать с индикатором, чтобы найти нужные значения. Но, как я думаю, это стоит того....
Я широко пользуюсь этим индикатором.
Как только начинает мигать (или горит постоянно) надпись "ФЛЭТ!", значит будет флэт. Если сначала уровень был высок, затем снизился (надпись исчезла), а потом опять появилась - сужающийся флэт,.... если сначала высокий, затем низкий, затем опять высокий, то тут можно ждать расширяющегося флэта...
Вариантов очень много, но, к сожалению, на каждом инструменте, таймфрэйме и ДЦ они разные.