La registrazione è ora aperta.
Tutti coloro che desiderano partecipare, sono pregati di iscriversi qui. Il 20 giugno 2016, saranno presentati i codici di script eseguibili di esempio con interfacce per il collegamento degli algoritmi. Tra altre 3 settimane, l'11 luglio 2016, inizierà il campionato vero e proprio.
La registrazione è ora aperta.
Tutti coloro che desiderano partecipare, sono pregati di iscriversi qui. Il 20 giugno 2016, saranno presentati i codici di script eseguibili di esempio con interfacce per il collegamento degli algoritmi. E tra 3 settimane inizierà il campionato vero e proprio.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Andrey Dik, 2016.06.10 17:24
E in generale, ci sono idee, o tutto è in fase di riflessione. Semmai, posso condividere i miei pensieri.
Naturalmente ci sono delle idee.
Un articolo è molto buono. In quale direzione vuoi scrivere l'articolo?
È possibile posticipare il campionato, se c'è una reale necessità. Ma c'è ancora molto tempo prima che inizi, il campionato inizia l'11 luglio 2016.
Certo che sì.
Sputa il rospo. Condanneremo.
L'articolo è molto buono. Ma non si può più aspettare. La gente ha una memoria corta di regola e dimentica rapidamente dove tutto inizia....
class CFF{ public: virtual double fun(double & x[]){return(0);} virtual string type(){return("");} virtual double value(){return(0);} virtual string note(){return("");} }; class CFF1:public CFF{ public: double fun(double & x[]){ int c=ArraySize(x); double s=0; for(int i=0;i<c;i++){ s+=MathPow(x[i],2); } return(s); } virtual string type(){ return("min"); } virtual double value(){ return(0); } virtual string note(){ return(""); } }; class CFF2:public CFF{ public: double fun(double & x[]){ int c=ArraySize(x); double s=0; double p=0; for(int i=0;i<c;i++){ s+=MathAbs(x[i]); p*=MathAbs(x[i]); } return(s+p); } virtual string type(){ return("min"); } virtual double value(){ return(0); } virtual string note(){ return(""); } };
Ecco una costruzione per selezionare una funzione da studiare (ff). Una classe base con metodi virtuali e classi figlie con funzioni diverse.
Lo dichiaro così:
CFF * ff=new CFF1();
Oppure così, a seconda di quale funzione è necessaria:
CFF * ff=new CFF2();
Nella funzione di ottimizzazione, abbiamo un parametro di tipo CFF per passare un puntatore alla classe con le ff selezionate.
***
Metodi della classe base:
virtual double fun(double & x[]){return(0);} virtual string type(){return("");}
fun - funzione stessa, i parametri sono passati in un array di tipo double.
tipo - tipo di funzione: min o max - cosa cercare nella funzione minimum o maximum.
Il resto non è necessario, li stavo facendo per me? Per memoria: valore - valore all'estremo, nota - qualche descrizione. Non sono necessari per il campionato, soprattutto il valore.
***
Ora non ho una funzione, ma una classe e in essa un metodo per impostare i ff:
void SetFF(CFF * aff){ this.ff=aff; }Poi uso questo.ff.fun(...) ovunque;
Per il campionato, la classe dovrà essere collocata in una biblioteca. Fate una funzione nella libreria, che sarà chiamata dall'esterno, questa funzione farà tutto: creare un'istanza della classe, impostare tutti i parametri passati alla funzione, ecc.
Il nome della funzione è standard per tutti. Ognuno ha i propri nomi di file della libreria.
Il controllore ha uno script. Il checker cambia il nome della libreria importata, la compila e la esegue.
Questo è tutto:
CFF * ff=new CFF1();
Nello script del controllore.
La classe dovrà essere collocata in una biblioteca per il campionato. Fate una funzione nella libreria, che sarà chiamata dall'esterno, questa funzione farà tutto: creare un'istanza della classe, impostare tutti i parametri passati alla funzione, ecc.
Il nome della funzione è standard per tutti. Ognuno ha i propri nomi di file della libreria.
Il controllore ha uno script. Checker cambia il nome della libreria importata, compila, esegue.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il Campionato di Ottimizzazione degli Algoritmi è concepito come una competizione per persone che sono cercatrici, curiose, per le quali stare fermi significa andare indietro.
Il campionato è una grande opportunità per testare i vostri algoritmi in condizioni competitive difficili, che sono più dure e impegnative di quelle che si incontrano nella vita quotidiana. È un'occasione per assicurarsi che il vostro algoritmo non può più essere migliore, il che significa fiducia nel risolvere le sfide della vita davanti a voi, o per assicurarsi che il vostro algoritmo ha bisogno o può essere ulteriormente raffinato e migliorato.
Regole:
1. Algoritmi di ottimizzazione basati su qualsiasi principio e teoria di ricerca sono ammessi al campionato, assolutamente qualsiasi.
2. Ogni partecipante poteva rappresentare un solo algoritmo in codice sorgente o in forma compilata di libreria *.ex5.
3. Alla fine del campionato i partecipanti saranno classificati secondo i seguenti criteri: velocità dell'algoritmo, numero di esecuzioni della funzione di fitness, precisione della ricerca della soluzione.
Condizioni:
1. L'organizzatore si riserva il diritto di rifiutare la partecipazione di chiunque senza spiegarne i motivi.
2. l'organizzatore ha il diritto di partecipare al campionato.
3. L'organizzatore rifiuterà i premi a favore dei partecipanti in caso di disponibilità del montepremi da parte di potenziali sponsor al momento dell'annuncio dei premi.
Organizzatore del campionato di algoritmi di ottimizzazione: Joo.
Sii coraggioso, partecipa e vinci. Potrebbe accadere che il vostro algoritmo venga utilizzato in futuro nell'ottimizzatore interno di MT, perché no?