Tout d'abord, je tiens à remercier l'auteur pour cet article. Je pense que ce sujet est surtout pertinent pour les traders qui ont déjà leurs développements originaux et qui cherchent à protéger leur propriété intellectuelle. Le modèle de transmission des signaux de trading par le biais du serveur convient parfaitement à cet objectif.
Alex, votre article est excellent, mais je pense qu'un point très important n'a pas été abordé, à savoir comment transmettre toutes ces données sous forme cryptée par le biais d'une connexion sécurisée (cryptage 256 bits). En d'autres termes, les signaux de l'ordinateur A sont transmis au serveur par le biais d'une connexion sécurisée, et l'ordinateur B lit à son tour ces données sur le serveur par le biais d'une connexion sécurisée. Avec une telle organisation de la transmission des signaux, le courtier ne sera pas en mesure de remonter à la source de ces signaux, car tout le trafic sera crypté.
Alex, qu'en pensez-vous et comment la question de la sécurité peut-elle être résolue plus efficacement ?
Je vous renvoie à la deuxième partie de l' article - transmission POST et utilisation de multipart/form-data.
En ce qui concerne la sécurité, j'ai cru comprendre que vous parliez de travailler avec des certificats SSL ?
Cela peut être résolu en ajoutant deux drapeaux lors de la création des requêtes. Mais je recommanderais de travailler avec WinHttp.dll pour SSL.
Tout est presque identique dans l'interface de création de requêtes, mais il est annoncé comme plus avancé et possède un peu plus de fonctionnalités.
Oui, je faisais référence aux certificats SSL. Merci pour le conseil, je l'ai pris en considération. Si je vous ai bien compris, vous êtes d'accord pour dire que ce modèle d'organisation du transfert de données peut être considéré comme suffisamment sûr ?
enotis: Oui, je faisais référence aux certificats SSL. Je vous remercie de votre conseil, j'en ai tenu compte. Si je vous comprends bien, vous êtes donc d'accord pour dire que ce modèle d'organisation du transfert de données peut être considéré comme suffisamment sûr ?
Vous pouvez probablement imaginer d'autres options, par exemple crypter vous-même vos données et les transmettre au grand jour.
il s'agit d'une fonction de la classe MqlNet, avec vérification SSL
//------------------------------------------------------------------ Requestbool MqlNet::Request(tagRequest &req)
{
if(!TerminalInfoInteger(TERMINAL_DLLS_ALLOWED)) { Print("-DLL not allowed"); return(false); } // vérifier si la DLL est autorisée dans le terminalif(!MQL5InfoInteger(MQL5_DLLS_ALLOWED)) { Print("-DLL not allowed"); return(false); } // vérifier si la DLL est autorisée dans le terminalif (req.toFile && req.stOut=="") { Print("-File not specified "); return(false); }
uchar data[]; int hRequest, hSend;
string Vers="HTTP/1.1"; string nill="";
if (req.fromFile) { if (FileToArray(req.stData, data)<0) { Print("-Err reading file "+req.stData); return(false); } }// lire le fichier dans un tableauelseStringToCharArray(req.stData, data);
if (hSession<=0 || hConnect<=0) { Close(); if (!Open(Host, Port, User, Pass, Service)) { Print("-Err Connect"); Close(); return(false); } }
// créer un descripteur de demande
hRequest=HttpOpenRequestW(hConnect, req.stVerb, req.stObject, Vers, nill, 0, INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_RELOAD|INTERNET_FLAG_PRAGMA_NOCACHE, 0);
if (hRequest<=0) { Print("-Err OpenRequest"); InternetCloseHandle(hConnect); return(false); }
// envoyer la demandeint n=0;
while (n<3) // La première est normale, la seconde si SSL est requis.
{
n++;
hSend=HttpSendRequestW(hRequest, req.stHead, StringLen(req.stHead), data, ArraySize(data)); // a envoyé le fichierif (hSend<=0) // si l'envoi n'aboutit pas, vérifier SSL
{
int err=0; err=GetLastError(err); Print("-Err SendRequest= ", err);
if (err!=ERROR_INTERNET_INVALID_CA) // si l'erreur est réellement liée à la requête SSL
{
int dwFlags;
int dwBuffLen = sizeof(dwFlags); // définir des drapeaux supplémentaires
InternetQueryOptionW(hRequest, INTERNET_OPTION_SECURITY_FLAGS, dwFlags, dwBuffLen);
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
int rez=InternetSetOptionW(hRequest, INTERNET_OPTION_SECURITY_FLAGS, dwFlags, sizeof (dwFlags));
if (!rez) { Print("-Err InternetSetOptionW= ", GetLastError(err)); break; }
}
elsebreak;
}
elsebreak;
}
if (hSend>0) ReadPage(hRequest, req.stOut, req.toFile); // lire la page si elle est envoyée
InternetCloseHandle(hRequest); InternetCloseHandle(hSend); // fermer toutes les poignéesif (hSend<=0) Close(); // fermer en cas d'erreurreturn(true);
}
Oui, il y a beaucoup d'options pour le cryptage, mais c'est le sujet d'un article séparé. Nous devons d'abord améliorer le modèle de signalisation par l'intermédiaire de l'hébergement. Merci pour vos conseils.
Les numéros d'erreur sont différents.
l'erreur a été corrigée
dans la fonction
int HttpOpenRequestW
il est nécessaire de définir le 6ème paramètre comme int, et de lui passer 0 au lieu de " ".
int HttpOpenRequestW(int hConnect, string &lpszVerb, string &lpszObjectName, string &lpszVersion, string &lpszReferer, int lplpszAcceptTypes, uint dwFlags, int dwContext) ;
erreur corrigée
dans la fonction
int HttpOpenRequestW
il faut définir le 6ème paramètre comme int, et lui passer 0 au lieu de " ".
int HttpOpenRequestW(int hConnect, string &lpszVerb, string &lpszObjectName, string &lpszVersion, string &lpszReferer, int lplpszAcceptTypes, uint dwFlags, int dwContext) ;
Cela ne fonctionne pas, il y a la même erreur, comment faire ?
Je viens de faire une révision de toutes les classes il y a une semaine.
Cela fonctionne très bien.
Tout d'abord, je tiens à remercier l'auteur pour cet article. Je pense que ce sujet est surtout pertinent pour les traders qui ont déjà leurs développements originaux et qui cherchent à protéger leur propriété intellectuelle. Le modèle de transmission des signaux de trading par le biais du serveur convient parfaitement à cet objectif.
Alex, votre article est excellent, mais je pense qu'un point très important n'a pas été abordé, à savoir comment transmettre toutes ces données sous forme cryptée par le biais d'une connexion sécurisée (cryptage 256 bits). En d'autres termes, les signaux de l'ordinateur A sont transmis au serveur par le biais d'une connexion sécurisée, et l'ordinateur B lit à son tour ces données sur le serveur par le biais d'une connexion sécurisée. Avec une telle organisation de la transmission des signaux, le courtier ne sera pas en mesure de remonter à la source de ces signaux, car tout le trafic sera crypté.
Alex, qu'en pensez-vous et comment la question de la sécurité peut-elle être résolue plus efficacement ?
Alex, qu'en pensez-vous et comment la question de la sécurité peut-elle être résolue plus efficacement ?
Je vous renvoie à la deuxième partie de l' article - transmission POST et utilisation de multipart/form-data.
En ce qui concerne la sécurité, j'ai cru comprendre que vous parliez de travailler avec des certificats SSL ?
Cela peut être résolu en ajoutant deux drapeaux lors de la création des requêtes. Mais je recommanderais de travailler avec WinHttp.dll pour SSL.
Tout est presque identique dans l'interface de création de requêtes, mais il est annoncé comme plus avancé et possède un peu plus de fonctionnalités.
Je vous renvoie à la deuxième partie de l' article - transmission POST et utilisation de multipart/form-data.
En ce qui concerne la sécurité, j'ai cru comprendre que vous parliez de travailler avec des certificats SSL ?
Cela peut être résolu en ajoutant deux drapeaux lors de la création des requêtes. Mais je recommanderais de travailler avec WinHttp.dll pour SSL.
Tout est presque identique dans l'interface de création de requêtes, mais il est annoncé comme plus avancé et possède un peu plus de fonctionnalités.
Oui, je faisais référence aux certificats SSL. Je vous remercie de votre conseil, j'en ai tenu compte. Si je vous comprends bien, vous êtes donc d'accord pour dire que ce modèle d'organisation du transfert de données peut être considéré comme suffisamment sûr ?
Vous pouvez probablement imaginer d'autres options, par exemple crypter vous-même vos données et les transmettre au grand jour.
il s'agit d'une fonction de la classe MqlNet, avec vérification SSL
vous pouvez également définir les drapeaux suivants
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA ;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID ;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID ;
vous pouvez également définir les drapeaux suivants
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA ;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID ;
dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID ;
Bonjour,
Metachat est une bonne idée et j'aimerais en faire fonctionner un moi-même.
Rien de ce qui est référencé sur le site fxmaster.de ne fonctionne plus - pouvez-vous fournir la source PHP de metachat ? Merci beaucoup.