Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
YuraZ Book All PriceCH V3 индикатор для биржи - индикатор для MetaTrader 5
- Просмотров:
- 2925
- Рейтинг:
- Опубликован:
- 2020.10.31 14:26
- Обновлен:
- 2025.01.29 07:46
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Многофункциональный индикатор для биржи. В описании ниже понятно что где показывает.
Для полноценного функционирования, необходимо предварительно запустить скрипт чтения
данных дивидендов с сайта https://www.dohod.ru
страница отвечает за каждый отдельный инструмент например для SBERP https://www.dohod.ru/ik/analytics/dividend/sberp
скрипт опубликован ниже.
Колонки:
- Имя инструмента.
- Процент читаемый по каждому инструменту с сайта https://www.dohod.ru/ik/analytics/dividend/
- Сумма дивидендов
- Минимальное количество лот
- Минимальная сумма покупки одного лота
- Дневное изменение CH% считает от закрытия прошлого дня
- Объем выставленных отложенных ордеров на покупку
- Объем выставленных отложенных ордеров на продажу
- Разница между объемами отложенных ордеров
- Процент разницы
- Направление движения по объемам отложенных ордеров
- Объем совершенных покупок с начала дня
- Объем совершенных продаж с начала дня
- Разница между совершенным покупками и продажами с начала дня
параметры
//+------------------------------------------------------------------+ //| yz_Gev_Dividend.mq5 | //| Copyright 2020,YuraZ | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020,YuraZ" #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { int i_SymbolsTotal=SymbolsTotal(true); // false - Все символы , true – только символы в MarketWatch for(int i=0; i<i_SymbolsTotal; i++) // найдем инструменты с контрактом pKontract { string sSymbol = SymbolName(i,true) ; // false); // Загоним символ в массив StringToLower(sSymbol); GetDividend(sSymbol); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void GetDividend(string sSymbol) { string cookie=NULL,headers; char post[],result[]; int iPos2; int iPos1; string strВыплптаНаАкцию; string url="https://www.dohod.ru/ik/analytics/dividend/" ; url=url+sSymbol; //--- для работы с сервером необходимо добавить URL "https://www.dohod.ru" //--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"): //--- обнуляем код последней ошибки ResetLastError(); //--- загрузка html-страницы с Yahoo Finance int res=WebRequest("GET",url,cookie,NULL,500,post,0,result,headers); if(res==-1) { Print("Ошибка в WebRequest. Код ошибки =",GetLastError()); //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION); } else { if(res==200) { // Распарсим результат // найти дивиденды // <table id="dividends-brief"> // <tr class="frow"> // <td class="greendark">11.54%</td> <td class="dlmtr"></td> // <td class="gray">2.14%</td> <td class="dlmtr"></td> // <td class="greenlight">0.79</td> </tr> // <tr class="srow"> // <td>текущая доходность</td><td class="dlmtr"></td> // <td>доля от прибыли</td><td class="dlmtr"></td> // <td><a id="dsi-link" title="Методика расчета индекса стабильности дивидендных выплат (DSI)" href="/ik/analytics/dividend/pdf/dsi.pdf">индекс DSI</a></td> // </tr> // </table> string strPars = CharArrayToString(result,0,-1,CP_UTF8); string Div; iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // Найдем начало таблицы дивидендов if(iPos1 !=0) { //string strPars; iPos1 = StringFind(strPars,"<p>Совокупные дивиденды в следующие 12m: <strong><span class=",0); // //printf(" %d %d ",iPos1,iPos2 ); iPos1 = iPos1+StringLen("<p>Совокупные дивиденды в следующие 12m: <strong><span class="); // //printf(" %d %d ",iPos1,iPos2 ); iPos1 = StringFind(strPars,">",iPos1)+1; // //printf(" %d %d ",iPos1,iPos2 ); iPos2 = StringFind(strPars,"</span>",iPos1); // //printf(" %d %d ",iPos1,iPos2 ); // strВыплптаНаАкцию = StringSubstr(strPars, iPos1, iPos2-iPos1 ); //iPos2-iPos1 ); printf("%s %d %d %d [%s] ",sSymbol, iPos2-iPos1 ,iPos1,iPos2, strВыплптаНаАкцию ); iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // Найдем начало таблицы дивидендов strPars = StringSubstr(strPars, iPos1, 500); iPos1 = StringFind(strPars,"<tr class=\"frow\">",0); // найдем <tr class="frow"> strPars = StringSubstr(strPars, iPos1+1, 500); iPos1 = StringFind(strPars,"<td class=",0)+1; // <td class= тут может быть разный цвет strPars = StringSubstr(strPars, iPos1, 500); iPos1 = StringFind(strPars,">",0); // Нахдим ограничитель цвета iPos2 = StringFind(strPars,"</td>",0); // найдем завершение </td> пример ---}}}} >11.54%</td> Div = StringSubstr(strPars,iPos1+1,iPos2 - 1 - iPos1) ; // вырезаем дивиденды printf("[%s] [%s] [%s]",sSymbol, Div, strВыплптаНаАкцию); int filehandle=FileOpen("yz_Div_"+sSymbol+".dat",FILE_WRITE|FILE_SHARE_WRITE|FILE_CSV,"|"); if(filehandle!=INVALID_HANDLE) { //--- сохраняем содержимое массива result[] в файл FileWrite(filehandle,"<"+Div+"><"+strВыплптаНаАкцию+">" ); //--- закрываем файл FileClose(filehandle); } } //--- успешная загрузка // PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result)); //PrintFormat("Заголовки сервера: %s",headers); //--- сохраняем данные в файл int filehandle=FileOpen("yz_Div_"+sSymbol+".htm",FILE_WRITE|FILE_BIN); if(filehandle!=INVALID_HANDLE) { //--- сохраняем содержимое массива result[] в файл FileWriteArray(filehandle,result,0,ArraySize(result)); //--- закрываем файл FileClose(filehandle); } else { Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); } } else { //PrintFormat("Ошибка загрузки '%s', код %d",url,res); } } } //+------------------------------------------------------------------+
Сервис к сожаление не могу прикрепить файлом , т к система тестирования не умеет тестировать сервисы.
//+------------------------------------------------------------------+ //| Service_On_Timer.mq5 | //| Copyright 2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property service #property copyright "Copyright 2025, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.01" //+------------------------------------------------------------------+ //| Service program start function | //+------------------------------------------------------------------+ void OnStart() { GlobalVariableSet("yzGetDivident",0); OnStartCicleGet(); } //+------------------------------------------------------------------+ //| Service program start function | //+------------------------------------------------------------------+ void OnStartCicleGet() { //--- bool aCicle = true; while ( aCicle == true && !IsStopped()) { if (GlobalVariableCheck("yzGetDivident") == true ) { int i_SymbolsTotal=SymbolsTotal(true); // false - Все символы , true – только символы в MarketWatch ReadDividend(i_SymbolsTotal); int DelVar = GlobalVariablesDeleteAll("yzGetDivident"); if (DelVar == 0 ) { printf("err delete"); } else { //printf("delete yzGetDivident"); } } Sleep(500); // } } //+------------------------------------------------------------------+ //void CYZTS::ReadDividend(void) void ReadDividend(int gCountSym) { for(int i=0; i<gCountSym; i++) { string pSymbol = SymbolName(i,true) ; // false); // Загоним символ в массив StringToLower(pSymbol); //printf(" %s ",pSymbol); GetDividendFrom_www_dohod_ru(pSymbol); } } //void CYZTS::GetDividendFrom_www_dohod_ru(string pSymbol) void GetDividendFrom_www_dohod_ru(string pSymbol) { string cookie=NULL,headers; char post[],result[]; int iPos2; int iPos1; string strВыплптаНаАкцию; string url="https://www.dohod.ru/ik/analytics/dividend/" ; // https://www.dohod.ru/ik/analytics/dividend url=url+pSymbol; //--- для работы с сервером необходимо добавить URL "https://www.dohod.ru" //--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"): //--- обнуляем код последней ошибки ResetLastError(); //--- загрузка html-страницы с Yahoo Finance int res=WebRequest("GET",url,cookie,NULL,500,post,0,result,headers); if(res==-1) { Print("Ошибка в WebRequest. Код ошибки =",GetLastError()); //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION); } else { if(res==200) { // Распарсим результат // найти дивиденды // <table id="dividends-brief"> // <tr class="frow"> // <td class="greendark">11.54%</td> <td class="dlmtr"></td> // <td class="gray">2.14%</td> <td class="dlmtr"></td> // <td class="greenlight">0.79</td> </tr> // <tr class="srow"> // <td>текущая доходность</td><td class="dlmtr"></td> // <td>доля от прибыли</td><td class="dlmtr"></td> // <td><a id="dsi-link" title="Методика расчета индекса стабильности дивидендных выплат (DSI)" href="/ik/analytics/dividend/pdf/dsi.pdf">индекс DSI</a></td> // </tr> // </table> string strPars = CharArrayToString(result,0,-1,CP_UTF8); string Div; iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // Найдем начало таблицы дивидендов if(iPos1 !=0) { //string strPars; iPos1 = StringFind(strPars,"<p>Совокупные дивиденды в следующие 12m: <strong><span class=",0); // //printf(" %d %d ",iPos1,iPos2 ); iPos1 = iPos1+StringLen("<p>Совокупные дивиденды в следующие 12m: <strong><span class="); // //printf(" %d %d ",iPos1,iPos2 ); iPos1 = StringFind(strPars,">",iPos1)+1; // //printf(" %d %d ",iPos1,iPos2 ); iPos2 = StringFind(strPars,"</span>",iPos1); // //printf(" %d %d ",iPos1,iPos2 ); // strВыплптаНаАкцию = StringSubstr(strPars, iPos1, iPos2-iPos1); //iPos2-iPos1 ); //printf("%s %d %d %d [%s] ",pSymbol, iPos2-iPos1,iPos1,iPos2, strВыплптаНаАкцию); iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // Найдем начало таблицы дивидендов strPars = StringSubstr(strPars, iPos1, 500); iPos1 = StringFind(strPars,"<tr class=\"frow\">",0); // найдем <tr class="frow"> strPars = StringSubstr(strPars, iPos1+1, 500); iPos1 = StringFind(strPars,"<td class=",0)+1; // <td class= тут может быть разный цвет strPars = StringSubstr(strPars, iPos1, 500); iPos1 = StringFind(strPars,">",0); // Нахдим ограничитель цвета iPos2 = StringFind(strPars,"</td>",0); // найдем завершение </td> пример ---}}}} >11.54%</td> Div = StringSubstr(strPars,iPos1+1,iPos2 - 1 - iPos1) ; // вырезаем дивиденды //printf("[%s] [%s] [%s]",pSymbol, Div, strВыплптаНаАкцию); int filehandle=FileOpen("yz_Div_"+pSymbol+".dat",FILE_WRITE|FILE_SHARE_WRITE|FILE_CSV,"|"); if(filehandle!=INVALID_HANDLE) { //--- сохраняем содержимое массива result[] в файл FileWrite(filehandle,"<"+Div+"><"+strВыплптаНаАкцию+">"); //--- закрываем файл FileClose(filehandle); } } //--- успешная загрузка // PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result)); //PrintFormat("Заголовки сервера: %s",headers); //--- сохраняем данные в файл int filehandle=FileOpen("yz_Div_"+pSymbol+".htm",FILE_WRITE|FILE_BIN); if(filehandle!=INVALID_HANDLE) { //--- сохраняем содержимое массива result[] в файл FileWriteArray(filehandle,result,0,ArraySize(result)); //--- закрываем файл FileClose(filehandle); } else { Print("Ошибка в FileOpen. Код ошибки =",GetLastError()); } } else { //PrintFormat("Ошибка загрузки '%s', код %d",url,res); } } }
Непрерывный рост индикатора iMACD (Moving Average Convergence/Divergence, MACD) на заданном количестве баров
Last position typeУтилита - отображает по текущему символу и для заданного Magic тип последней позиции
Работа с трендовыми линиями ( OBJ_TREND )
MACD Intersection Main and SignalОтображение индикатора iMACD (Moving Average Convergence/Divergence, MACD) и вертикальных линий в месте пересечения линии 'Main' и 'Signal'