Помощь в написании кодов MQL4.

  • Автор темы Автор темы Vasia
  • Дата начала Дата начала

Vasia

Новичок
6 Фев 2019
3
0
1
44
Поинты
0.00
Пол
Муж.
Ребята помогите пожалуйста начинающему познавать
азы программирования на MQL4.MT4

Интересует Функция SendMail

Как правильно поправить код
чтобы при достижении советником заданного процента просадки депозита,
советник один рас отправил бы Е-майл сообщение.
В данном варианте кода, емейл сообщения сыпятся многочисленно.
Помогите пожалуйста, очень надо !
Вот исходный код.

Отправка сообщения на Емайл, при указанной просадке в процентах.


double MailDrawDown = 20.0; // Указываем значение в процентах %


if(AccountEquity()/AccountBalance()*100>=MailDrawDown)
SendMail("WARNING ACCOUNT !!!",AccountNumber());
{
if(!IsTesting())
{
return(0);
}

Зарание огромное спасибо.
 
По этой формуле вычисляется остаток депозита в процентах. То-есть отправка сообщения на почту будет до того момента пока остаток на счёте будет больше 20%
А по сути вопроса: Можно завести флаг, который вставляется дополнительным условием и если отправка была переключаем флаг.
 
Здравствуй AlexeyVik.

Может наглядно можешь написать как правильно должно быть.
Я только начинающий.
Буду бескрайне благодарен.
 
Извини, но у меня мои тараканы в моей голове не позволяют помогать написанием кода. На словах могу очень долго и безвозмездно обсуждать чужую проблему, смотреть что написано, делать замечания и т.д. Но просто писать код... нет. Да к тому-же отправкой сообщений на почту я не пользовался. Соответственно готового кода нет. В принципе я предложил один, самый простой вариант, а вариантов в любом случае не один.
 
Здравствуйте, подскажите, пожалуйста, индикатор выводит алерт при появлении трендовой линии или при ее сдвиге. но также сигналит при смене имени, без ее сдвига. Как сделать, чтобы он сигналил только при сдвиге и не реагировал на смену имени? Заранее спасибо!

{
if(ObjectType(ObjectName(i)) == OBJ_TREND)
{
double pr1 = NormalizeDouble(ObjectGetDouble(0,ObjectName(i),OBJPROP_PRICE1), Digits);
double pr2 = NormalizeDouble(ObjectGetDouble(0,ObjectName(i),OBJPROP_PRICE2), Digits);
datetime tm1 = ObjectGetInteger(0,ObjectName(i),OBJPROP_TIME1);
datetime tm2 = ObjectGetInteger(0,ObjectName(i),OBJPROP_TIME2);
//double pr3 = ObjectGetInteger (0,ObjectName(i),OBJPROP_COLOR);
//double pr4 = ObjectGetString (0,ObjectName(i),OBJPROP_TEXT);
//ObjectSetString(0, nameOfBuyLine,OBJPROP_TEXT,Period());

string name1 = ObjectName(i) + "|High Lable";
//if (pr3 == clrOliveDrab)
//if (pr4 == 0)
if(ObjectFind(0,name1) != -1)

{
if(MathMax(pr1,pr2) != ObjectGetDouble(0,name1,OBJPROP_PRICE) || tm1 != ObjectGetInteger(0,name1,OBJPROP_TIME)) ObjectDelete(0,name1);
}
else
{
//Print(tm2);
int whichBar = 1;
static datetime time1 = 0;
static string mess1 = "";
int anc=ANCHOR_LEFT_LOWER;
if(tm2 < tm1) anc=ANCHOR_RIGHT_LOWER;
DrawLable(tm1,MathMax(pr1,pr2),name1,color_high,anc); //MathMax(pr1,pr2)
doAlert(time1,mess1,whichBar,"resist_verified");

}
 

Новые темы