Algoritmi, metodi di soluzione, confronto delle loro prestazioni - pagina 13

 
Реter Konow:

2. l 'integrazione nell'EA è il punto chiave. Se la soluzione è super-confusa (sono sicuro che non sai nemmeno spiegare come funziona la soluzione di Sergey Dzyublik), qual è il suo valore pratico per il trader? Non si può costruire un EA normale con soluzioni superconvolute.

La soluzione proposta è stata espressa immediatamente

Ma qualcuno non ha nemmeno chiesto cosa fosse. L'implementazione avrebbe potuto essere molto più "chiara". Ma non cambierebbe la base dell'idea.

 
Реter Konow:

1. In termini pratici, queste sono parole vuote con cui si combattono i fatti. Ho mostrato la misura del tempo per trovare il mago. Ho dimostrato la comodità di integrare la soluzione nell'EA. Tutto quello che state dimostrando è una calunnia della mia soluzione. Nient'altro.

2. l 'integrazione nell'EA è il punto chiave. Se la soluzione è super contorta (sono sicuro che non sai nemmeno spiegare come funziona la soluzione di Sergey Dzyublik), qual è il suo valore pratico per il trader? Non si può costruire un EA normale con soluzioni superconvolute.

Non giudico la soluzione di Sergey Dzyublik. Non l'ha ancora spiegato. Quando lo spiegherà, sarà chiaro chi ha "iniziato questo casino".


Qui volevo risponderti, ma il moderatore ti ha preceduto e ha detto la stessa cosa. Quindi vi mostrerò di nuovo quello che ha detto:

Artyom Trishkin:

No, non ti sto offrendo lo stile di soluzione di qualcun altro. Scrivete nel vostro stile - nessuno impone niente a nessuno.

Ma sto suggerendo che con la tua caratteristica persistenza risolvi i problemi nel miglior modo possibile all'inizio. Cosa stai facendo?

1. Inizialmente si sceglie la soluzione più subottimale tra tutte quelle possibili e si inizia a giocare con essa. Per questo compito, anche nella fase di pensare una soluzione, si doveva non solo rifiutare la propria versione, ma addirittura non pensare in quella direzione. E non è a questo che servono le funzioni di gestione del testo.

2. Per quanto riguarda l'integrazione nell'Expert Advisor e i vantaggi della soluzione proposta, lasciate che vi risponda chi l'ha proposta.


P.S. Devi essere uno studente molto cattivo :)

 
Реter Konow:

Mi rendo conto dei miei errori non appena ne sono convinto. Finora, nessuno è stato in grado di dimostrare che la mia decisione è sbagliata. Aspettiamo.

Sei un povero allievo!

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Algoritmi, metodi di soluzione, confronto delle prestazioni

Sergey Dzyublik, 2017.12.10 20:58


1. Il vostro codice non funziona.
Modello errato "_index_magic". Possibile soluzione "|index_magic".


Dopo l'addizione abbiamo _1_3_2_4_3_5_4_6_
Si prega di trovare il 3° nella lista.
Otterrete un risultato di 2.

string All_magics = "_1_3_2_4_3_5_4_6_";

int Get_magic(int deal_number)
{
 int stringlen = StringLen((string)deal_number); //добавлено
 //--------------------------------------------
 //Получаем начало строки магика.
 //--------------------------------------------
 int Magic_position_start =  StringFind(All_magics,"_" + (string)deal_number + "_",0) + stringlen + 2;
 //--------------------------------------------
 //Получаем конец строки магика.
 //--------------------------------------------
 int Magic_position_end   =  StringFind(All_magics,"_" + (string)(deal_number + 1) + "_",0);
 //--------------------------------------------
 //Получаем количество цифр из которых состоит магик.
 //--------------------------------------------
 int Magic_lenght         =  Magic_position_end - Magic_position_start;
 //--------------------------------------------
 //Извлекаем магик из общей строки.
 //--------------------------------------------
 string Magic             =  StringSubstr(All_magics,Magic_position_start,Magic_lenght);
 //--------------------------------------------
 //Возвращаем цифровое значение магика.
 //--------------------------------------------
 return((int)Magic);
}
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
  Print(All_magics);
  Print(Get_magic(3));   
}


Risultato

_1_3_2_4_3_5_4_6_
2
 
Artyom Trishkin:

Finora tutto quello che vedo qui è una presa in giro di un uomo che ha avuto il coraggio di postare qui la sua soluzione.

Chiaramente, è... Per dirla tutta, è una schifezza a tutti gli effetti. Ma l'ha messo in giro. Gli altri hanno finora solo il coraggio di ridere e puntare il dito.

Artem, ho impiegato 40 minuti del mio tempo e qualche milione di cellule nervose per spiegare all'uomo che la sottostringa..._25_... quattro caratteri, non tre. Bene, quanti anni-uomo pensate che ci vorranno a tutti noi per spiegargli qualcosa di più concettualmente valido e potente? Penso molto, molti anni-uomo. Ecco perché nessuno cerca di spiegare e masticare qualcosa. C'è semplicemente un certo livello minimo sotto il quale chi spiega non può affondare, e il livello di Pietro è sotto quell'asticella.

 
fxsaber:



Risultato

Ho già detto che il numero del mago è determinato dall'utente. Per evitare collisioni all'interno di una stringa, è necessario assegnare un certo intervallo numerico per i maghi. Per esempio da 100.000 a 999.000. Allora non ci saranno problemi.

Detto questo, possiamo ovviamente mettere a punto la soluzione. Questo è solo un "prototipo". Una versione demo.

 
Vasiliy Sokolov:

Artem, ho impiegato 40 minuti del mio tempo e qualche milione di cellule nervose per spiegare all'uomo che la sottostringa..._25_... quattro caratteri, non tre. Bene, quanti anni-uomo pensate che ci vorranno a tutti noi per spiegargli qualcosa di più concettualmente valido e potente? Penso molto, molti anni-uomo. Ecco perché nessuno cerca di spiegare e masticare qualcosa. C'è semplicemente un certo livello minimo sotto il quale chi spiega non può affondare, e il livello di Pietro è sotto quell'asticella.

Vasily, ho capito tutto appena l'hai detto. Grazie per aver trovato questo errore.

 
fxsaber:

Vaffanculo.

Ecco qui...))

E perché questa reazione?

 

Il contenitore standard della libreria - CArrayList - è stato scelto per risolvere il compito.
Quasi tutto il codice è un wrapper per fornire un'interfaccia "comoda" per i test. Per ogni gusto e colore come si dice....

Per testare la vostra soluzione avete bisogno di:
1. Crea una classe che eredita da ITestRandomAccessCollection e implementa i metodi necessari. (simile aTestRandomAccessCollectionCArrayList)
2. I dati di un certo tipo sono utilizzati per i test. Nell'esempio era int.
Dobbiamo assicurarci che ci sia un generatore per il tipo di dati selezionato e che sia aggiunto aCreateGenerator(simile aIntGenerator).
3. Esegui un test sugli stessi dati per diverse soluzioni e confronta i risultati (se vuoi, puoi anche fare un ciclo per ottenere la media):

{
     printf ("TestRandomAccessCollectionAfterAdding: Started.", result);
     TestRandomAccessCollectionCArrayList<int> testCollection();
     result = TestRandomAccessCollectionAfterAdding(testCollection, 10000, 1);
     printf ("TestRandomAccessCollectionAfterAdding: Fineshed. Total result: %I64i\n", result);
}


Questa è attualmente la funzione di test, nuove possono essere aggiunte per analogia:

template<typename T>
ulong TestRandomAccessCollectionAfterAdding(ITestRandomAccessCollection<T> &testCollection, const int iterationCount = 1000, int srandValue = 0)

Parametri:

testCollection - contenitore di test che implementaITestRandomAccessCollection<T>;
iterationCount - numero di cicli di iterazione nel test;
srandValue - influenza sul campionamento dal generatore se 0 è un campionamento casuale.

 
Реter Konow:
1. Quanti microsecondi in media ci vogliono per trovare il mago nella tua soluzione?

2. Quanto è facile integrare la vostra soluzione nell'EA (secondo voi)?


1. non ha senso. Gli algoritmi nel loro insieme sono confrontati sui risultati relativi.
2. La soluzione è già integrata - è una libreria standard<Generic\ArrayList.mqh>.

 
Реter Konow:

Come ho detto prima, il numero del mago è determinato dall'utente. Per evitare collisioni all'interno di una stringa, è necessario assegnare un certo intervallo numerico per i maghi. Per esempio da 100.000 a 999.000. Allora non ci sarà alcun problema.

Detto questo, è possibile, naturalmente, raffinare la soluzione. Questo è solo un "prototipo". È una versione demo.


Mia cara, quello che vuoi è un compito infantile. È il tipo di problema che risolvono gli scolari.

Ce ne sono decine su internet. E dimenticate i dati delle stringhe.