Programação assíncrona e multi-tarefa em MQL - página 37

 

Eu entendi porque std::async é tão lento. O problema é que eu tenho linux+gcc/clang, não há um pool de fios atrás de async, um novo fio é estupidamente iniciado a cada novo trabalho. O que me confundiu foi que dois fios criados consecutivamente e imediatamente destruídos teriam a mesma identificação:

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

O teste async em wind+msvc mostrou que no teste onde o gcc iniciou 10 roscas, msvc iniciou 6 (CPU de 4 núcleos), ou seja, não é uma nova rosca idiota começando para a tarefa, obviamente há algum tipo de fila de espera.

Conclusão: assimetria mais ou menos adequada somente em winnda (via thread pool).

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

A piscina não é estática e o tamanho pode ser alterado. Mas como se você controlasse fortemente a async() :), as-é evidente - a norma não garante sequer a implementação (um pool de fios ou não), e se for um pool, você não tem nenhuma influência sobre ele (o compilador pode querer atribuir 1 fio ao pool, ele nem mesmo lhe perguntará).

Mas se você está escrevendo apenas para o vento, então você pode usar o async em princípio (embora eu não goste disso agora).

SZY: por que precisamos de assimetria sem piscina de fios que eu não entendo nada ...

 
Vict:

Eu entendi porque std::async é tão lento. O problema é que eu tenho linux+gcc/clang, não há um pool de fios atrás de async, um novo fio é estupidamente iniciado a cada novo trabalho. O que me confundiu foi que dois fios criados consecutivamente e imediatamente destruídos teriam a mesma identificação:

O teste async em wind+msvc mostrou que no teste onde o gcc iniciou 10 roscas, msvc iniciou 6 (CPU de 4 núcleos), ou seja, não é uma nova rosca idiota começando para a tarefa, obviamente há algum tipo de fila de espera.

Conclusão: assimetria mais ou menos adequada somente em winnda (via thread pool).

A piscina não é estática e o tamanho pode ser alterado. Mas como se você controlasse fortemente a async() :), as-é evidente - a norma não garante sequer a implementação (um pool de fios ou não), e se for um pool, você não tem nenhuma influência sobre ele (o compilador pode querer atribuir 1 fio ao pool, ele nem mesmo lhe perguntará).

Mas se você está escrevendo apenas para o vento, então a assimetria poderia ser usada (embora eu não goste disso agora).

SZY: Não entendo por que precisamos de assimetria sem o pool de fios ...

Dados os resultados da experiência e as novas informações, sua opinião sobre a necessidade de multi-tarefas na MQL mudou?
 
Реter Konow:
Levando em conta os resultados da experiência e as novas informações, sua opinião sobre a necessidade de multithreading na MQL mudou?

Bem, eu tenho sido assíncrona aqui - uma embalagem de alto nível para os preguiçosos. Em geral, eu não sou contra a multithreading.

Eu usaria multithreading em µl? Não, não o farei. Peter, já passei do mercado e, francamente, não estou muito interessado em um ecossistema fechado com uma linguagem poderosa. Por que criar outro C++ (o que não é uma tarefa nada fácil)? Para que os mais "empreendedores" vendamseus "grãos" estritamente através do mercado? Bem, não é esse tipo de missão.

 
Vict:

Bem, eu tenho sido assíncrona aqui - uma embalagem de alto nível para os preguiçosos. Em geral, eu não sou contra a multithreading.

Eu usaria multithreading em µl? Não, não o farei. Peter, já passei do mercado e, francamente, não estou muito interessado em um ecossistema fechado com uma linguagem poderosa. Por que criar outro C++ (o que não é uma tarefa nada fácil)? Para que os mais "empreendedores" vendam seus "grãos" estritamente através do mercado? Bem, não é esse tipo de missão.

Bem, provavelmente é o contrário. Para que os mais empreendedores vendessem algo diferente dos"grails". Afinal, são os "grails" que não exigem ferramentas sérias. Se novas aplicações poderosas aparecerem, talvez o "grail-parasitismo" em algotrading diminua e o valor da abordagem profissional prevaleça. Não é um fato, é claro, mas pode ser...
 
Vict:

Vou usar multithreading em µl? Não, não o farei.

Pelo menos uma resposta sincera à pergunta: por que você precisa de multithreading em MQL-problems?

Se não me engano, perguntei 5 vezes sem nenhuma resposta específica, e houve tentativas de vincular o threading ao treinamento NS, mas perdi-o.

ReTeg Konow:
Bem, provavelmente é o contrário. Para os mais empreendedores, vender algo que não seja "grails". Afinal, são os "grails" que não exigem ferramentas sérias.

Peter, você tem o talento de fazer afirmações barulhentas devido à baixa competência!

Se eu não estou enganado, você não tem nenhuma habilidade em escrever o Expert Advisors, mesmo um simples indicador de abrir/fechar, e agora você está dizendo que não são necessárias ferramentas sérias para criar um Expert Advisor que negocia em uma história puramente positiva?

Tente escrever apenas um Expert Advisor comercial - um mundo de aventuras emocionantes espera por você!

))))

 
Igor Makanu:

Pelo menos uma resposta sincera à pergunta: por que precisamos de multithreading nos problemas de MQL?

Se não estou enganado, perguntei 5 vezes porque é necessário, não foram dadas respostas, houve tentativas de vincular o threading ao treinamento NS, mas em minha opinião "passado".

Peter, você tem o talento de fazer afirmações sinceras devido à baixa competência!

Se eu não estou enganado, você não tem nenhuma habilidade em escrever o Expert Advisors, mesmo um simples indicador de abrir/fechar, e agora você está dizendo que não são necessárias ferramentas sérias para criar um Expert Advisor que negocia em uma história puramente positiva?

Tente escrever apenas um Expert Advisor comercial - um mundo de aventuras emocionantes espera por você!

))))

Não quero começar um off-topic na linha, mas você também tem um talento para fazer declarações barulhentas devido à baixa competência. Neste caso, você não conhece minhas capacidades e experiência. Eu nunca escrevi indicadores, é verdade, mas eu os escrevi. E suas declarações sobre o Sharpe em MQL, que deve ter esmagado meus desenvolvimentos? Que eu não posso fazer nada sério com minha abordagem e que tudo funciona mal, etc.? Alta competência? )

Basta olhar para o mercado para ver que (quase) nada além de"grails" são vendidos lá. 13000 "grails" e 1000 utilidades, indicadores e bibliotecas. Num palpite. Conseqüentemente, é fácil fazer estes "grails". Especialmente no MT4. E é a criação dos "grails" que define o conjunto de ferramentas de desenvolvimento MQL em grande demanda, colocando assim uma barreira para o desenvolvimento de aplicações.

 
Реter Konow:

Eu não quero começar um off-topic, mas você também tem um talento para fazer declarações barulhentas devido à baixa competência. Neste caso, você não conhece minhas capacidades e experiência. Eu nunca escrevi indicadores, é verdade, mas escrevi especialistas e fiz muitos deles. E suas declarações sobre o Sharpe em MQL, que deve ter esmagado meus desenvolvimentos? Que eu não posso fazer nada sério com minha abordagem e que tudo funciona mal, etc.? Alta competência? )

Basta olhar para o mercado para ver que (quase) nada além de "grails" são vendidos lá. 13000 "grails" e 1000 utilidades, indicadores e bibliotecas. Num palpite. Conseqüentemente, é fácil fazer estes "grails". Especialmente no MT4. E é a criação dos "grails" que define o conjunto de ferramentas de desenvolvimento do MQLQL em grande demanda, colocando uma barreira para o desenvolvimento de aplicações.

estranho, se você estava escrevendo especialistas em comércio, por que você tinha perguntas no tópico "minha abordagem" sobre ações elementares, como obter as propriedades de uma ordem aberta? (quando você escreveu a mesa), assim como agora, a afirmação barulhenta de que escrever um tester grail não é trabalho intensivo?

bem, já que você sabe como fazer tudo, então você não fez uma boa piada?


minhas afirmações sobre a Sharp estão no meu blog e na KB nas publicações de@fxsaber, tudo funciona e as tabelas também, e@fxsaber estava testando sob sua visão de como as tabelas deveriam funcionar, e isso acabou se tornando uma implementação técnica bastante difícil - ele precisava exibir uma tabela de histórico de negócios com mais de 6000 linhas em 20 colunas commais de 100 milvalores! e na segunda aba ordens abertas atualmente como 19 colunas de informação, tudo funciona e nada é lento nem online nem no testador ;) . O principal é que não sobrecarrega o terminal e o PC em geral (testei-o e não ocupa 7-8% da carga da CPU nem no PC nem no laptop)

PS: sobre Mercado não vai dizer nada e você não aconselha, veja meu pré-post - nem você nem eu somos publicados lá, respectivamente, o nível de competência é zero ;)

PSPS: você está muito interessado em algum tipo de batalha )))) para provar que a Sharp é inferior ao seu trabalho pela velocidade de escrita do software aplicado? )))) - tente em seu tópico "Minha abordagem" postar uma tabela com pelo menos10k células, veja como funciona;)

 
Igor Makanu:

estranho, se você estava escrevendo especialistas em comércio, por que você tinha perguntas no tópico "Minha abordagem" sobre ações elementares, como obter as propriedades de uma ordem aberta? (quando você escreveu a mesa), assim como agora, a afirmação barulhenta de que escrever o Graal de um testador não é trabalhoso?

bem, já que você sabe como fazer tudo, então você não fez uma boa piada?


minhas afirmações sobre Sharp estão em meu blog e QB nas publicações de@fxsaber, tudo funciona e as tabelas também, e testadas por @fxsaber para sua visão de como as tabelas devem funcionar, nesta se revelou uma implementação técnica bastante difícil - ele precisava exibir uma tabela do histórico comercial mais de 6000 linhas em 20 colunas ~ 12 000valores e na segunda aba as ordens abertas atualmente como 19 colunas de informações, tudo funciona e nada é lento nem online nem no testador ;) . O principal é que ele não sobrecarrega o terminal e o PC em geral (eu verifiquei e não estava acima de 7-8% de carga no PC ou notebook).

PS: Não direi nada sobre o Mercado e aconselho que não veja meu pré-post - nem você nem eu somos publicados lá, respectivamente, o nível de competência é zero ;)

O histórico de pedidos não foi necessário em minhas estratégias e eu não trabalhei com ele, mas isso não significa que eu não saiba como abrir pedidos, etc. Além disso, eu trabalhei com EAs há muito tempo. Mas é tudo muito simples, (especialmente com minha abordagem). Não tenho dificuldade em criar um Expert Advisor comercial. O nível de dificuldade na criação de gráficos é muito maior, e é por isso que existem muitos Expert Advisors e quase nenhum gráfico. (Pergunte@fxsaber.) E estou há muito tempo esperando por um artigo sobre como conectar mesas Sharp. (Só que você não vai conseguir meu nível de conectividade fácil, acredite em minha palavra. :))

O status de vendedor de mercado dificilmente faz de alguém um pensador e abre os olhos para os problemas existenciais de algotrading).

 
Igor Makanu:
...

PSPS: você só está ansioso por algum tipo de batalha )))) para provar que Sharp é inferior ao seu trabalho em termos de velocidade de escrita de software aplicativo? )))) - bem, tente em seu tópico "Minha abordagem" postar uma tabela com pelo menos 10 mil células, veja como ela funciona;)

Afixei uma tabela em MQL4 com 1000 linhas e cada linha tinha mais de 20 células nela. No total, mais de 20 mil células. Você o viu. Funcionou muito rápido. Olhe novamente, se você não acredita em mim. Sublinho MQL4. Funcionaria 10 vezes mais rápido em um 5.

 
Реter Konow:

Afixei ali uma tabela na MQL4 com 1000 linhas e cada linha possuía mais de 20 células. No total, mais de 20k células. Você já viu. Funcionou muito rápido. Olhe novamente, se você não acredita em mim. Sublinho - MQL4. Funcionaria 10 vezes mais rápido em um 5.

Mesmo que seja um milhão de células. Se você pode ver um máximo de 1000 deles na tela, por que atualizar/desenhar tudo?