I vostri simboli e i vostri flussi di dati in Metatrader 5 - pagina 14

 
zaskok:

Credo che la maggior parte degli utenti non abbia nemmeno sentito parlare dei GA. Ecco perché gli algoritmi miracolosi non servono più a nessuno.

Questo è il mio punto.

zaskok:

C'è un senso di deja vu che non lascia mai questo forum. Quando chiedono la prova di qualche affermazione. Ma allo stesso tempo nessuna di esse viene accettata, perché non è affatto chiaro cosa si debba fornire per convincere.

Basta ricordare che MetaQuotes è un'organizzazione commerciale. Investirà risorse in qualsiasi sviluppo solo se lo considera redditizio. Beh, è da lì che dovremmo partire.

Non credo che si debba cercare la " paranoia di Renat", è più una "miopia economica" - infatti, una volta che MetaTrader avrà le sottoscrizioni - le entrate di MetaQuotes aumenteranno di un ordine di grandezza, e lui non se ne rende conto... Beh, penso che le offerte debbano essere economicamente giustificate. Non sappiamo la "cucina MetaQuotes", quali decisioni hanno aumentato e quali non hanno cambiato (o diminuito) il profitto... Possiamo solo speculare...

 
Prival-2:

Io sosterròzaskok

Personalmente non ho mai incontrato alcun problema per il quale gli algoritmi genetici si siano dimostrati lo strumento più appropriato. Inoltre non ho mai incontrato nessun risultato di calcolo ottenuto tramite algoritmi genetici che mi abbia impressionato positivamente.


Il vantaggio principale del GA non è che è "lo strumento più adatto a risolvere un problema particolare", ma che è universale!

Per risolvere un'equazione quadratica, è possibile applicare anche GA, e troverà perfettamente una soluzione con una precisione accettabile. Anche se la nota formula è molto più adatta a questo caso...

 

Per dirla semplicemente,

1. gli utenti possono effettivamente essere all'oscuro di Ga così come di altri algoritmi. Non fa molta differenza.

2. Anche se c'è un algoritmo che è migliore di Ga (e per alcuni compiti lo è sicuramente), non significa necessariamente che sarà altrettanto universale. Cioè, un'analisi comparativa deve essere senza perdere il contesto di universalità.

3. nulla impedisce di implementare altri algoritmi da soli.

Prival-2, spesso non è necessario lo strumento più adatto, ma abbastanza (per l'ottimizzazione delle strategie a pelle spessa è abbastanza accettabile).

Mi piacerebbe molto vedere le descrizioni di altri algoritmi.

 
Renat:

State cercando di avere un dialogo con lui per niente.

Quest'uomo non usa affatto MetaTrader 5, e si siede esclusivamente sulla 4. Lo puoi vedere nei suoi log - non gestisce MT5 da anni, ma lo critica.

L'ho già beccato un paio di anni fa su "hai avuto un solo lancio di MT5 molti mesi fa, come fai a fare valutazioni e critiche?". Anche lui ha negato, visto che ora è il suo prossimo clone.

Comportamento familiare. Ricordo che io e lui stavamo discutendo del mio prodotto MT5, lui ha finito per non scaricarne nemmeno una demo. Ma ha sempre qualcosa da dire nella serie "non sono familiare, ma giudico".
 
joo:

2. Il mio GA è ancora meglio. :)

...

Quindi, chi vuole non solo blaterare, ma anche fornire i propri algoritmi per test e analisi comparative, il che chiuderebbe una volta per tutte l'argomento "quale algoritmo è migliore?"?


Nel tuo GA, la funzioneint NaturalSelection() non funziona affatto come hai detto nell'articolohttps://www.mql5.com/ru/articles/55.

Ecco il test:

// 256+255+253+249+241+225+193+129+50+ -1 = 1850  сумма всех  выпадений

int PopulChromosCount = 10;
double Population[][10];
int count[10];

void OnStart(){
        ArrayResize(Population,2);
        Population[0][0] = 256.0;
        Population[0][1] = 128.0;
        Population[0][2] = 64.0;
        Population[0][3] = 32.0;
        Population[0][4] = 16.0;
        Population[0][5] = 8.0;
        Population[0][6] = 4.0;
        Population[0][7] = 2.0;
        Population[0][8] = 0.0;
        Population[0][9] = -1.0;
                
        ArrayInitialize(count,0);
        for(int k=0; k<1850; ++k){
                int idx = NaturalSelection();
                ++count[idx];
        }
        printCount(count);
}
  
//Естественный отбор.
int NaturalSelection(){
   int    i=0,u=0;
   double p=0.0,start=0.0;
   double          fit[][2];
   ArrayResize(fit,PopulChromosCount);
   ArrayInitialize(fit,0.0);
   double delta=(Population[0][0]-Population[0][PopulChromosCount-1])*0.01-Population[0][PopulChromosCount-1];

   for(i=0;i<PopulChromosCount;i++)
     {
      fit[i][0]=start;
      fit[i][1]=start+MathAbs(Population[0][i]+delta);
      start=fit[i][1];
     }
   p=RNDfromCI(fit[0][0],fit[PopulChromosCount-1][1]);

   for(u=0;u<PopulChromosCount;u++)
      if((fit[u][0]<=p && p<fit[u][1]) || p==fit[u][1])
         break;

   return(u);
}

//Генератор случайных чисел из заданного интервала.
double RNDfromCI(double RangeMinimum,double RangeMaximum)
  { return(RangeMinimum+((RangeMaximum-RangeMinimum)*MathRand()/32767.5));}

void printCount(int &ncount[]){
        int summ = 0;
        for(int k=0;k<ArraySize(ncount);++k){
                summ+=ncount[k];
        }
        Print("Сумма выпадений= "+IntegerToString(summ));
        Print("VFF 256: count= " + IntegerToString(ncount[0]) + " заявлено 256");
        Print("VFF 128: count= " + IntegerToString(ncount[1]) + " заявлено 255");
        Print("VFF  64: count= " + IntegerToString(ncount[2]) + " заявлено 253");
        Print("VFF  32: count= " + IntegerToString(ncount[3]) + " заявлено 249");
        Print("VFF  16: count= " + IntegerToString(ncount[4]) + " заявлено 241");
        Print("VFF   8: count= " + IntegerToString(ncount[5]) + " заявлено 225");
        Print("VFF   4: count= " + IntegerToString(ncount[6]) + " заявлено 193");
        Print("VFF   2: count= " + IntegerToString(ncount[7]) + " заявлено 129");
        Print("VFF   0: count= " + IntegerToString(ncount[8]) + " заявлено  50");
        Print("VFF  -1: count= " + IntegerToString(ncount[9]) + " заявлено  -1");
}
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  -1: count= 6 заявлено  -1
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   0: count= 13 заявлено  50
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   2: count= 21 заявлено 129
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   4: count= 19 заявлено 193
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   8: count= 40 заявлено 225
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  16: count= 74 заявлено 241
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  32: count= 121 заявлено 249
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  64: count= 218 заявлено 253
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 128: count= 423 заявлено 255
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 256: count= 915 заявлено 256
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	Сумма выпадений= 1850

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Laryx:

Come va il debugger su dati storici? Speriamo che sia presto?

Ci stiamo già lavorando. I primi risultati sono in arrivo
 
Prival-2:

Prova a confutare questo scienziato

Ci sono molti scettici sulla ragionevolezza dell'uso degli algoritmi genetici. Per esempio, Steven S. Schiena, professore del dipartimento di informatica della Stony Brook University, un famoso ricercatore di algoritmi, vincitore del premio IEEE, scrive[16]:

La genetica è una cosa così universale, con la quale si può ottimizzare qualsiasi cosa. Come il gradient descent, solo molto più versatile in termini di classe di problemi.

Questo significa che è sempre possibile per qualsiasi problema trovare un modo specifico di ottimizzare che funzioni meglio.

 
stringo:
Stiamo già lavorando su questo problema. I primi risultati saranno presto disponibili.
Bravo! Stiamo aspettando.
 
Qui c'è un link a una descrizione del metodo dell'annealing su Wikipedia. https://ru.wikipedia.org/wiki/%C0%EB%E3%EE%F0%E8%F2%EC_%E8%EC%E8%F2%E0%F6%E8%E8_%EE%F2%E6%E8%E3%E0 C'è un esempio video che spiega come funziona questo algoritmo. Da esso si può vedere che si avvicina erroneamente al massimo e trova quasi il massimo stesso. Ma trova anche altri massimi. Il numero di calcoli è molto inferiore a quello di GA, è più compatto e molto più vicino ai dati reali di GA e in ogni caso farà meglio di GA ingombrante in termini di velocità.
 
È anche bello avere la possibilità di salvare e scaricare i file impostati in Five. Una cosa molto utile.