Это чтобы пиликало один раз на баре
datetime LastTime=0; ... ... ... ... double RSI_b0 = iRSI(NULL,0,14,PRICE_CLOSE,i); double RSI_b1 = iRSI(NULL,0,14,PRICE_CLOSE,i+1); if(RSI_b0<30 && RSI_b1>30 && Time[i]!= LastTime){Alert (........);LastTime = Time[i];} if(RSI_b0>70 && RSI_b1<70 && Time[i]!= LastTime){Alert (........);LastTime = Time[i];}
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сделал 1 вариант
int init()
{
return(0);
}
//--------------------------------------------------------------------
int deinit()
{
return(0);
}
//--------------------------------------------------------------------
int start()
{
double RSI = iRSI(NULL,0,14,PRICE_CLOSE,0);
//Проверка условий подсказки
if(RSI>70)
{
Alert("RSI>70 ", Symbol()," на ",Period()," мин ");
return;
}
if(RSI<30)
{
Alert("RSI<30 ", Symbol()," на ",Period()," мин ");
return;
}
}
Естественно сигнал не однократный, и с каждым новым тиком идет новое сообщение
Сделал 2 вариант
int init()
{
return(0);
}
int deinit()
{
return(0);
}
bool S = false;// Изначально, меняется если сработал алерт
int start()
{
double RSI = iRSI(NULL,0,14,PRICE_CLOSE,0);
if(RSI>70 && S == false) //Условие для алерта
{
Alert ("RSI>70 ", Symbol()," на ",Period()," мин ");
S = true; // Если сработал алерт
return;
}
if(RSI<30 && S == false) //Условие для алерта
{
Alert ("RSI<30 ", Symbol()," на ",Period()," мин ");
S = true; // Если сработал алерт
return;
}
if(RSI<70 && S == true || RSI>30 && S == true) // Обнуляет переменную
{
S = false; //Условие для возврата в начало
return;
}
}
А вот сдесь вроде все логично, тока почемуто ниче не останавливается а опять алерт выводится на каждом новом тике, а вроде и не должен. Направьте братья на путь истиный а, без вас никуда, похоже мои изыскания не туда пошли, помогите сделать однократный алерт а...