Задумка , индикатор который зачитает с различных сайтов вероятные дивиденды и выведет на график

 

Идея следующая , есть некие сайты типа dohod.ru ,  smart-lab.ru/dividends и другие

мысль зачитывать и выводить на график

 
Yuriy Zaytsev:

Идея следующая , есть некие сайты типа dohod.ru ,  smart-lab.ru/dividends и другие

мысль зачитывать и выводить на график

Задача поставлена, осталось только реализовать!

 
Да, дело за малым. Если сайты позволят) Так-то вещь нужная.
 
Yuriy Zaytsev:

Идея следующая , есть некие сайты типа dohod.ru ,  smart-lab.ru/dividends и другие

мысль зачитывать и выводить на график

думаю зачитывать сайты не проблема,

а вот что выводить на график, и что с этим потом делать?

тут проблема ...

 
Для сайта   www.dohod.ru  написал примитивный парсинг
беда в том что для каждого сайта придется писать свой парсинг

А выводить на экран уже не проблема


//+------------------------------------------------------------------+
//|                                              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[];


   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);
         string Div;

         int iPos1 = StringFind(strPars,"<table id=\"dividends-brief\">",0); // Найдем начало таблицы дивидендов

         if(iPos1 !=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); // Нахдим ограничитель цвета 
            int iPos2 = StringFind(strPars,"</td>",0); // найдем завершение  </td>   пример ---}}}}    >11.54%</td> 
            Div = StringSubstr(strPars,iPos1+1,iPos2 - 1 - iPos1) ; // вырезаем дивиденды
            printf("[%s] [%s]",sSymbol, Div);
           }

         ////--- успешная загрузка
         ////  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);
        }
     }

  }
//+------------------------------------------------------------------+
Файлы:
 

нужно не забыть прописать в настройках


 
Не самая лучшая идея. 
На рынке США самые большие дивиденды платятся Real Estate и Oil компаниями. 
Но если посмотреть на графики этих компаний, то станет видно, что их дивиденды не покрывают убытка от падения курса их акций :) 
Поэтому, кроме сравнения дивидендов еще хотя бы простую линию регрессии проводить, например, условие ниже

Price Last - Price 1 Year Ago > 0  
По сайтам, можно конечно парсить, но есть ведь вполне законные API, которые красиво все вернут в виде JSON, да еще и разными индикаторами, да еще и с фундаменталом :) 
https://iexcloud.io/docs/api/#key-stats
IEX Cloud API | IEX Cloud
IEX Cloud API | IEX Cloud
  • iexcloud.io
The IEX Cloud API is based on REST, has resource-oriented URLs, returns JSON-encoded responses, and returns standard HTTP response codes. API Versioning IEX Cloud will release new versions when we make backwards-incompatible changes to the API. We plan to support up to three active versions and will give advanced notice before releasing a new...
 
...:
Не самая лучшая идея. 
На рынке США самые большие дивиденды платятся Real Estate и Oil компаниями. 
Но если посмотреть на графики этих компаний, то станет видно, что их дивиденды не покрывают убытка от падения курса их акций :) 
Поэтому, кроме сравнения дивидендов еще хотя бы простую линию регрессии проводить, например, условие ниже

По сайтам, можно конечно парсить, но есть ведь вполне законные API, которые красиво все вернут в виде JSON, да еще и разными индикаторами, да еще и с фундаменталом :) 
https://iexcloud.io/docs/api/#key-stats

На рынке США дивиденды в сравнении с Российскими % очень низки. К примеру в 2019 по сургутнефтегазу дивиденды были 19%  ,  какая компания в США платит хотя бы 10%  ?

для сайта

 www.dohod.ru/ik/analytics/dividend

если есть API то конечно нужно через API , просто полагаю они не дают API , я просто не нашел.

 
Yuriy ZaytsevНа рынке США дивиденды в сравнении с Российскими % очень низки. К примеру в 2019 по сургутнефтегазу дивиденды были 19%  ,  какая компания в США платит хотя бы 10% ?

https://finviz.com/screener.ashx?v=161&f=fa_div_o10&o=-dividendyield 

https://www.barchart.com/stocks/stocks-screener?viewName=filter_view&orderBy=dividendYieldForward&orderDir=desc 

FinViz или BarChart для визуальной проверки, последняя ссылка не дает прямой переход, поэтому в виде картинки. 


Stock Screener - Financial o10 dividendyield
  • finviz.com
Stock screener for investors and traders, financial visualizations.
 
Возьмем сток из топа по дивам 
Цена акции $0.20
Дивиденды $0.60 
Прибыль с акции, как там указано 315% за квартал, после выплаты дивов. 
Про фундаментал и ТА в предыдущем коменте. 
SNMP Sanchez Midstream Partners LP Stock Quote
  • finviz.com
Join thousands of traders who make more informed decisions with our premium features. Real-time quotes, advanced visualizations, backtesting, and much more. Learn more about FINVIZ*Elite
 
...:

https://finviz.com/screener.ashx?v=161&f=fa_div_o10&o=-dividendyield 

https://www.barchart.com/stocks/stocks-screener?viewName=filter_view&orderBy=dividendYieldForward&orderDir=desc 

FinViz или BarChart для визуальной проверки, последняя ссылка не дает прямой переход, поэтому в виде картинки. 


Спасибо!

Причина обращения: