Помощь в написании кодов 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");

}
 

IMG_1343.webp



Помощь в написании кодов MQL4: Руководство для начинающих и практические советы


Создание торговых роботов и индикаторов на платформе MetaTrader 4 требует знаний языка MQL4 (MetaQuotes Language 4). Этот язык позволяет автоматизировать торговые стратегии, создавая советников (экспертов), скрипты и пользовательские индикаторы, которые могут существенно упростить работу трейдера и повысить эффективность торговли. В этой статье рассмотрим базовые принципы работы с MQL4, приведем советы по написанию кода и разберем несколько примеров, которые помогут начинающим трейдерам освоить программирование в MQL4.

Основы MQL4: Зачем он нужен трейдерам?

MQL4 — это язык программирования, специально разработанный для создания торговых роботов и индикаторов в платформе MetaTrader 4. Благодаря MQL4 трейдеры могут автоматизировать процессы, что избавляет их от необходимости самостоятельно следить за рынком и вручную заключать сделки. Это особенно важно для стратегий, где нужно соблюдать точные временные рамки или реагировать на определенные сигналы.

MQL4 позволяет:

• Разрабатывать советников — автоматические торговые программы, которые могут самостоятельно открывать и закрывать сделки на основе заданных условий.
• Создавать пользовательские индикаторы — индикаторы для анализа рынка, которых нет в стандартном наборе MetaTrader.
• Использовать скрипты — программы для выполнения одноразовых задач, таких как закрытие всех ордеров или выставление отложенных ордеров.

Основные структуры и функции MQL4

Для написания кода в MQL4 важно знать ключевые структуры и функции, которые используются для создания экспертов, индикаторов и скриптов. Вот несколько основных компонентов, с которых стоит начать.

1. Функция OnInit() — выполняется один раз при инициализации эксперта или индикатора, используется для настройки начальных параметров.
2. Функция OnTick() — основная функция, которая запускается каждый раз при поступлении нового тика (изменении цены). Здесь прописываются все основные торговые условия.
3. Функция OnDeinit() — выполняется при завершении работы эксперта или индикатора, используется для освобождения ресурсов.
4. Функция OrderSend() — отправляет ордер на покупку или продажу.
5. Функция OrderClose() — закрывает открытый ордер.
6. Функция iCustom() — позволяет использовать пользовательские индикаторы в торговых стратегиях.

Эти функции — основа, на которой строится логика программ на MQL4. Например, код торгового робота будет включать условия для открытия и закрытия позиций, управление рисками и, возможно, использование индикаторов.

Простой пример советника в MQL4

Рассмотрим простой пример советника, который открывает позицию на покупку, если цена выше средней скользящей, и закрывает ее при пересечении скользящей средней вниз.

// Указываем начальные параметры
input double Lots = 0.1;
input int MA_Period = 14;

int OnInit() {
return(INIT_SUCCEEDED);
}

void OnTick() {
double ma = iMA(NULL, 0, MA_Period, 0, MODE_SMA, PRICE_CLOSE, 0);
double price = Close[0];

// Если нет открытых позиций и цена выше скользящей средней, открываем покупку
if (OrdersTotal() == 0 && price > ma) {
OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "Buy Order", 0, 0, clrGreen);
}

// Если позиция открыта и цена ниже скользящей средней, закрываем позицию
if (OrdersTotal() > 0 && price < ma) {
for (int i = 0; i < OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY) {
OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrRed);
}
}
}
}

Этот советник работает на основе скользящей средней и проверяет цену на каждом тике. Если цена выше средней, советник открывает позицию на покупку; если цена опускается ниже, он закрывает эту позицию.

Советы для эффективного написания кода на MQL4

1. Планируйте логику заранее. Перед тем как начать писать код, определите, какие условия и действия должны выполняться. Например, запишите условия для открытия и закрытия позиций, методы управления рисками и правила управления капиталом.
2. Изучите стандартные библиотеки MQL4. MQL4 предоставляет большое количество встроенных функций для анализа рынка и работы с ордерами. Чем лучше вы понимаете их возможности, тем проще будет создавать собственные стратегии.
3. Тестируйте код на демо-счете. Перед запуском робота на реальном счете рекомендуется протестировать его на демо-счете. Это позволит вам убедиться, что все условия выполняются корректно и советник работает стабильно.
4. Используйте отладку и журналирование. При написании сложных советников и индикаторов полезно добавлять выводы в журнал с помощью функции Print(). Это поможет вам отслеживать, когда и почему срабатывают определенные условия.
5. Не забывайте о риск-менеджменте. Управление рисками — важная часть любой стратегии. Установите правила управления рисками, такие как ограничение объема сделок или стоп-лоссы, чтобы защитить свой капитал.
6. Регулярно обновляйте и оптимизируйте код. После тестирования на демо-счете и сбора результатов можно вносить улучшения в логику советника. Оптимизация параметров, таких как период скользящей средней или объем позиций, позволит добиться более высокой доходности.

Полезные ресурсы для изучения MQL4

• Документация MetaQuotes — основной источник знаний, содержащий информацию по всем функциям и возможностям языка MQL4.
• Форумы трейдеров — такие как MQL5.com и тематические форумы, где можно найти советы, примеры кода и обсуждения популярных стратегий.
• Образовательные видео и курсы — на YouTube и специализированных платформах можно найти много обучающих материалов по MQL4 для новичков.

Заключение

Освоение MQL4 может показаться сложной задачей, но с помощью практики и последовательного подхода вы сможете создать собственных советников и индикаторы, которые помогут вам автоматизировать торговлю. Начинайте с простых стратегий, тестируйте их на демо-счете, постепенно усложняя код и оптимизируя его под ваши нужды. Инвестиции в изучение MQL4 окупятся, если вы научитесь создавать эффективные и стабильные автоматические системы, которые помогут вам более успешно работать на финансовых рынках.