Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 638

 
Vitaly Muzichenko:

Подскажите кто сталкивался и знает, как получить с этой строки:

29301441,1475681547,0,0.01,EURUSD,1.1207,0.0000,0.0000,1475690944,1.1213,0.00,0.00,0.60,,13134545

вот такую:

-118,120,-39,52,-58,-76,62,-66,-49,-97,-38,-86,-125,-52,-70,-96,89,-23,13,-91,111,74,-79,16,65,127,116,-76,99,5,27,48,42,44,55,-94,84,-72,-63,115,26,18,-47,-46,5,-55,32,68,114,-20,46,-7,79,7,82,78,-91,41,82,-114,121,112,-64,-106,35,-10,24,-128,58,-81,-69,92,34,79,64,-97,52,-95,127,-18,-46,104,104,85,56,93,8,100,14,-52,-88,-38,-28,-76,-49,35,-74,27,120,74,53,124,-104,-59,-1,41,-127,-99,103,104,-38,2,47,-93,68,35,-15,44,123,47,78,-117,15,-114,-46,-98,-108,-26, 

Спасибо!

вторая строка - более чем похожа на массив signed char. То есть вся "строка" может быть просто бинарной структурой распечатанной побайтно, причём возможно её сначала зашифровали, поэтому 0 нет
 

Добрый день.

Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.

Помогите чтоб при каждом сигнале отправлялось только одно письмо.

Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?

int init()
  {
   return(0);
  }
start()
  {
//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma)  {
bool res = SendMail("Сигнал", " Покупай");
}
if(Open[1]<ma && Close[1]>ma) {
SendMail("Сигна", "Продавай");
}
//-------------------------------------------------------------------
   return(0);
  }

 
ev85:

Добрый день.

Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.

Помогите чтоб при каждом сигнале отправлялось только одно письмо.

Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?


добавить datetime mailTime и запоминать время пред.отправки, чтобы повторно не отправлять письма

datetime mailTime=0;
int init()
  {
   return(0);
  }

start()
  {
//-----------------------------------------------------------------------------------------------------
// Сигналы
//-----------------------------------------------------------------------------------------------------
if(Open[1]>ma && Close[1]<ma && Time[1]>mailTime)  {
bool res = SendMail("Сигнал", " Покупай");
if (res) mailTime=Time[1];
 }
if(Open[1]<ma && Close[1]>ma && Time[1]>mailTime) {
bool res=SendMail("Сигна", "Продавай");
if (res) mailTime=Time[1];
 }
//-------------------------------------------------------------------
   return(0);
  }

ps. пора уже переходить от start() к OnTick() в советниках

pps. mailTime надо ещё сохранять в глобальных переменных терминала на случай рестарта советника.

 
Maxim Kuznetsov:

добавить datetime mailTime и запоминать время пред.отправки, чтобы повторно не отправлять письма

ps. пора уже переходить от start() к OnTick() в советниках

pps. mailTime надо ещё сохранять в глобальных переменных терминала на случай рестарта советника.

Не помогло. Так и шлет бесконечно письма.

 
ev85:

Добрый день.

Я сам не программист, но хочу сделать так чтоб из моих советников мне отправлялись емайл уведомления о сигналах. Задача простая, и вроде работает, но когда наступает условие для сигнала то отправляются бесконечное количество писем.

Помогите чтоб при каждом сигнале отправлялось только одно письмо.

Вот пример моего кода для обычной скользящей средней. Что добавить или исправить?



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);
  }
 
-Aleks-:
С этим годом вообще не отправляются емейлы((
 
ev85:
С этим годом вообще не отправляются емейлы((
Так у вас чему ma равен? Это не машка на нулевом баре случайно?
 
-Aleks-:
Так у вас чему ma равен? Это не машка на нулевом баре случайно?

 ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);

 
ev85:

 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]; 

 

 


 
Maxim Kuznetsov:
вторая строка - более чем похожа на массив signed char. То есть вся "строка" может быть просто бинарной структурой распечатанной побайтно, причём возможно её сначала зашифровали, поэтому 0 нет
Да, после некоторых действий выяснилось, что строка действительно signed char. Теперь вопрос: как её привести в читабельный вид на сервере?
Причина обращения: