Программное открытие графика - страница 2

 
more:


А есть там функция, которая по имени инструмента закрывает график ?

По дескриптору графика можно закрыть, что одно и тоже.
 
Zhunko:
Нет там ошибок. Та функция, что по имени инструмента открывает график, ему не доступна. Да и вообще, запрещаю ему пользоваться этой библиотекой. Сам пусть пишет.


Да я собственно и не говорю что ошибка в библиотеке - я об ошибке, которая у него получилась...

 
more:


"ставите "вайт шарк", перехватываете трафик, смотрите что отправляет браузер при нажатии на кнопку. ну и так далее. "

Класс ! А можно поподробнее ? Что это за средство  "вайт шарк" ?


  https://ru.wikipedia.org/wiki/Wireshark

https://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0 

 
 
Zhunko:
По дескриптору графика можно закрыть, что одно и тоже.


  
//+------------------------------------------------------------------+
//|          Function  : CloseChart(Symbol(),Period()):bool;         |
//|          Copyright © 2013, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
#import "user32.dll"
   int  PostMessageA(int  hwd,int  msg,int  wParam,string lParam);
   int  GetWindowTextA(int hwd, string lpString, int nMaxCount);
   int  GetWindow(int hwd, int cmd);
   int  GetParent(int hwd);
#import
//+------------------------------------------------------------------+
#define WM_COMMAND                     0x0111
#define GW_HWNDFIRST                   0
#define GW_HWNDNEXT                    2
//+------------------------------------------------------------------+
bool CloseChart(string sy,int per){int i,hwd;string buff,nm;
   switch(per){
      case PERIOD_M1 : nm = sy+",M1"; break;
      case PERIOD_M5 : nm = sy+",M5"; break;
      case PERIOD_M15: nm = sy+",M15"; break;
      case PERIOD_M30: nm = sy+",M30"; break;
      case PERIOD_H1 : nm = sy+",H1"; break;
      case PERIOD_H4 : nm = sy+",H4"; break;
      case PERIOD_D1 : nm = sy+",D1"; break;
      case PERIOD_W1 : nm = sy+",W1"; break;
      case PERIOD_MN1: nm = sy+",MN1"; break;
   }
   hwd = GetParent(WindowHandle(Symbol(),Period()));
   hwd = GetWindow(hwd,GW_HWNDFIRST);
   for(i=0;i<256;i++){
      buff = "01234567890123456789012345678901234567890123456789";
      GetWindowTextA(hwd,buff,50);
      if(StringFind(buff,nm)==0){PostMessageA(hwd, WM_COMMAND, 57602, 0);}
      hwd = GetWindow(hwd,GW_HWNDNEXT);
      if(hwd == 0){break;}
   }
   return(false);
}
//+------------------------------------------------------------------+
 
FAQ:

  

Ну, класс ! Еще код  открытия и на сегодня я буду счастлив ! 
 
more:

Ну, класс ! Еще код  открытия и на сегодня я буду счастлив ! 



Ня!

//+------------------------------------------------------------------+
//|                                                          111.mq4 |
//|                                                                * |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property show_inputs

#include <WinUser32.mqh>
#import "user32.dll"
   int GetDlgItem (int hDlg,int nIDDlgItem);
   int GetParent (int hWnd);
   int GetAncestor (int hWnd,int gaFlags);
   
extern string Symb="GBPUSD";
extern int TimeFrame=15;



//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+

int start(){
   fOpenChart(Symb,TimeFrame);
}

int fOpenChart(string aSymbol,int aTimeFrame){
  int num=fMWSymbolIndex(aSymbol);
  if(num==-1)return;
  num++;  
  int com=fGetTFCommand(aTimeFrame);
  if(com==-1)return;
  int Handle=fParentHandle();
  int Count=SendMessageA(GetDlgItem(GetDlgItem(GetDlgItem(Handle,0xE81C),0x50),0x8A71),0x1004,0,0);
  OpenChartByNum(num);
        int h=GetNameActiveChartHandle();
        int ErrorPostMessage=PostMessageA(h,WM_COMMAND,com,0);
        PostMessageA(h,WM_COMMAND,33324,0);
        PostMessageA(h,WM_COMMAND,33324,0);
   return(0);
}
//+------------------------------------------------------------------+

int fGetTFCommand(int aTimeFrame){
   int com1[]={33137,33138,33139,33140,33135,33136,33134,33141,33334};
   int com2[]={1,5,15,30,60,240,1440,10080,43200}; 
      for(int i=0;i<9;i++){
         if(aTimeFrame==com2[i]){
            return(com1[i]);
         }
      }  
   return(-1);   
}

int fParentHandle(){
   int HandleParent;
   int Handle=WindowHandle(Symbol(),Period());
      while(Handle!=0){
         HandleParent=Handle;
         Handle=GetParent(Handle);
      }
   return(HandleParent);
} 

int fMWSymbolIndex(string aSymbol){
   string SymbolsFileName;
   int Offset,SymbolsNumber;
   SymbolsFileName="symbols.sel";
   int hFile=FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ);
   if(hFile<0)return(-1);
   SymbolsNumber=(FileSize(hFile)-4)/128;
   Offset=116;
   FileSeek(hFile,4,SEEK_SET);
   int rv=-1;
      for(int i=0;i<SymbolsNumber;i++){
         string S=FileReadString(hFile,12);
            if(S==aSymbol){
               rv=i;
               break;
            }
         FileSeek(hFile,Offset,SEEK_CUR);
      }
   FileClose(hFile);
   return(rv);
}

void OpenChartByNum(int Num){
   int Handle=fParentHandle();  
      if(Handle!=0){
         Handle=GetDlgItem(GetDlgItem(GetDlgItem(Handle,0xE81C),0x50),0x8A71);
         PostMessageA(Handle,WM_KEYDOWN,0x24,0);
            while(Num>1){
               PostMessageA(Handle,WM_KEYDOWN,0x28,0);
               Num--;
            }
      }
   PostMessageA(fParentHandle(),WM_COMMAND,33160,0);
}
 
int GetNameActiveChartHandle(){
   int tWH=WindowHandle(Symbol(),Period());
   int tTWnd=GetAncestor(tWH,2);
   int hMDICWnd=GetDlgItem(tTWnd,0xE900);
   int hMDIAWnd=SendMessageA(hMDICWnd,0x0229,0,0);
   int tWH2=GetDlgItem(hMDIAWnd, 0xE900);
   return(tWH2);
}
 
 
 

Всё это есть в библиотеке

=======================

Рустам, зря удалил мои посты с критикой кода выше. Зачем народ в заблуждение вводить? Код ненадёжный. Исправте его. 

 

задачу по закачке истории решал примерно так

http://forum.masterforex-v.org/index.php?showtopic=19724

 
 
Zhunko:
Нет там ошибок. Та функция, что по имени инструмента открывает график, ему не доступна. Да и вообще, запрещаю ему пользоваться этой библиотекой. Сам пусть пишет.


Вадим, не воспринимай это как личное, как спеца я тебя уважаю, но либа не запускается...