Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.
Помогите чтоб при каждом сигнале отправлялось только одно письмо.
Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?
добавить datetime mailTime и запоминать время пред.отправки, чтобы повторно не отправлять письма
Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.
Помогите чтоб при каждом сигнале отправлялось только одно письмо.
Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?
static datetime TimeN=0;
int init()
{
return(0);
}
start()
{
//Операции выполняются только при появлении следующего бара
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC) return;
TimeN=TimeC;
//-----------------------------------------------------------------------------------------------------// Сигналы//-----------------------------------------------------------------------------------------------------if(Open[1]>ma && Close[1]<ma) {
bool res = SendMail("Сигнал", " Покупай");
}
if(Open[1]<ma && Close[1]>ma) {
SendMail("Сигна", "Продавай");
}
//-------------------------------------------------------------------return(0);
}
Maxim Kuznetsov: вторая строка - более чем похожа на массив signed char. То есть вся "строка" может быть просто бинарной структурой распечатанной побайтно, причём возможно её сначала зашифровали, поэтому 0 нет
Да, после некоторых действий выяснилось, что строка действительно signed char. Теперь вопрос: как её привести в читабельный вид на сервере?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Добрый день.
Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.
Помогите чтоб при каждом сигнале отправлялось только одно письмо.
Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?
добавить datetime mailTime и запоминать время пред.отправки, чтобы повторно не отправлять письма
ps. пора уже переходить от start() к OnTick() в советниках
pps. mailTime надо ещё сохранять в глобальных переменных терминала на случай рестарта советника.
добавить datetime mailTime и запоминать время пред.отправки, чтобы повторно не отправлять письма
ps. пора уже переходить от start() к OnTick() в советниках
pps. mailTime надо ещё сохранять в глобальных переменных терминала на случай рестарта советника.
Не помогло. Так и шлет бесконечно письма.
Добрый день.
Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.
Помогите чтоб при каждом сигнале отправлялось только одно письмо.
Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?
static datetime TimeN=0;С этим годом вообще не отправляются емейлы((
Так у вас чему ma равен? Это не машка на нулевом баре случайно?
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
Тогда все ясно. Машка на нулевом баре постоянно пересчитывается - поэтому сигналы будут приходить при каждом тике.
Попробуйте так:
static datetime TimeN=0;
int Signal=0;
int init()
{
return(0);
}
start()
{
//Операции выполняются только при появлении следующего бара
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC && Signal==1) return;
TimeN=TimeC;
Signal=0;
//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma)
{
bool res = SendMail("Сигнал", " Покупай");
Signal=1;
}
if(Open[1]<ma && Close[1]>ma)
{
SendMail("Сигнал", "Продавай");
Signal=1;
}
return(0);
}
Вообще, обычно делают сравнение
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1);
ma>Open[0];
вторая строка - более чем похожа на массив signed char. То есть вся "строка" может быть просто бинарной структурой распечатанной побайтно, причём возможно её сначала зашифровали, поэтому 0 нет
Тогда все ясно. Машка на нулевом баре постоянно пересчитывается - поэтому сигналы будут приходить при каждом тике.
Попробуйте так:
static datetime TimeN=0;
int Signal=0;
int init()
{
return(0);
}
start()
{
//Операции выполняются только при появлении следующего бара
datetime TimeC=iTime(NULL,TF,0);
if(TimeN==0)TimeN=TimeC;
if(TimeN==TimeC && Signal==1) return;
TimeN=TimeC;
Signal=0;
//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma)
{
bool res = SendMail("Сигнал", " Покупай");
Signal=1;
}
if(Open[1]<ma && Close[1]>ma)
{
SendMail("Сигнал", "Продавай");
Signal=1;
}
return(0);
}
Вообще, обычно делают сравнение
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,1);
ma>Open[0];
Спасибо большое! Наконец работает как надо))