Cómo protegerse contra la copia de operaciones largas del probador

 

Saludos a todos.

La pregunta está en el título. El objetivo es proteger el EA para que no sea utilizado en datos reales, pero permitir que se ejecute en el probador de estrategias. Así que podríamos ejecutar la versión demo en el probador de estrategias y ver que funciona, pero no podríamos copiar las operaciones transfiriéndolas manualmente a otro terminal.

El problema es que las operaciones del Asesor Experto pueden durar semanas. Y esto significa que un usuario sin escrúpulos puede ejecutar una versión demo en el probador de estrategias y abrir las mismas operaciones manualmente en otro terminal con un día de retraso. Y él o ella no pierde mucho beneficio.

En consecuencia, decidimos que el Asesor Experto debe funcionar en el Probador de Estrategias sólo hasta la fecha un mes antes de la fecha actual. Al mismo tiempo, cuando aparecen nuevas fechas, se debe permitir que el Asesor Experto trabaje en el Probador de Estrategias durante un tiempo cada vez más largo.

Una fecha fija de fin de trabajo en el probador no es buena - los usuarios sospechan que las cotizaciones se almacenan en el Asesor Experto exactamente hasta esta fecha, por lo que funciona. Por lo tanto, necesitamos obtener la fecha actual en el Probador de Estrategias y permitir que el Asesor Experto trabaje sólo hasta la fecha, que es un mes anterior.

Es difícil obtener la fecha actual del probador, pero lo hemos conseguido. Sin embargo, encontramos un usuario inteligente que adelantaba la hora en su ordenador y leía fácilmente las operaciones realizadas desde el Probador de Estrategias.

¿Cómo puedo evitar que el comprobador se ejecute en las cotizaciones del mes pasado?

¿Qué sugieren hacer, colegas?

 
Habiendo aprendido un poco sobre WINAPI, se puede escribir una utilidad que tamborilee el botón de "inicio" en el probador, guarde el informe y lea las nuevas operaciones desde allí. Y entonces puedes simplemente duplicar las operaciones en el terminal.
 

Sí, Dimitri, puedes hacerlo incluso sin WinAPI, simplemente usando el script en AutoIT.

No sólo los Asesores Expertos que trabajan en periodos diarios sino incluso los Asesores Expertos que trabajan en periodos de cinco minutos no se sienten cómodos en este caso.

En mi opinión, la solución más razonable es detener el funcionamiento del probador un mes antes de la fecha actual. Pero, ¿qué hacer cuando se cambia la fecha en el ordenador?

La idea que tengo es obtener de alguna manera del probador la hora real de las últimas cotizaciones del terminal. Pero no sé cómo hacerlo. Además, no quiero meterme con DLL adicionales autoescritas, también "asustan" a los clientes.

 
George Merts:

Sí, Dimitri, puedes hacerlo incluso sin WinAPI, simplemente usando el script en AutoIT.

No sólo los Asesores Expertos que trabajan en periodos diarios, sino incluso los Asesores Expertos que trabajan en periodos de cinco minutos comienzan a sentirse incómodos en este caso.

En mi opinión, la solución más razonable es detener el funcionamiento del probador un mes antes de la fecha actual. Pero, ¿qué hacer cuando se cambia la fecha en el ordenador?

La idea que tengo es obtener de alguna manera del probador la hora real de las últimas cotizaciones del terminal. Pero no sé cómo hacerlo. Además, no quiero meterme con DLL adicionales autoescritas, también "asustan" a los clientes.

La fecha en el terminal no se traduce. TimeCurrent() da la última hora del servidor.
 
Dmitiry Ananiev:
La fecha en el terminal no se traduce. TimeCurrent() da la última hora del servidor.

Así que TimeCurrent() se simula en el probador... ¿O me estoy perdiendo algo? Necesitas saber la hora actual real del probador, ¿no?

En teoría, puede utilizar WebRequest, solicitando la hora actual real de algún servidor (incluido el suyo propio). Y el requisito para la prueba de estrategia sería introducir la dirección de este servidor en el terminal.

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

Así que TimeCurrent() se simula en el probador... ¿O me estoy perdiendo algo? Es necesario conocer la hora actual real del probador.

Puedes obtener la hora actual de tu ordenador desde el probador.

El único problema es que un usuario con malas intenciones puede cambiarlo drásticamente.

Lo ideal sería utilizar WebRequest para solicitar la hora actual real de algún servidor (incluido el suyo propio). Y el requisito para la estrategia de prueba sería introducir la dirección de este servidor en el terminal.

WebRequest no se ejecuta en el probador de estrategias.
 

George Merts:

En consecuencia, es necesario obtener la fecha actual en el probador, y sólo permitir que el EA trabaje hasta una fecha que sea un mes menos.

--

[]...hubo un usuario inteligente que resultó adelantar la hora en su ordenador, y leer tranquilamente las operaciones completadas del probador.

Obtenga la hora de una tercera parte independiente - ya sea a través de DLL, o por WebRequest, como se aconseja más arriba. Sospecho que no hay otras opciones.
 
Igor Konyashin:
Obtenga la hora de un tercero independiente, ya sea a través de DLL o WebRequest, como se aconseja más arriba. Sospecho que no hay otras opciones.
WebRequest, como resultó, no es aplicable en el probador de estrategias. Sí, es muy triste, pero hasta ahora no se me ocurre nada más que una DLL autoescrita... Y al parecer, sólo hay que saber la fecha de las últimas cotizaciones reales recibidas del terminal...
 
George Merts:

Es posible averiguar la hora actual del ordenador desde el comprobador.

El único problema es que un usuario con malas intenciones puede cambiarlo drásticamente.

Eso es lo que quiero decir. Excepto que TimeCurrent() tampoco funciona en el probador.
WebRequest no se ejecuta en el probador de estrategias.
No lo sabía. Gracias por la información.
 
Игорь Герасько:
Eso es lo que estoy diciendo. Excepto que TimeCurrent() tampoco funciona en el probador.
TimeCurrent() - no funciona en absoluto, no devuelve la hora actual del ordenador, sino la hora de la cotización, que depende de la configuración del comprobador de estrategias.
 
George Merts:
TimeCurrent() - no funciona en absoluto, no devuelve la hora actual del ordenador, sino la hora de la cotización, que depende de la configuración del comprobador de estrategias.
¿Qué ajustes debo poner y dónde? TimrCurrent() - hora del servidor. En el probador, es la hora de llegada de los ticks del servidor. Desde que escribo búhos, nunca los he vinculado a la hora del ordenador local.