Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Индикатор Сентимент

Прошу создать индикатор который показывает — Тренд сообщества (шорты против лонгов) как в этом сайте www.myfxbook.com/ru/community/outlook
Так должно выглядеть на графике
  • 0
  • Просмотров: 1198
  • 19 февраля 2024, 20:08
  • Generals
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Переписать индикатор с TradingView на мт4
Следующая запись в группе  
Изменения в советник
19 февраля 2024
19 февраля 2024

Брокер для ваших роботов, 15 лет на рынке

Комментарии (9)

+
0
Зачем ждать, зачем платить, зачем заказывать. Уже давно всё есть, батенька. Столько возможностей в инете.
avatar

  11  njdftgh Сообщений: 237 - Shoom

  • 19 февраля 2024, 20:25
+
0
я знаю что есть в инете много всего, просто надо сделать по проще, чтобы рядом с символом находился красно-зеленая полоса вот и всё *good* 
Редактирован: 19 февраля 2024, 20:36
avatar

  7  Generals Автор Сообщений: 166

  • 19 февраля 2024, 20:35
+
0
А если заказать отдельно такую полосу?
avatar

  18  Boris54 Сообщений: 810 - ПенSионер

  • 19 февраля 2024, 20:36
+
0
Вам виднее, допустим открыл любой график на любом таймфрейме и быстро сориентироваться как надо торговать
Редактирован: 19 февраля 2024, 20:42
avatar

  7  Generals Автор Сообщений: 166

  • 19 февраля 2024, 20:37
+
0
парсинг страницы это не из простых
avatar

  34  AM2 Сообщений: 16232 - Андрей

  • 20 февраля 2024, 09:40
+
0
индикатор не так важно, в инете и так полно индикаторов или просто смотреть инфо из сайта:) 
avatar

  7  Generals Автор Сообщений: 166

  • 20 февраля 2024, 10:06
+
+2
Используя этот пост Андрея, накидал код. Не судите строго)

//+------------------------------------------------------------------+
//|                                                   Santiments.mq4 |
//|                                               Copyright 2023, Ve |
//|                                                verta81@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, Ve"
#property link      "verta81@yandex.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window

#import "wininet.dll"
int InternetAttemptConnect(int x);
int InternetOpenW(string sAgent,int lAccessType,string sProxyName="",string sProxyBypass="",int lFlags=0);
int InternetOpenUrlW(int hInternetSession,string sUrl,string sHeaders="",int lHeadersLength=0,int lFlags=0,int lContext=0);
int InternetReadFile(int hFile,int &sBuffer[],int lNumBytesToRead,int &lNumberOfBytesRead[]);
int InternetCloseHandle(int hInet);
#import

extern string OutSymbol    = "EURUSD";  // Символ
extern int Update          = 10;        // период обновления в сек.
//-----------------------------------
string URL,TEXT;
int count;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(Update);
   URL=StringConcatenate("https://www.myfxbook.com/ru/community/outlook/",OutSymbol);
   ReadHTML();
   MeterCreate();
   IndIni("name1",UpdateData("Long"));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EventKillTimer();
   ObjectsDeleteAll();
   Comment("");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   if(count!=UpdateData("Long"))
     {
      IndIni("name1",UpdateData("Long"));
      count=UpdateData("Long");
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int UpdateData(string pos)
  {
   int res=0;
   int Short,Long;
   int sh = StringFind(TEXT,"Short")+17;
   int sh2= StringFind(TEXT,"%",sh);
   Short=StrToInteger(StringSubstr(TEXT,sh,sh2-sh));
   //-----------------------------------
   sh = StringFind(TEXT,"Long")+16;
   sh2= StringFind(TEXT,"%",sh);
   Long=StrToInteger(StringSubstr(TEXT,sh,sh2-sh));
   //------------------------------------
   if(pos=="Short") res=Short;
   if(pos=="Long") res=Long;
   return(res);
  }
//+------------------------------------------------------------------+
//                                                                   |
//+------------------------------------------------------------------+
void ReadHTML()
  {
   if(!IsDllsAllowed())
     {
      Alert("Необходимо в настройках разрешить использование DLL");
     }
   int rv = InternetAttemptConnect(0);
   if(rv != 0)
     {
      Alert("Ошибка при вызове InternetAttemptConnect()");
     }
   int hInternetSession=InternetOpenW("Microsoft Internet Explorer",0,"","",0);
   if(hInternetSession<=0)
     {
      Alert("Ошибка при вызове InternetOpenW()");
     }
   int hURL=InternetOpenUrlW(hInternetSession,URL,"",0,0,0);
   if(hURL<=0)
     {
      Alert("Ошибка при вызове InternetOpenUrlW()");
      InternetCloseHandle(hInternetSession);
     }
   int cBuffer[256];
   int dwBytesRead[1];
   //TEXT="";
   while(!IsStopped())
     {
      bool bResult=InternetReadFile(hURL,cBuffer,1024,dwBytesRead);
      if(dwBytesRead[0]==0)
         break;
      string text = "";
      string text0= "";
      for(int i=0; i<256; i++)
        {
         text0=CharToStr((char)(cBuffer[i]&0x000000FF));
         if(text0!="\r") text=text+text0;
         else dwBytesRead[0]--;
         if(StringLen(text)==dwBytesRead[0]) break;

         text0=CharToStr((char)(cBuffer[i]>>(8  &0x000000FF)));
         if(text0!="\r") text=text+text0;
         else dwBytesRead[0]--;
         if(StringLen(text)==dwBytesRead[0]) break;

         text0=CharToStr((char)(cBuffer[i]>>(16  &0x000000FF)));
         if(text0!="\r") text=text+text0;
         else dwBytesRead[0]--;
         if(StringLen(text)==dwBytesRead[0]) break;

         text0=CharToStr((char)(cBuffer[i]>>(24  &0x000000FF)));
         if(text0!="\r") text=text+text0;
         else dwBytesRead[0]--;
         if(StringLen(text)==dwBytesRead[0]) break;
        }
      TEXT=TEXT+text;
      Sleep(1);
     }
   InternetCloseHandle(hInternetSession);
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ReadHTML();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void IndIni(string name,int vol)
  {
   if(vol>100) vol=100;
   for(int s=0; s<=vol; s++)
     {
      ObjectSet(name+string(s),OBJPROP_COLOR,clrGreen);
     }
   for(int s=vol; s<=100; s++)
     {
      ObjectSet(name+string(s),OBJPROP_COLOR,clrRed);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MeterCreate()
  {
   RectLabelCreate("bord1",50,21,104,15,clrYellowGreen);
   objectCreate("symb",5,22,OutSymbol,8,"Arial",clrWhite); 
   for(int i=0; i<100; i++)
     {
      objectCreate("name1"+string(i),51+(i*1),20); 
     }
    objectCreate("long",52,22,IntegerToString(UpdateData("Long")),8,"Arial",clrWhite);
    objectCreate("short",140,22,IntegerToString(UpdateData("Short")),8,"Arial",clrWhite); 
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void objectCreate(string name,int x,int y,string text="|",int size=10,
                  string font="Arial",color colour=CLR_NONE)
  {
   ObjectCreate(name,OBJ_LABEL,0,0,0);
   ObjectSet(name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
   ObjectSet(name,OBJPROP_COLOR,colour);
   ObjectSet(name,OBJPROP_XDISTANCE,x);
   ObjectSet(name,OBJPROP_YDISTANCE,y);
   ObjectSetText(name,text,size,font,colour);
  }
//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
void RectLabelCreate(string name,int x,int y,int width,int height,color colr)
  {
   
   ObjectCreate(0,name,OBJ_RECTANGLE_LABEL,0,0,0);
   //--- установим координаты метки 
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); 
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); 
//--- установим размеры метки 
   ObjectSetInteger(0,name,OBJPROP_XSIZE,width); 
   ObjectSetInteger(0,name,OBJPROP_YSIZE,height); 
//--- установим цвет фона 
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,CLR_NONE); 
//--- установим тип границы 
   ObjectSetInteger(0,name,OBJPROP_BORDER_TYPE,BORDER_FLAT); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger(0,name,OBJPROP_COLOR,colr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID); 
//--- установим толщину плоской границы 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(0,name,OBJPROP_BACK,true); 
  }

avatar

  14  verta81 Сообщений: 387

  • 21 февраля 2024, 01:40
+
0
verta81, с вашими возможностями я бы парсил сделки с демо-конкурсов из топ 10 участников.
avatar

  20  alex30774 Сообщений: 748

  • 22 февраля 2024, 11:37

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий