Здравствуйте, написал небольшую утилиту (C# .NET 4.8)для отправки SMTP почты с вложением с вызовом из MQL.
В коде советника или индикатора необходимо запустить приложение с параметрами:
Как запустить:
1. Файл MailWithParams.exe нужно скопировать в папку MQL4\Files.
2. Вызвать приложение из MQL. Пример — индикатор, который при появлении новой свечи делает скрин и отправляет его почтой.
Пример использования:
#property strict
#property indicator_chart_window
bool New_Bar;
string _smtp = "smtp.yandex.ru";
int _port = 465;
string _ssl = "true";
string _emailFrom = "from@yandex.ru"; //напишите адрес отправителя
string _emailFromPassword = "**************"; //напишите пароль отправителя
string _emailTo = "to@yandex.ru"; //напишите почту получателя
string _subject = Symbol();
string _message = "Hello";
string _attachmentFileName;
#import "shell32.dll"
int ShellExecuteW(int hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);
#import
int OnInit()
{
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
Fun_New_Bar();
if(New_Bar==true)
{
TakeShot();
}
return(rates_total);
}
void Fun_New_Bar()
{
static datetime New_Time=0;
New_Bar=false;
if(New_Time!=Time[0])
{
New_Time=Time[0];
New_Bar=true;
}
}
void TakeShot()
{
_attachmentFileName = Symbol()+IntegerToString(Year())+IntegerToString(Month())+ IntegerToString(Day())+
IntegerToString(Hour())+IntegerToString(Minute())+".jpeg";
string exePath = TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL4\\Files\\MailWithParams.exe";
string params = _smtp + " " + IntegerToString(_port) + " " + _ssl + " " +
_emailFrom + " " + _emailFromPassword + " " + _emailTo + " " + _subject +" " +
_message + " " + _attachmentFileName;
WindowScreenShot(_attachmentFileName,1920,1080,0,2,1);
Sleep(500);
ShellExecuteW(NULL,NULL,exePath,params,NULL,0);
}
3. Настроить почту у своего провайдера.
Пример для яндекса
Тут смысл весь в том, чтобы:
— разрешить использование почтовых клиентов и сторонних программ для работы с сервером
— создать пароль для сторонних программ.
4. Отслеживать ошибки при передаче аргументов можно в логах в папке Files.
-ошибка количества аргументов
-ошибка порта — только цифры
-ошибка наличия файла
-ошибка авторизации
5. Ваши учетные данные мне не нужны. Это видно в
Исходном коде
Для создания утилиты использовал:
metanit
opentraders
Файлы:
MailWithParams.exe
Screener.mq4 (1 Kb)
P.S. замечания/пожелания кидайте в комменты.
Всем счастья
Комментарии (0)
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий