Discussione sull’articolo "Utilizzo di WinInet.dll per lo scambio di dati tra terminali tramite Internet"

 

Il nuovo articolo Utilizzo di WinInet.dll per lo scambio di dati tra terminali tramite Internet è stato pubblicato:

Questo articolo descrive i principi del lavoro con Internet tramite l'uso di richieste HTTP e lo scambio di dati tra terminali, utilizzando un server intermedio. Viene presentata una classe di libreria MqlNet per lavorare con le risorse Internet nell'ambiente MQL5. Monitorare i prezzi di diversi broker, scambiare messaggi con altri trader senza uscire dal terminale, cercare informazioni su Internet: questi sono solo alcuni esempi recensiti in questo articolo.

Per inviare una richiesta e ricevere una pagina in risposta a questa richiesta, avremo bisogno delle restanti tre funzioni HttpOpenRequest, HttpSendRequest e InternetReadFile. L'essenza della ricezione della pagina in risposta a una richiesta è fondamentalmente il semplice processo di salvataggio del suo contenuto in un file locale.


Autore: ---

 

Potente! Articolo molto utile. Per i principianti è difficile cercare su Internet tutte queste informazioni. E qui tutto è raccolto in un unico articolo.

In generale, lavorare con Internet è uno degli argomenti più interessanti. Creare un sito completamente automatico (ma meglio più siti o rubriche su più siti) per questo terminale. Visualizzare la situazione attuale del mercato sul sito. Visualizzazione delle analisi di mercato e dei segnali di trading sul sito. "Intercettazione dei segnali di trading da parte di altri terminali. Invio di segnali e messaggi agli utenti interessati. Aggiunta/eliminazione degli utenti "interessati" nell'elenco (database) per il loro ulteriore servizio da parte del terminale. Raccolta e analisi di informazioni da altri siti, creazione e pubblicazione di rapporti...

Per i principianti è importante avere a disposizione molti esempi semplici di questa tecnologia.

 
Rinng писал(а) :

"Intercettazione" dei segnali di trading da parte di altri terminali.

Cosa si intende per intercettazione? Si intende prendere un segnale dal sito ed eseguirlo nel terminale?

Invio di segnali e messaggi agli utenti interessati. Aggiungere/rimuovere gli utenti "interessati" nell'elenco (database) per il loro ulteriore servizio da parte del terminale.

In questo caso ci sono due opzioni: o fare un normale copiatore di offerte. solo scambio di informazioni con un server intermedio.
Oppure calcolare una funzione nascosta sul server e fornire all'utente il risultato di questa funzione affinché il suo esperto prenda una decisione.

 
sergeev:

Cosa si intende per intercettazione? Si intende prendere un segnale dal sito ed eseguirlo nel terminale?

Ci sono due opzioni: o fare una normale copia dei trade, ma scambiare solo informazioni con un server intermedio.
Oppure effettuare il calcolo di una funzione nascosta sul server, di cui l'utente riceve il risultato in modo che il suo Expert Advisor possa prendere una decisione.

1) "Intercettazione": ricevere esattamente i segnali da questo server intermedio (sito) ed eseguirli nel terminale dell'utente.

2) Accesso alle informazioni del server (segnali di mercato, messaggi personali, analisi di mercato) tramite accesso personale, in base al database dell'utente. Gestione del database dell'utente tramite il terminale principale e/o tramite script del server (ad esempio, script per il pagamento dell'accesso alle informazioni tramite Webmoney).

 

Rinng:

2) Accesso alle informazioni del server (segnali di mercato, messaggi personali, analisi di mercato) tramite accesso personale, in base al database degli utenti. Gestione del database dell'utente tramite il terminale principale e/o tramite script del server (ad esempio - script di pagamento per l'accesso alle informazioni tramite Webmani).

Se si tratta della ricezione di informazioni sullo stato di "qualcosa" nel terminale, credo che questo sia un punto interessante.

Come si scrive - messaggi dal servizio a cui l'utente è collegato.... Ma a questo scopo l'esperto deve essere in grado di leggerli e di emetterli, quindi si tratta di una sorta di sviluppo individuale per qualche servizio.

Se avete una variante o un'idea di un protocollo generalizzato che possa essere installato su qualsiasi server sorgente e che sia facile da connettere in un terminale, possiamo discuterne. Personalmente sono interessato all'argomento della globalizzazione delle connessioni nei terminali.

 

Sono interessato a pubblicare le informazioni dell'Expert Advisor su diversi siti e ad accedere alle informazioni pubblicate privatamente, tramite password, da altri terminali. E anche la gestione del database degli utenti dall'EA.

Per quanto riguarda la globalizzazione dei collegamenti tra i terminali, penso che non si possa fare a meno di un server "remoto". In generale, dovrebbe essere così:

I compiti del terminale master comprendono la preparazione di tutte le informazioni necessarie e l'amministrazione del server remoto.

I compiti del server remoto comprendono l'identificazione dei terminali slave, la gestione del database degli utenti (terminali slave), la ricezione e l'invio delle informazioni necessarie ai terminali, la progettazione e la pubblicazione dei siti.

Il compito di un terminale slave è ricevere ed elaborare le informazioni ad esso destinate e inviare una risposta al server.

In forma semplice, il server può essere progettato con PHP 5.0.

Lo scambio di dati può avvenire tramite il protocollo FTP, con lo scambio di file.

In generale, i programmi dovrebbero essere tre: server, terminal-admin-server, terminal-client.

 

Per questo circuito, ho implementato due approcci.

1. Il terminale master è l'iniziatore.
In questo caso mette le informazioni richieste sul server stesso, e gli slave si limitano a prenderle da lì ed elaborarle secondo l'algoritmo. Questo non è diverso dall'elaborazione normale delle informazioni, tranne per il fatto che la loro fonte è il terminale master sotto il nostro controllo.

Applicazione: copiatori di transazioni e sistemi che non richiedono la reazione del master agli stati degli slave.

2. Iniziatore del terminale slave.
In questo caso il master agisce solo come una macchina remota che sa più del master. Cioè, ad esempio, contiene le condizioni per entrare nel mercato tramite segnali o formule di calcolo nascoste, che vengono richieste dallo slave.
Applicazione: calcolo di indicatori. Ottenere segnali di trading.

Le funzioni del server in questo caso consistono solo nella differenziazione dei diritti di accesso, ossia nel verificare se lo slave ha il diritto di accettare o lasciare una richiesta (analogamente, per il master). Il database dei terminali può essere memorizzato in MySQL o in un normale file csv.

Il tutto viene realizzato tramite richieste (POST / GET), poiché FTP in questo caso impone difficoltà alla parte server.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Metaarbitrage.mq5 non funziona. Scrive nei log:

Come risolvere?

sergeev:

Tutto è implementato tramite richieste (POST / GET) poiché FTP in questo caso impone difficoltà alla parte server.
.

Concordo. Suggerisco un pacchetto di php e MySql. Con MySql sarà facile organizzare un sistema di valutazione, memorizzare i dati, fare selezioni.

 
Graff:

Metaarbitrage.mq5 non funziona. Nei log c'è scritto:

Come risolvere il problema?

Ho appena controllato: nel mio test l'errore si blocca sulla funzione HttpOpenRequestW con la riga Access violation read to 0x003F0070 in'kernel32.dll'.

Mi sembra che qualcosa sia cambiato nelle chiamate alle DLL dopo la pubblicazione dell'articolo.

Concordo. Suggerisco un pacchetto di php e MySql. Con MySql sarà facile organizzare un sistema di valutazione, memorizzare i dati, fare selezioni.

Naturalmente. MySql è sempre meglio che mantenere solo i file.
 
sergeev:

Ho appena controllato: nel mio test, l'errore si blocca sulla funzione HttpOpenRequestW con la riga Access violation read to 0x003F0070 in'kernel32.dll'.

Mi sembra che qualcosa sia cambiato nelle chiamate alle DLL dopo la pubblicazione dell'articolo.

Naturalmente. MySql è sempre meglio che mantenere solo i file.

I numeri di errore sono diversi.

Sono pronto ad aiutare con lo sviluppo lato server e gli script pcp nel mio tempo libero.

 
Graff:

I numeri di errore sono diversi.

L'ho inviato a servicedesk. Lasciate che lo controllino anche loro, penso che l'errore sia più profondo, o che sia cambiato qualcosa.

Sono pronto ad aiutare con lo sviluppo lato server e gli script pcp nel mio tempo libero.

Qual è l'idea, o meglio, quale dovrebbe essere l'output?
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.