Programmazione asincrona e multithread in MQL - pagina 37

 

Ho capito perché std::async è così lento. Il fatto è che ho linux+gcc/clang, non c'è un pool di thread dietro async, un nuovo thread viene stupidamente avviato ogni volta per ogni nuovo lavoro. Quello che mi confondeva era che due thread creati consecutivamente e immediatamente distrutti avrebbero avuto lo stesso id:

void f() {
   cout << this_thread::get_id() << endl;
}

int main()
{
   thread t1{f};
   t1.join();

   thread t2{f};
   t2.join();
   return 0;
}
// cout: 140448079447808
// cout: 140448079447808

Il test asincrono su wind+msvc ha mostrato che nel test in cui gcc ha avviato 10 thread, msvc ne ha avviati 6 (4-core CPU), cioè non è un nuovo thread stupido che inizia per il compito, c'è ovviamente una sorta di coda.

Conclusione: più o meno adeguato async solo su winnda (via thread pool).

В моём случае это точно, так как понял что пул статичный по количеству потоков, мне это не подходит.

La piscina non è statica e la dimensione può essere cambiata. Ma come se si controllasse fortemente async() :), come è evidente - lo standard non garantisce nemmeno l'implementazione (un pool di thread o meno), e se è un pool, non si ha alcuna influenza su di esso (il compilatore può voler assegnare 1 thread al pool, non ti chiederà nemmeno).

Ma se stai scrivendo solo per il vento, allora puoi usare async in linea di principio (anche se ora non mi piace).

SZY: perché abbiamo bisogno di async senza pool di thread non capisco affatto ...

 
Vict:

Ho capito perché std::async è così lento. Il fatto è che ho linux+gcc/clang, non c'è un pool di thread dietro async, un nuovo thread viene stupidamente avviato ogni volta per ogni nuovo lavoro. Quello che mi confondeva era che due thread creati consecutivamente e immediatamente distrutti avrebbero avuto lo stesso id:

Il test asincrono su wind+msvc ha mostrato che nel test in cui gcc ha avviato 10 thread, msvc ne ha avviati 6 (4-core CPU), cioè non è un nuovo thread stupido che inizia per il compito, c'è ovviamente una sorta di coda.

Conclusione: più o meno adeguato async solo su winnda (via thread pool).

La piscina non è statica e la dimensione può essere cambiata. Ma come se si controllasse fortemente async() :), come è evidente - lo standard non garantisce nemmeno l'implementazione (un pool di thread o meno), e se è un pool, non si ha alcuna influenza su di esso (il compilatore può voler assegnare 1 thread al pool, non ti chiederà nemmeno).

Ma se stai scrivendo solo per il vento, allora puoi usare async in linea di principio (anche se ora non mi piace).

SZY: Non capisco perché abbiamo bisogno di async senza pool di thread ...

Visti i risultati dell'esperimento e le nuove informazioni, la vostra opinione sulla necessità del multi-threading in MQL è cambiata?
 
Реter Konow:
Tenendo conto dei risultati dell'esperimento e delle nuove informazioni, la sua opinione sulla necessità del multithreading in MQL è cambiata?

Beh, qui ho alato async - un wrapper di alto livello per i pigri. In generale, non sono contro il multithreading.

Potrei usare il multithreading in µl? No, non lo farò. Peter, ho superato il mercato, e francamente non sono molto interessato a un ecosistema chiuso con un linguaggio potente. Perché creare un altro C++ (che non è affatto un compito facile)? In modo che i più "intraprendenti" vendano iloro "grails" rigorosamente attraverso il mercato? Beh, non è quel tipo di missione.

 
Vict:

Beh, ho alato async qui - un wrapper di alto livello per i pigri. In generale, non sono contro il multithreading.

Potrei usare il multithreading in µl? No, non lo farò. Peter, ho superato il mercato, e francamente non sono molto interessato a un ecosistema chiuso con un linguaggio potente. Perché creare un altro C++ (che non è affatto un compito facile)? In modo che i più "intraprendenti" vendano i loro "grails" rigorosamente attraverso il mercato? Beh, non è quel tipo di missione.

Beh, probabilmente è il contrario. In modo che i più intraprendenti vendessero qualcosa di diverso dai"grails". Dopo tutto, sono i "grails" che non richiedono strumenti seri. Se appaiono nuove potenti applicazioni, forse il "graal-parassitismo" nell'algotrading diminuirà e il valore dell'approccio professionale prevarrà. Non è un fatto, naturalmente, ma può essere...
 
Vict:

Userò il multithreading in µl? No, non lo farò.

Almeno una risposta sincera alla domanda: perché avete bisogno del multithreading nei problemi MQL?

Se non mi sbaglio, l'ho chiesto 5 volte senza alcuna risposta specifica.

ReTeg Konow:
Beh, probabilmente è il contrario. Per i più intraprendenti vendere qualcosa di diverso dai "grails". Dopo tutto, sono i "grails" che non richiedono strumenti seri.

Peter, hai il talento di fare affermazioni forti a causa della scarsa competenza!

Se non mi sbaglio, lei non ha alcuna competenza nella scrittura di Expert Advisors di trading, anche un semplice indicatore open/close one, e ora sta dicendo che non ci vogliono strumenti seri per creare un Expert Advisor che faccia trading su una storia puramente positiva?

Provate a scrivere un solo Expert Advisor per il trading - vi aspetta un mondo di avventure emozionanti!

))))

 
Igor Makanu:

Almeno una risposta sincera alla domanda: perché abbiamo bisogno del multithreading nei problemi MQL?

Se non mi sbaglio, ho chiesto 5 volte perché è necessario, non sono state date risposte, ci sono stati tentativi di collegare il threading all'addestramento NS, ma secondo me "passato".

Peter, hai il talento di fare affermazioni forti a causa della scarsa competenza!

Se non mi sbaglio, non hai alcuna abilità nello scrivere Expert Advisors di trading, anche un semplice indicatore open/close one, e ora stai dicendo che non ci vogliono strumenti seri per creare un Expert Advisor che fa trading su una storia puramente positiva?

Provate a scrivere un solo Expert Advisor per il trading - vi aspetta un mondo di avventure emozionanti!

))))

Non voglio iniziare un off-topic nel thread, ma hai anche un talento per fare affermazioni forti a causa della scarsa competenza. In questo caso, lei non conosce le mie capacità e la mia esperienza. Non ho mai scritto indicatori, è vero, ma li ho scritti. E che dire delle tue dichiarazioni su Sharpe in MQL, che devono aver schiacciato i miei sviluppi? Che non posso fare nulla di serio con il mio approccio e che tutto funziona male, ecc. Alta competenza? )

Basta guardare il mercato per vedere che (quasi) non si vende altro che"grails". 13000 "grails" e 1000 utility, indicatori e librerie. A occhio e croce. Di conseguenza, è facile fare questi "grails". Soprattutto su MT4. Ed è la creazione del "grails" che definisce il toolkit di sviluppo MQLQL in grande richiesta, mettendo una barriera per lo sviluppo di applicazioni.

 
Реter Konow:

Non voglio iniziare un off-topic, ma lei ha anche il talento di fare affermazioni forti a causa della scarsa competenza. In questo caso, lei non conosce le mie capacità e la mia esperienza. Non ho mai scritto indicatori, è vero, ma ho scritto esperti e ne ho fatti molti. E che dire delle tue dichiarazioni su Sharpe in MQL, che devono aver schiacciato i miei sviluppi? Che non posso fare niente di serio con il mio approccio e che tutto funziona male, ecc. Alta competenza? )

Basta guardare il mercato per vedere che (quasi) non si vende altro che "grails". 13000 "grails" e 1000 utility, indicatori e librerie. A occhio e croce. Di conseguenza, è facile fare questi "grails". Soprattutto su MT4. Ed è la creazione del "grails" che definisce il toolkit di sviluppo MQL in grande richiesta, mettendo così una barriera per lo sviluppo di applicazioni.

strano, se stavi scrivendo esperti di trading, perché nel thread "il mio approccio" avevi domande sulle azioni elementari, come ottenere le proprietà di un ordine aperto? (quando hai scritto la tabella), proprio come ora, l'affermazione ad alta voce che scrivere un tester grail non è laborioso?

Beh, visto che sai fare tutto, allora non hai fatto una buona battuta?


le mie affermazioni su Sharp sono sul mio blog e in KB nelle pubblicazioni di @fxsaber, tutto funziona e così fanno le tabelle, e@fxsaber stava testando sotto la sua visione di come le tabelle dovrebbero funzionare, in questo si è rivelato essere abbastanza difficile implementazione tecnica - aveva bisogno di visualizzare una tabella di storia di affare oltre 6000 righe su 20 colonneoltre 100 milavalori! e nella seconda scheda gli attuali ordini aperti come 19 colonne di informazioni, tutto funziona e niente è lento né online né nel tester ;) . La cosa principale è che non sovraccarica il terminale e il PC in generale (l'ho testato e prende il 7-8% del carico della CPU né sul PC né sul portatile)

PS: su Market non dirà nulla e tu non consigli, vedi il mio pre-post - né tu né io non siamo pubblicati lì, rispettivamente, il livello di competenza è zero ;)

PSPS: ci tieni troppo a una specie di battaglia )))) per dimostrare che Sharp è inferiore al tuo lavoro per la velocità di scrittura del software applicato? )))) - Beh, prova nel tuo thread "My Approach" a postare una tabella con almeno10k celle, vedi come funziona;)

 
Igor Makanu:

strano, se stavi scrivendo esperti di trading, perché nel topic "il mio approccio" avevi domande sulle azioni elementari, come ottenere le proprietà di un ordine aperto? (quando hai scritto la tabella), proprio come ora, l'affermazione a gran voce che scrivere il Graal di un tester non è laborioso?

Beh, visto che sai fare tutto, allora non hai fatto una buona battuta?


le mie affermazioni su Sharp sono sul mio blog e QB nelle pubblicazioni di @fxsaber, tutto funziona e così le tabelle, e testato da @fxsaber alla sua visione di come le tabelle dovrebbero funzionare, in questo si è rivelata un'implementazione tecnica abbastanza difficile - aveva bisogno di visualizzare una tabella di storia commerciale su 6000 righe in 20 colonne ~ 12 000valori e nella seconda scheda gli attuali ordini aperti come 19 colonne di informazioni, tutto funziona e nulla è lento né online né in tester ;) . La cosa principale è che non sovraccarica il terminale e il PC in generale (ho controllato e non superava il 7-8% di carico della CPU né sul PC né sul portatile).

PS: non dirò nulla su Market e ti consiglio di non farlo, vedi il mio pre-post - né tu né io non siamo pubblicati lì, rispettivamente, il livello di competenza è zero ;)

La cronologia degli ordini non era necessaria nelle mie strategie e non ci ho lavorato, ma ciò non significa che non sappia come aprire gli ordini, ecc. Inoltre, ho lavorato con gli EA molto tempo fa. Ma è tutto molto semplice, (soprattutto con il mio approccio). Non ho difficoltà a creare un Expert Advisor per il trading. Il livello di difficoltà nella creazione di grafici è molto più alto, ed è per questo che ci sono molti Expert Advisors e quasi nessun grafico. (Chiedete a@fxsaber.) E ho aspettato a lungo un articolo sul collegamento delle tabelle Sharp. (Solo che non avrete il mio livello di facilità di connettività, credetemi sulla parola. :))

Lo status di venditore di mercato difficilmente rende uno pensatore e apre gli occhi sui problemi esistenziali dell'algotrading).

 
Igor Makanu:
...

PSPS: hai solo voglia di una sorta di battaglia )))) per dimostrare che Sharpe è inferiore al tuo lavoro in termini di velocità di scrittura del software applicato? )))) - Beh, prova nel tuo thread "Il mio approccio" a postare una tabella con almeno 10k celle, vedi come funziona;)

Ho pubblicato una tabella in MQL4 con 1000 righe e ogni riga aveva più di 20 celle. In totale più di 20 mila cellule. L'avete visto. Ha funzionato molto velocemente. Guarda di nuovo, se non mi credi. Sottolineo MQL4. Funzionerebbe 10 volte più velocemente su un 5.

 
Реter Konow:

Ho pubblicato una tabella su MQL4 con 1000 righe e ogni riga aveva più di 20 celle. In totale più di 20k cellule. L'avete visto. Ha funzionato molto velocemente. Guarda di nuovo, se non mi credi. Sottolineo MQL4. Funzionerebbe 10 volte più velocemente su un 5.

Anche se si tratta di un milione di cellule. Se se ne possono vedere al massimo 1000 sullo schermo, perché aggiornare/disegnare tutto?