Comment se protéger contre la copie des transactions longues du testeur ?

 

Salutations à tous.

La question est dans le titre. L'objectif est de protéger l'EA contre toute utilisation sur des données réelles, tout en permettant son exécution dans le testeur de stratégie. Nous pourrions donc exécuter la version de démonstration dans le testeur de stratégie et voir qu'elle fonctionne, mais nous ne pourrions pas copier les transactions en les transférant manuellement vers un autre terminal.

Le problème est que les transactions des conseillers experts peuvent durer des semaines. Cela signifie qu'un utilisateur peu scrupuleux peut exécuter une version de démonstration dans le testeur de stratégie et ouvrir les mêmes transactions manuellement dans un autre terminal avec un jour de retard. Et il ou elle ne perd pas beaucoup de bénéfices.

Par conséquent, nous avons décidé que le conseiller expert ne devait fonctionner dans le testeur de stratégie que jusqu'à la date antérieure d'un mois à la date actuelle. En même temps, lorsque de nouvelles dates apparaissent, il faut laisser le conseiller expert travailler dans le testeur de stratégie pendant un temps de plus en plus long.

Une date fixe de fin de travail dans le testeur n'est pas bonne - les utilisateurs soupçonnent que les cotations sont stockées dans le conseiller expert exactement jusqu'à cette date, ce qui explique pourquoi il fonctionne. Par conséquent, nous devons obtenir la date actuelle dans le testeur de stratégie et permettre au conseiller expert de fonctionner uniquement jusqu'à la date, qui est un mois plus tôt.

Il est difficile d'obtenir la date actuelle du testeur, mais nous avons réussi à le faire. Cependant, nous avons trouvé un utilisateur astucieux qui avançait l'heure sur son ordinateur et lisait facilement les transactions effectuées par le testeur de stratégie.

Comment puis-je empêcher le testeur de fonctionner sur les cotations du mois dernier ?

Que suggérez-vous de faire, chers collègues ?

 
Après avoir appris un peu de WINAPI, vous pouvez écrire un utilitaire qui tambourine le bouton "start" dans le testeur, sauvegarde le rapport et lit les nouvelles transactions à partir de là. Et ensuite, vous pouvez simplement dupliquer les transactions dans le terminal.
 

Oui, Dimitri, vous pouvez le faire même sans WinAPI, en utilisant simplement le script sur AutoIT.

Non seulement les conseillers experts qui travaillent sur des périodes quotidiennes, mais même les conseillers experts qui travaillent sur des périodes de cinq minutes ne sont pas à l'aise dans ce cas.

À mon avis, la solution la plus raisonnable est d'arrêter le fonctionnement du testeur un mois avant la date actuelle. Mais que faire lorsque la date est modifiée sur votre ordinateur ?

L'idée que j'ai est d'obtenir du testeur l'heure réelle des dernières citations du terminal. Mais je ne sais pas comment faire. De plus, je ne veux pas m'embêter avec des DLL supplémentaires écrites par moi-même, car elles font également "peur" aux clients.

 
George Merts:

Oui, Dimitri, vous pouvez le faire même sans WinAPI, en utilisant simplement le script sur AutoIT.

Non seulement les conseillers experts qui travaillent sur des périodes quotidiennes, mais même les conseillers experts qui travaillent sur des périodes de cinq minutes commencent à se sentir mal à l'aise dans ce cas.

À mon avis, la solution la plus raisonnable est d'arrêter le fonctionnement du testeur un mois avant la date actuelle. Mais que faire lorsque la date est modifiée sur votre ordinateur ?

L'idée que j'ai est d'obtenir du testeur l'heure réelle des dernières citations du terminal. Mais je ne sais pas comment faire. De plus, je ne veux pas m'embêter avec des DLL supplémentaires écrites par moi-même, car elles font également "peur" aux clients.

La date dans le terminal n'est pas traduite. TimeCurrent() donne la dernière heure du serveur.
 
Dmitiry Ananiev:
La date dans le terminal n'est pas traduite. TimeCurrent() donne la dernière heure du serveur.

Donc TimeCurrent() est simulé dans le testeur... Ou est-ce que je rate quelque chose ? Vous devez connaître l'heure réelle du testeur, n'est-ce pas ?

En théorie, vous pouvez utiliser WebRequest pour demander l'heure actuelle réelle à un serveur (y compris le vôtre). Et l'exigence pour le test de stratégie serait d'entrer l'adresse de ce serveur dans le terminal.

 
Игорь Герасько:

Donc TimeCurrent() est simulé dans le testeur... Ou est-ce que je rate quelque chose ? Vous devez connaître l'heure actuelle réelle du testeur.

Vous pouvez obtenir l'heure actuelle de votre ordinateur à partir du testeur.

Le seul problème est qu'un utilisateur mal intentionné peut le modifier radicalement.

Idéalement, vous pourriez utiliser WebRequest pour demander l'heure actuelle réelle à un serveur (y compris le vôtre). Et l'exigence pour la stratégie de test serait d'entrer l'adresse de ce serveur dans le terminal.

WebRequest n'est pas exécuté dans le testeur de stratégie.
 

George Merts:

Par conséquent, il est nécessaire d'obtenir la date actuelle dans le testeur et de ne permettre à l'EA de travailler que jusqu'à une date inférieure d'un mois.

--

[]... il y avait un utilisateur astucieux qui semblait avancer l'heure sur son ordinateur et lire en toute tranquillité les transactions effectuées par le testeur.

Obtenez l'heure d'une tierce partie indépendante - soit par DLL, soit par WebRequest, comme indiqué ci-dessus. Il n'y a pas d'autres options, je suppose.
 
Igor Konyashin:
Obtenez l'heure à partir d'une tierce partie indépendante - soit via DLL ou WebRequest, comme indiqué ci-dessus. Il n'y a pas d'autres options, je suppose.
WebRequest, comme il s'est avéré, n'est pas applicable dans le testeur de stratégie. Oui, c'est très triste, mais jusqu'à présent, je ne peux pas penser à autre chose qu'à une DLL auto-écrite... Et il semblerait - il suffit de connaître la date des dernières cotations réelles reçues du terminal...
 
George Merts:

Il est possible de connaître l'heure actuelle de l'ordinateur à partir du testeur.

Le seul problème est qu'un utilisateur mal intentionné peut la modifier radicalement.

C'est ce que je veux dire. Sauf que TimeCurrent() ne fonctionne pas non plus dans le testeur.
WebRequest n'est pas exécuté dans le testeur de stratégie.
Je n'étais pas au courant. Merci pour ces informations.
 
Игорь Герасько:
C'est ce que je dis. Sauf que TimeCurrent() ne fonctionne pas non plus dans le testeur.
TimeCurrent() - ne fonctionne pas du tout, il ne renvoie pas l'heure actuelle de l'ordinateur, mais l'heure de la cotation, qui dépend des paramètres du testeur de stratégie.
 
George Merts:
TimeCurrent() - ne fonctionne pas du tout, il ne renvoie pas l'heure actuelle de l'ordinateur, mais l'heure de la cotation, qui dépend des paramètres du testeur de stratégie.
Quels paramètres dois-je mettre et où ? TimrCurrent() - heure du serveur. Dans le testeur, c'est l'heure d'arrivée des tics du serveur. Depuis que j'écris des hiboux, je ne les ai jamais rattachés à l'heure locale de l'ordinateur.