Come proteggersi dalla copia di operazioni lunghe dal tester

 

Saluti a tutti.

La domanda è nel titolo. L'obiettivo è quello di proteggere l'EA dall'essere usato su dati reali, ma comunque permettergli di essere eseguito nello strategy tester. Quindi potremmo eseguire la versione demo nel tester delle strategie e vedere che funziona, ma non saremmo in grado di copiare i trade trasferendoli manualmente in un altro terminale.

Il problema è che i trade di Expert Advisor possono durare settimane. E questo significa che un utente senza scrupoli può eseguire una versione demo nel tester delle strategie e aprire gli stessi trade manualmente in un altro terminale con un giorno di ritardo. E lui o lei non perde molto profitto.

Di conseguenza, abbiamo deciso che l'Expert Advisor deve funzionare nello Strategy Tester solo fino alla data di un mese prima della data corrente. Allo stesso tempo, quando appaiono nuove date, l'Expert Advisor deve poter lavorare nello Strategy Tester per un tempo sempre più lungo.

Una data fissa di fine lavoro nel tester non va bene - gli utenti sospettano che le quotazioni siano memorizzate nell'Expert Advisor esattamente fino a questa data, ed è per questo che funziona. Pertanto, abbiamo bisogno di ottenere la data corrente nello Strategy Tester e permettere all'Expert Advisor di lavorare solo fino alla data, che è un mese prima.

È difficile ottenere la data attuale dal tester, ma ci siamo riusciti. Tuttavia, abbiamo trovato un utente intelligente che girava il tempo sul suo computer in avanti e leggeva facilmente le offerte eseguite dallo Strategy Tester.

Come posso evitare che il tester funzioni sulle quotazioni del mese scorso?

Cosa suggerite di fare, colleghi?

 
Avendo imparato un po' di WINAPI, si può scrivere un'utility che tamburella il pulsante "start" nel tester, salva il rapporto e legge nuove transazioni da lì. E poi puoi semplicemente duplicare i trade nel terminale.
 

Sì, Dimitri, puoi farlo anche senza WinAPI, basta usare lo script su AutoIT.

Non solo gli Expert Advisors che lavorano su periodi giornalieri, ma anche gli Expert Advisors che lavorano su periodi di cinque minuti non si sentono a loro agio in questo caso.

A mio parere, la soluzione più ragionevole è fermare il funzionamento del tester un mese prima della data corrente. Ma cosa fare quando la data viene cambiata sul tuo computer?

L'idea che ho è di ottenere in qualche modo dal tester il tempo reale delle ultime citazioni dal terminale. Ma non so come fare. Inoltre, non voglio pasticciare con ulteriori DLL auto-scritte, anche loro "spaventano" i clienti.

 
George Merts:

Sì, Dimitri, puoi farlo anche senza WinAPI, basta usare lo script su AutoIT.

Non solo gli Expert Advisors che lavorano su periodi giornalieri, ma anche gli Expert Advisors che lavorano su periodi di cinque minuti iniziano a sentirsi a disagio in questo caso.

A mio parere, la soluzione più ragionevole è fermare il funzionamento del tester un mese prima della data corrente. Ma cosa fare quando la data viene cambiata sul tuo computer?

L'idea che ho è di ottenere in qualche modo dal tester il tempo reale delle ultime citazioni dal terminale. Ma non so come fare. Inoltre, non voglio pasticciare con ulteriori DLL auto-scritte, anche loro "spaventano" i clienti.

La data nel terminale non viene tradotta. TimeCurrent() dà l'ultima ora del server.
 
Dmitiry Ananiev:
La data nel terminale non si traduce. TimeCurrent() dà l'ultima ora del server.

Così TimeCurrent() è simulato nel tester... O mi manca qualcosa? È necessario conoscere l'ora attuale reale del tester, vero?

In teoria, puoi usare WebRequest, richiedendo l'ora corrente reale da qualche server (incluso il tuo). E il requisito per il test della strategia sarebbe quello di inserire l'indirizzo di questo server nel terminale.

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

Così TimeCurrent() è simulato nel tester... O mi manca qualcosa? È necessario conoscere l'ora corrente reale dal tester.

Puoi ottenere l'ora attuale del tuo computer dal tester.

L'unico problema è che un utente con intenti malevoli può cambiarlo drasticamente.

Idealmente, si potrebbe usare WebRequest per richiedere l'ora corrente reale da qualche server (incluso il proprio). E il requisito per la strategia di test sarebbe quello di inserire l'indirizzo di questo server nel terminale.

WebRequest non viene eseguito nel tester della strategia.
 

George Merts:

Di conseguenza, è necessario ottenere la data attuale nel tester, e permettere all'EA di lavorare solo fino a una data che è un mese meno.

--

[]...c'era un utente intelligente che sembrava avanzare il tempo sul suo computer e leggere in pace le compravendite completate dal tester.

Ottenere l'ora da una terza parte indipendente - o tramite DLL, o tramite WebRequest, come consigliato sopra. Non ci sono altre opzioni, sospetto.
 
Igor Konyashin:
Ottenere l'ora da una terza parte indipendente - o tramite DLL o WebRequest, come consigliato sopra. Non ci sono altre opzioni, sospetto.
WebRequest, come risulta, non è applicabile in strategy tester. Sì, è molto triste, ma finora non mi viene in mente nulla, tranne una DLL auto-scritta... E sembrerebbe - basta conoscere la data delle ultime quotazioni reali ricevute del terminale...
 
George Merts:

È possibile scoprire l'ora corrente del computer dal tester.

L'unico problema è che un utente con intenti malevoli può cambiarlo drasticamente.

Questo è quello che voglio dire. Tranne che TimeCurrent() non funziona nemmeno nel tester.
WebRequest non viene eseguito nel tester della strategia.
Non ne sapevo nulla. Grazie per le informazioni.
 
Игорь Герасько:
Questo è quello che sto dicendo. Tranne che TimeCurrent() non funziona nemmeno nel tester.
TimeCurrent() - non funziona affatto, non restituisce il tempo corrente del computer, ma il tempo della quotazione, che dipende dalle impostazioni del tester della strategia.
 
George Merts:
TimeCurrent() - non funziona affatto, non restituisce il tempo corrente del computer, ma il tempo della quotazione, che dipende dalle impostazioni del tester della strategia.
Quali impostazioni devo mettere e dove? TimrCurrent() - tempo del server. Nel tester, è il tempo di arrivo dei tick del server. Da quando scrivo gufi, non li ho mai attaccati al tempo del computer locale.