помогите разобраться - страница 2

 

Добрый вечер.Спасибо всем за ответы.

Понял,что нельзя подключиться к торговому терминалу брокера.Но не понял,а почему нельзя.Если вопрос в оплате,сказали бы.

А то нельзя.А почему нельзя?Скажите,кто знает.Заранее спасибо.

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

А я прошу только считывание.Чтобы всегда с минимальной задержкой анализировалась последняя котировка.Что-то не понимаю.

 

Вот так вот решили разработчики всего этого дела. Котировки с сервера может читать только термианал.

 

Спасибо.

Пришел мне ответ от одного брокера.Нельзя,потому что мы заключили договор на поставку котировок.А он платный.

Сейчас думаю.А с кем они заключили такой договор.Может и мне можно такой договор заключить.

Если кто знает,скажите пару слов в тему.Заранее спасибо.

 
aznvsk:

...Я всю информацию по рынку беру через терминал скриптом и потом вручную забрасываю на свой сайт.

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

Спасибо.Понял.

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

Советник отправляет на сайт котировки.В MQL4 такое есть?Если да,то какие команды.MQL5 пока не изучал.Заранее спасибо.

 
aznvsk:

Спасибо.Понял.

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

Советник отправляет на сайт котировки.В MQL4 такое есть?Если да,то какие команды.MQL5 пока не изучал.Заранее спасибо.

Тут ближе к началу темы есть ссылочка на wininet (это можно делать на MQL4 тоже). Скрипту на сервере передаются данные в запросе методом GET или POST (как данные с формы на вебстранице).
 

Вопрос только в том зачем идти таким геммороидальным путем, когда можно поставить на сайт уже готовые виджеты и информеры, которых в инете туча ???

например отсюда : http://www.forexpf.ru/_informer_/

или вот отсюда : http://www.investing.com/webmaster-tools/

 

Спасибо.Ответы у всех толковые.Отвечаю на вопрос:

Вопрос только в том зачем идти таким геммороидальным путем, когда можно поставить на сайт уже готовые виджеты и информеры, которых в инете туча ???

Потому,что надо не просто графики,таблицы,а числа в массиве,чтобы их обработать по своему алгоритму и вывести свой анализ в графике.Если вставить,например,информер,то как из него числа вывести.Опять вручную?

Был ответ:

Тут ближе к началу темы есть ссылочка на wininet (это можно делать на MQL4 тоже). Скрипту на сервере передаются данные в запросе методом GET или POST (как данные с формы на вебстранице).

Подскажите,пожалуйста. Пока не работал. Wininet-это связано с C/C++ или нет?Как в MQL4 сделать такую вставку?Заранее спасибо.



 
aznvsk:

...

Подскажите,пожалуйста. Пока не работал. Wininet-это связано с C/C++ или нет?Как в MQL4 сделать такую вставку?Заранее спасибо.


Нет не с++, это Win API. Для начала почитайте ту статью по ссылке. Как на Mql4 сделать, поищите по форуму, были темы.
 
Вот любит у нас народ делать все через одно место... Держите.
//+------------------------------------------------------------------+
//|                                                 InetFunction.mq4 |
//|                                 Copyright © 2011, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, XrustSolution."
#property link      "mail: xrustx@gmail.com"
//+------------------------------------------------------------------+
//|     Defines                                                        |
//+------------------------------------------------------------------+
#define HTTP_QUERY_CONTENT_LENGTH 0x00000005
#define HTTP_QUERY_FLAG_NUMBER    0x20000000
//----
#define INTERNET_OPEN_TYPE_DIRECT       0
#define INTERNET_OPEN_TYPE_PRECONFIG    0x00000000   // use registry configuration
#define INTERNET_FLAG_RELOAD            0x80000000
#define INTERNET_FLAG_NO_CACHE_WRITE    0x04000000
#define INTERNET_FLAG_PRAGMA_NOCACHE    0x00000100
//----
#define AGENT "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)"
//+------------------------------------------------------------------+
//|     Export Function from WINAPI                                    |
//+------------------------------------------------------------------+
#import "wininet.dll"
        int InternetAttemptConnect (int x);
        int InternetOpenA                                       ( string sAgent, int lAccessType, string sProxyName, string sProxyBypass, int lFlags );
        int InternetOpenUrlA                            ( int hInternetSession, string sUrl, string sHeaders, int lHeadersLength, int lFlags, int lContext );
        int InternetReadFile                            ( int hFile, int& lpvBuffer[], int lNumBytesToRead, int& lNumberOfBytesRead[] );
        int InternetCloseHandle                 ( int hInet );
        int InternetQueryDataAvailable  ( int hFile, int& lpdwNumberOfBytesAvailable[], int dwFlags, int dwContext );
        int HttpQueryInfoA                                      ( int hRequest, int dwInfoLevel, int& lpvBuffer[], int& lpdwBufferLength[], int& lpdwReserved[] );
#import
//+------------------------------------------------------------------+
//|                                 Function  :                   InetToString |
//|                                 Copyright © 2010, XrustSolution. |
//|                                           mail: xrustx@gmail.com |
//+------------------------------------------------------------------+
int InetToString(string fUrl, string &out){//Print("URL :",fUrl);Print("IN DATA",out);
   if(!IsDllsAllowed()){
     Alert("Must be configured to allow the use of DLL");
     return(1001);
   }
   int rv = InternetAttemptConnect(0);
   if(rv != 0){
     Print("Error when calling InternetAttemptConnect ()");
     return(1002);
   }
   int hSession = InternetOpenA(AGENT, INTERNET_OPEN_TYPE_DIRECT, "0", "0", 0);
   if(hSession <= 0){
     Print("Error when calling InternetOpenA()");
     return(1003);         
   }    
        int hReq = InternetOpenUrlA(hSession, fUrl, "0", 0,
                                                                        INTERNET_FLAG_NO_CACHE_WRITE |
                                                                        INTERNET_FLAG_PRAGMA_NOCACHE |
                                                                        INTERNET_FLAG_RELOAD, 0
                                                                        );
   if(hReq <= 0){
     Print("Error when calling InternetOpenUrlA()");
     InternetCloseHandle(hSession);
     return(1004);
   }
   int cBuffer[256];
   ArrayInitialize(cBuffer,0);
   int dwBytesRead[1]; 
   ArrayInitialize(dwBytesRead,0);
   string TXT = "";
   while(!IsStopped()){
        bool bResult = InternetReadFile(hReq, cBuffer, 1024, dwBytesRead);
        if(dwBytesRead[0] == 0)break;
        string text = "";   
        for(int i = 0; i < 256; i++){
                text = text + CharToStr(cBuffer[i] & 0x000000FF);
                        if(StringLen(text) == dwBytesRead[0])break;
                        text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
                        if(StringLen(text) == dwBytesRead[0])break;
                text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
                if(StringLen(text) == dwBytesRead[0])break;
                text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
                if(StringLen(text) == dwBytesRead[0])break;
                }
        TXT = TXT + text;
        Sleep(1);
        }
   if(StringFind(TXT,"<html>",0)>=0||StringFind(TXT,"<HTML>",0)>=0||StringFind(TXT,"<title>",0)>=0||StringFind(TXT,"<head>",0)>=0){
        if(StringFind(TXT,">404",0)>=0){return(404);}
   }  
   out = TXT;  
        InternetCloseHandle(hReq);
        InternetCloseHandle(hSession);  
        //Print("ServerAnswer:",out);                                                                           
        return(0);         
}