![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Индикатор тиковый !!!!!!!!!!!!
Можно ли добавить дополнительное условие для сигнала алерта??? А то индюк подает сигналы, большая часть не правильная я бы хотел отфильтровать их, вот таким условием.
Условие такое - это повторяющийся одинаковый уровень цены допустим 150,00 три раза был такой уровень в промежутке последних 10 секунд, .
И тоже вывести во внешние переменные, для этого условия.
Y= 3; // сколько раз был уровень одинаковый в промежутке t 2t 2=10; // промежуток времени для Y
Если это не возможно все равно спасибо тому кто откликнется.
#property indicator_chart_window
extern int taim=120;//ceк запоминать данные
extern int S=30;//пп пройденное расстояние в промежутке t
double TiksBase[]; // Массив цен
int gTimeLeft;
// -- добовляем тик в базу
int fAddTiks(int TimeLeft)
{
for (int e=ArraySize(TiksBase)-1;e>TimeLeft;e--)
{
TiksBase[e]=TiksBase[e-1];
}
for (int s=0;s<TimeLeft;s++)
{
TiksBase[s]=Bid;
}
}
// -- получаем разницу за промежуток
int fdCost()
{
int MIN=ArrayMinimum(TiksBase);
int MAX=ArrayMaximum(TiksBase);
if (TiksBase[MIN]!=EMPTY_VALUE && TiksBase[MAX]!=EMPTY_VALUE )
{
if (MIN<MAX){return( ((TiksBase[MAX]-TiksBase[MIN])/Point)*(-1) );}
if (MIN>MAX){return( ((TiksBase[MAX]-TiksBase[MIN])/Point) );}
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
ArrayResize(TiksBase,taim);
ArrayInitialize(TiksBase,EMPTY_VALUE);
gTimeLeft=TimeLocal();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
// -- дбовляем тик в базу
fAddTiks((TimeLocal()-gTimeLeft));
gTimeLeft=TimeLocal();
if (MathAbs(fdCost())>S)
{
if (fdCost()>0){Alert("Sell импульс",MathAbs(fdCost()),"пипс от",TiksBase[ArrayMinimum(TiksBase)]," до ",Bid);}
if (fdCost()<0){Alert("Buy импульс",MathAbs(fdCost()),"пипс от",TiksBase[ArrayMaximum(TiksBase)]," до ",Ask);}
ArrayInitialize(TiksBase,EMPTY_VALUE);
}
//----
return(0);
}
//+------------------------------------------------------------------+