- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
- Комбинация советника и индикатора
- Вечер выходного дня
Добрый день, господа. Хочу написать программу-аллерт для уведомления о событиях на основе технического анализа. Пример - 21 ЕМА пересекает 200 ЕМА. При этом сделка не должна открываться, только уведомление нужно. Подскажите, что это за тип программы должен быть - советник, или индикатор, или что-то ещё? И как лучше писать это - через алго или нейронку? Не владею ни тем, ни другим, так что придется изучать с нуля. Заранее спасибо
Если ничем не владеешь - видимо, лучше сюда
- 2024.08.30
- www.mql5.com
Не, хочется самому разобраться
Добрый день, господа. Хочу написать программу-аллерт для уведомления о событиях на основе технического анализа. Пример - 21 ЕМА пересекает 200 ЕМА. При этом сделка не должна открываться, только уведомление нужно. Подскажите, что это за тип программы должен быть - советник, или индикатор, или что-то ещё? И как лучше писать это - через алго или нейронку? Не владею ни тем, ни другим, так что придется изучать с нуля. Заранее спасибо
это явный индикатор,
для начала - возьмите в CodeBase схожие индикаторы (пересечение двух MA) и разберитесь с их кодом.
Хочу написать программу-аллерт для уведомления о событиях на основе технического анализа. Пример - 21 ЕМА пересекает 200 ЕМА. При этом сделка не должна открываться, только уведомление нужно. Подскажите, что это за тип программы должен быть - советник, или индикатор, или что-то ещё?
это явный индикатор
Интересно, почему именно индикатор?
Ведь из описания функции SеndNоtification, которую ТС очевидно планирует использовать для отправки уведомлений, неявно следует, что она является синхронной, т.е. вызывает остановку вызывающей её MQL программы до окончания своего выполнения.
А использование синхронных функций в индикаторах явно не является хорошей практикой, поскольку индикаторы работают в едином потоке, общем для всех индикаторов и графиков на данном символе. И задержка выполнения индикатора на одном из графиков символа может привести к остановке обновления всех графиков по данному символу.
Если бы я решал такую задачу, то использовал бы для отправки уведомлений советник, поскольку каждый из них выполняется в отдельном потоке и задержки, неизбежно возникающие при использовании сетевых функций, не оказывают влияния на обновление графика и работу других MQL программ, прикреплённых к нему.
Ведь из описания функции SеndNоtification, которую ТС очевидно планирует использовать для отправки уведомлений, неявно следует, что она является синхронной, т.е. вызывает остановку вызывающей её MQL программы до окончания своего выполнения.
Где Вы такое прочитали в описании этой функции?
SеndNоtification, если мне не изменяет память, вообще ставит уведомление в очередь. Т.е. никаких ожиданий успешной отправки до адресата.
Где Вы такое прочитали в описании этой функции?
SеndNоtification, если мне не изменяет память, вообще ставит уведомление в очередь. Т.е. никаких ожиданий успешной отправки до адресата.
Именно потому, что конкретно такого я там не прочитал, я и написал, что это неявно следует из описания.
Рассуждал я так — обычно, когда функция является асинхронной, об этом либо явно сказано, либо упомянуто о том, что функция возвращает true в случае успешной постановки уведомления в очередь.
А в нашем случае в описании функции SеndNоtification сказано буквально следующее:
Возвращаемое значение
true при успешной отправке уведомления из терминала, в случае неудачи возвращает false.
Иными словами, функция ожидает результата отправки уведомления. Иначе как определить, была ли она успешной?
Исходя из такого описания, я бы не стал полагаться на то, что эта функция является асинхронной и, соответственно, использовать её в индикаторах.
Добрый день, господа. Хочу написать программу-аллерт для уведомления о событиях на основе технического анализа. Пример - 21 ЕМА пересекает 200 ЕМА. При этом сделка не должна открываться, только уведомление нужно. Подскажите, что это за тип программы должен быть - советник, или индикатор, или что-то ещё? И как лучше писать это - через алго или нейронку? Не владею ни тем, ни другим, так что придется изучать с нуля. Заранее спасибо
Простейший советник, который использует 2 EMA. Вот код одной ученицы, он 11-летней давности и на MQL4, но смысл понятен. И если женщина в 40 лет с нуля обучилась неплохо программировать, то вам грех сдаваться и идти на поклон к фрилансерам!
//+------------------------------------------------------------------+ //| FindCross_MA.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Elena G" extern int ТР = 300; // Тайкпрофит extern int TimeF = 1; // Таймфрейм extern int Period_Higt = 4; // Период для быстрого Muvinga extern int Period_Low = 16; // Период для медленного Muvinga extern int Cross = 0; // Признак пересечения двух Muving Avirage //Алексей, это два в одном первые задания вебинара за 12.12.2013. //Простейший советник, который на каждом пересечении открывает позицию на покупку или продажу. //Здесь нет анализа на ошибки открытия позиций, чтобы не загружать код, так легче тебе будет проверять //Ещё я не уверена, что правильно Cross - вовращаемый параметр. //******************************************************************* int init() { return(0); } int deinit() { return(0); } int start() { FindCrossMA(TimeF, Period_Higt, Period_Low, Cross); if (Cross == 1) OrderSend(Symbol(), OP_BUY, 0.1, NormalizeDouble(Ask, Digits), 30, 0, NormalizeDouble(Ask + ТР*Point, Digits), "Lena", 77777, 0, Green); if (Cross == -1) OrderSend(Symbol(), OP_SELL, 0.1, NormalizeDouble(Bid, Digits), 30, 0, NormalizeDouble(Bid - ТР*Point, Digits), "Lena", 11111, 0, Red); if (Cross == 0) return (0); return(0); } //Эта функция проводит анализ средних на последнем и предпоследнем барах. int FindCrossMA( int TimeF, int Period_Higt, int Period_Low, int &Cross) // Алексей, имена переменных такие же, я думаю, что это можно!!! { double point_Higt_0, point_Higt_1; // средние на быстhом Muvinge double point_Low_0, point_Low_1; // средние на медленном Muvinge point_Higt_0 = iMA(NULL, TimeF, Period_Higt, 0, MODE_EMA, PRICE_OPEN, 0); point_Low_0 = iMA(NULL, TimeF, Period_Low, 0, MODE_EMA, PRICE_OPEN, 0); point_Higt_1 = iMA(NULL, TimeF, Period_Higt, 0, MODE_EMA, PRICE_OPEN, 1); point_Low_1 = iMA(NULL, TimeF, Period_Low, 0, MODE_EMA, PRICE_OPEN, 1); if(point_Low_1 > point_Higt_1 && point_Low_0 < point_Higt_0) //Пересечение вверх, тренд на покупку //?????? Может быть здесь делать ещё проверку на >= и <= { Cross = 1; return (0); } if(point_Low_1 < point_Higt_1 && point_Low_0 > point_Higt_0) //Пересечение вниз, тренд на продажу { Cross = -1; return (0); } else { Cross = 0; return (0); } }
Добрый день, господа. Хочу написать программу-аллерт для уведомления о событиях на основе технического анализа. Пример - 21 ЕМА пересекает 200 ЕМА. При этом сделка не должна открываться, только уведомление нужно. Подскажите, что это за тип программы должен быть - советник, или индикатор, или что-то ещё? И как лучше писать это - через алго или нейронку? Не владею ни тем, ни другим, так что придется изучать с нуля. Заранее спасибо
Сначала пишете индикатор. Настраиваете его параметры на получение удовлетворительного сигнала.
Затем, в силу того что у Вас в вопросе присутствует слово "сделка", переносите логику получения сигнала (математику из индикатора) в советник
а индикатор оставляете для наглядности
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
