Como se proteger contra a cópia de longas negociações do testador

 

Saudações a todos.

A questão está no título. O objetivo é proteger a EA de ser usada em dados reais, mas ainda permitir que ela seja executada no testador de estratégia. Assim, poderíamos executar a versão demo no testador de estratégia e ver que ela funciona, mas não poderíamos copiar os negócios transferindo-os manualmente para outro terminal.

O problema é que o Expert Advisor pode durar semanas. E isto significa que um usuário inescrupuloso pode executar uma versão demo no testador de estratégia e abrir as mesmas operações manualmente em outro terminal com um dia de atraso. E ele ou ela não perde muito lucro.

Consequentemente, decidimos que o consultor especializado deve trabalhar no teste de estratégia apenas até a data um mês antes da data atual. Ao mesmo tempo, quando novas datas aparecem, o Conselheiro Especialista deve ser autorizado a trabalhar no Testador de Estratégia por um tempo cada vez maior.

Uma data fixa do fim do trabalho no testador não é boa - os usuários suspeitam que as citações são armazenadas no Expert Advisor exatamente até esta data, e é por isso que ela funciona. Portanto, precisamos obter a data atual no Strategy Tester e permitir que o Expert Advisor trabalhe apenas até a data, que é um mês antes.

É difícil obter a data atual do testador, mas conseguimos fazer isso. No entanto, encontramos um usuário esperto, que passa o tempo em seu computador e lê facilmente os negócios realizados pelo Testador de Estratégia.

Como posso evitar que o testador funcione com as citações do mês passado?

O que vocês sugerem fazer, colegas?

 
Eu digo mais! Tendo aprendido um pouco sobre WINAPI, você pode escrever um utilitário que irá bater o botão "start" no testador, salvar o relatório e ler novos negócios a partir daí. E então você pode simplesmente duplicar os negócios no terminal.
 

Sim, Dimitri, você pode fazer isso mesmo sem WinAPI, apenas usando o script na AutoIT.

Não apenas os Consultores Especialistas que trabalham em períodos diários, mas também os Consultores Especialistas que trabalham em períodos de cinco minutos não se sentem confortáveis neste caso.

Na minha opinião, a solução mais razoável é interromper a operação do testador um mês antes da data atual. Mas o que fazer quando a data for alterada em seu computador?

A idéia que tenho é, de alguma forma, obter do testador o tempo real das últimas citações do terminal. Mas eu não sei como fazer isso. Além disso, eu não quero mexer com DLL adicionais autoescritas, elas também "assustam" os clientes.

 
George Merts:

Sim, Dimitri, você pode fazer isso mesmo sem WinAPI, apenas usando o script na AutoIT.

Não apenas os Consultores Especialistas que trabalham em períodos diários, mas também os Consultores Especialistas que trabalham em períodos de cinco minutos não se sentem confortáveis neste caso.

Na minha opinião, a solução mais razoável é interromper a operação do testador um mês antes da data atual. Mas o que fazer quando a data for alterada em seu computador?

A idéia que tenho é, de alguma forma, obter do testador o tempo real das últimas citações do terminal. Mas eu não sei como fazer isso. Além disso, eu não quero mexer com DLL adicionais autoescritas, elas também "assustam" os clientes.

A data no terminal não está traduzida. TimeCurrent() dá o último tempo do servidor.
 
Dmitiry Ananiev:
A data no terminal não traduz. TimeCurrent() dá o último tempo do servidor.

Assim, o TimeCurrent() é simulado no testador. Ou está me faltando algo? Você precisa saber o tempo real atual do testador, não é mesmo?

Em teoria, você pode usar o WebRequest, solicitando tempo real atual de algum servidor (incluindo o seu próprio). E o requisito para o teste de estratégia seria inserir o endereço deste servidor no terminal.

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

Assim, o TimeCurrent() é simulado no testador. Ou está me faltando algo? Você precisa saber o tempo real atual através do testador.

Você pode obter a hora atual do seu computador do testador.

O único problema é que um usuário com intenções maliciosas pode mudá-lo drasticamente.

Idealmente, você poderia usar o WebRequest para solicitar o tempo real atual a algum servidor (incluindo o seu próprio). E o requisito para a estratégia de teste seria inserir o endereço deste servidor no terminal.

O WebRequest não é executado no testador de estratégia.
 

George Merts:

Conseqüentemente, é necessário obter a data atual no testador, e somente permitir que a EA trabalhe até uma data que seja um mês a menos.

--

[]...houve um usuário esperto que acabou adiantando o tempo em seu computador, e lendo tranquilamente as negociações concluídas do testador.

Obter o tempo de um terceiro, independente - seja através de DLL, ou por WebRequest, como aconselhado acima. Não há outras opções, eu suspeito.
 
Igor Konyashin:
Obter o tempo de um terceiro, independente - seja via DLL ou WebRequest, como aconselhado acima. Não há outras opções, eu suspeito.
O WebRequest, como acontece, não é aplicável no testador de estratégia. Sim, é muito triste, mas até agora não consigo pensar em nada, exceto em DLL autoescritas... E parece - você só precisa saber a data das últimas citações reais recebidas do terminal...
 
George Merts:

É possível descobrir a hora atual do computador a partir do testador.

O único problema é que um usuário com intenções maliciosas pode mudá-lo drasticamente.

É isso que eu quero dizer. Exceto que o TimeCurrent() também não funciona no testador.
O WebRequest não é executado no testador de estratégia.
Eu não sabia disso. Obrigado pela informação.
 
Игорь Герасько:
É o que eu estou dizendo. Exceto que o TimeCurrent() também não funciona no testador.
TimeCurrent() - não funciona em absoluto, retorna não o tempo atual do computador, mas o tempo de cotação, que depende das configurações do testador de estratégia.
 
George Merts:
TimeCurrent() - não funciona em absoluto, não retorna o tempo atual do computador, mas o tempo de cotação, que depende das configurações do testador de estratégia.
Que configurações devo colocar e onde? TimrCurrent() - tempo do servidor. No testador, é a hora do servidor que marca a hora de chegada. Desde que venho escrevendo corujas, nunca as liguei ao horário local do computador.