Regras de estrutura. Aprender a estruturar programas, explorar possibilidades, erros, soluções, etc. - página 19

 
komposter:

MetaDriver diz bem, e o seu sistema está correcto. Dick_fx acrescentaria também que o "motor de negociação" deveria trabalhar com plataformas 10-20 para utilizar os melhores preços.

Mas utilizar um sistema tão correcto só é conveniente em condições ideais - sem erros de estratégia, sem intervenção do utilizador, sem força maior... E na realidade, isto raramente acontece.

Deixe-me dar um exemplo de dick_fx: 25 estratégias estão a funcionar, agregador (impulsionador do comércio) recolhe-as numa posição líquida e coloca-as no mercado, tudo está bem. De repente, algo corre mal na 17ª estratégia e dá previsões pouco saudáveis - diz-se para abrir a 50% do depósito. O Expert Advisor abre obedientemente.

O que faz um cacifo trivial a la MT4:

  • remove o 17º EA do gráfico (é fácil de encontrar pelo magik no acordo),
  • fechar a posição correspondente (em termos de MT4) ou parte da posição (em termos de MT5),
  • lê registos, criados por esta EA, para analisar a situação.

Agora passemos à "contabilidade correcta". O que deve o comerciante fazer para corrigir o erro (um comércio com 50% de margem - um erro lógico óbvio)?

  • Encontrar qual a estratégia que a gerou (como? a partir dos registos?),
  • Encontrar o código apropriado e editá-lo (return(0)?),
  • OU no laço de soma de posições, em oposição à estratégia requerida (o número não deve ser confundido!), colocar continuar;
  • Compilar o Expert Advisor (se for MT4 - primeiro fechar o terminal, ou após a compilação, especificar as definições correctas),
  • A análise da situação - uma canção separada (se não for fornecida com os seus próprios registos com divisão em estratégias).

A questão é: O que é mais fácil? Obviamente, a variante com MT4.

E o que é mais barato? Obviamente, a opção com Netting.

Qual é a conclusão? Fazer um motor de mercado com GUI da MT4 ;)

O problema da localização de uma estratégia com falhas numa multidão de estratégias heterogéneas resumidas existe, mas ainda não se tornou tão dramático. Pessoalmente resumo (em grande quantidade) apenas estratégias homogéneas, por exemplo, redes neurais optimizadas de forma diferente. Mas aí tudo é mais fácil - os sinais das estratégias são normalizados (-1...+1), cada estratégia faz uma contribuição microscópica para a posição agregada, a fiabilidade do esquema é alcançada devido à "preponderância estatística". Por outro lado, é mais complicado - é quase irreal apanhar uma falha nesta multidão a tempo. Apenas através de testes individuais (de preferência por testes automatizados).

Pode tentar gerar ideias para esta localização, mas não tentar "reflexivamente" saltar para 4, e apenas sentir o espaço de opções - talvez se encontre algo melhor. :)

// Provavelmente, seria impossível inventar melhor um indicador de equidade individual (aka testador) para cada estratégia, mas até agora parece ser um fardo demasiado pesado.

 
komposter:

OMetaDriver diz bem, e o seu sistema está correcto. Dick_fx acrescentaria também que o "motor de negociação" deveria trabalhar com plataformas 10-20 para utilizar os melhores preços.

Mas utilizar um sistema tão correcto só é conveniente em condições ideais - sem erros de estratégia, sem intervenção do utilizador, sem força maior... E na realidade, isto raramente acontece.

Deixe-me dar um exemplo de dick_fx: 25 estratégias estão a funcionar, agregador (impulsionador do comércio) recolhe-as numa posição líquida e coloca-as no mercado, tudo está bem. De repente, algo corre mal na 17ª estratégia e dá previsões pouco saudáveis - diz-se para abrir a 50% do depósito. O Expert Advisor abre obedientemente.

O que faz um cacifo trivial a la MT4:

  • remove o 17º EA do gráfico (é fácil de encontrar pelo magik no acordo),
  • fechar a posição correspondente (em termos de MT4) ou parte da posição (em termos de MT5),
  • lê registos, criados por esta EA, para analisar a situação.

Agora passemos à "contabilidade correcta". O que deve o comerciante fazer para corrigir o erro (um comércio com 50% de margem - um erro lógico óbvio)?

  • Encontrar qual a estratégia que a gerou (como? a partir dos registos?),
  • Encontrar o código apropriado e editá-lo (return(0)?),
  • OU no laço de soma de posições, em oposição à estratégia requerida (o número não deve ser confundido!), colocar continuar;
  • Compilar o Expert Advisor (se for MT4 - primeiro fechar o terminal, ou após a compilação, especificar as definições correctas),
  • A análise da situação - uma canção separada (se não for fornecida com os seus próprios registos com divisão em estratégias).

A questão é: O que é mais fácil? Obviamente, a variante com MT4.

E o que é mais barato? Obviamente, a opção Netting.

Qual é a conclusão? Fazer um motor de mercado com GUI da MT4 ;)

Tem-se a sensação de que o MT5 negoceia posições.

A rede é um sistema de contabilidade e não mais do que isso, MT4 tem apenas o histórico de encomendas, MT5 tem tanto o histórico de encomendas como a sua soma numa posição.

Isto é, o MT5 tem inequivocamente mais informações a processar.

Devemos também ter em mente que cada encomenda tem um magik e um comentário, assim como no MT4. Permitem-nos identificar qual a estratégia agregadora que fez uma encomenda em 50% da margem.

Se não soubermos como utilizar este tipo de números mágicos e comentários, não veremos como é fácil identificar a encomenda.

Se quisermos utilizar um MetaTrader 5 como alimentação de dados, então colocar uma ordem na mesma ordem que supostamente está a ser fechada, então nas ordens fechadas serão listadas apenas as ordens que têm ordens fechadas, e nas ordens abertas que não têm ordens fechadas.

 
TheXpert:

O condutor do comércio reduz a fiabilidade do sistema.

Não acredita realmente nisso? E fala tão vigorosamente sobre o condutor como algo realmente fixe.

Aqui está um exemplo - temos uma arbitragem round robin. A primeira ordem desencadeia por limite, e depois a ronda é fechada por mercado.

O que acontece no testador interno? O círculo está fechado e não há Exigências, solicitações, pings e outras coisas que perturbam o comércio.

Agora imaginemos que depois do limite de requote (o gatilho estava lá, a posição não apareceu) o preço voltou atrás e aconteceu à meia-noite (a lei da Fortuna) e a ligação foi perdida por esse tempo.

O sinal foi detectado e há uma posição no testador interno; deve ser definido. Isto resultou numa enorme perda por padrões de arbitragem. Na verdade, a resposta terminou com uma rejeição, pelo que não é necessário abrir uma posição.

Os melhores sapatos são aqueles que são feitos à medida para se adaptarem aos seus pés. Quanto mais versátil, menos fiável.

 

TheXpert:

TheXpert:

O condutor do comércio reduz a fiabilidade do sistema.

Não acredita realmente nisso? E discutir o condutor tão vigorosamente como algo realmente fixe.

Exemplo - temos uma arbitragem round robin. A primeira ordem desencadeia o limite, depois o círculo fecha-se no mercado.

O que acontece no testador interno? O círculo está fechado, não existem reajustes, requotes, pings e outras coisas que perturbem o comércio.

Agora imaginemos que após o limite de requote (o gatilho estava lá, a posição não apareceu) o preço voltou atrás mas aconteceu à meia-noite (a lei da Fortuna) e a ligação perdeu-se por esse tempo.

O sinal foi detectado e há uma posição no testador interno; deve ser definido. Isto resultou numa enorme perda por padrões de arbitragem. Na verdade, a resposta terminou com uma rejeição, pelo que não é necessário abrir uma posição.

Os melhores sapatos são os que são feitos por medida para o pé. Quanto mais versátil, menos fiável.

Ora bem, ora bem, ora bem.


Feliz aniversário para si....!

--

Andriyuha, é claro que este condutor é para prever estratégias, não estratégias de arbitragem. E uma não exclui a outra. O lugar das estratégias de arbitragem é um pouco mais abaixo no canal, nomeadamente no agregador. Estou a planear este módulo (arbitragem). Se continuarmos com o esquema... No entanto, ainda ontem escrevi sobre o assunto, aqui

https://www.mql5.com/ru/forum/105007/page9#821911

e ainda aqui

https://www.mql5.com/ru/forum/105007/page10#821949

 
Urain:

Deixar a tarefa. Que tarefas são mais solicitadas na GUI?

Pode fazê-lo a partir daí. Descreva o que está a tentar alcançar, escolha as características comuns, faça a estrutura, depois acrescente mais algumas coisas, veja como é fácil mudar a estrutura.

Para compreender o que deve ser, reescreva-o. É o que me parece.

Eu gostaria de algo do género:

Urain:
E se fizer a referência API através do módulo de referência? Então pode alterar um módulo e mudar a plataforma.

Terei de inventar um router de eventos universal (: perdoem-me TheXpert :) personalizável. Para ligá-lo ao TC de um lado e ao GUI do outro.

--

TheXpert:
...

Os melhores sapatos são os que são feitos por medida para se ajustarem ao seu pé. Quanto mais versátil, menos fiável.

// Andrei, o propósito das soluções universais é a múltipla utilização. Eu próprio conheço os "menos"... ))

 
Urain:

Tem-se a sensação de que o MT5 negoceia em posições.

A rede é um sistema de contabilidade e não mais do que isso, MT4 tem apenas o histórico de encomendas, MT5 tem tanto o histórico de encomendas como a sua soma numa posição.

Isto é, o MT5 tem inequivocamente mais informação a processar.

Devemos também ter em mente que cada encomenda tem um magik e um comentário, assim como no MT4. Permitem-nos identificar qual a estratégia agregadora que fez uma encomenda em 50% da margem.

Se não soubermos como utilizar este tipo de números mágicos e comentários, não veremos como é fácil identificar a encomenda.

Se quisermos utilizar um MetaTrader 5 como alimentação de dados, então colocar uma ordem na mesma ordem que é supostamente fechada, então nas ordens fechadas serão listadas apenas as ordens que têm ordens fechadas, e nas ordens abertas que não têm ordens fechadas.

Praticamente fechou o assunto da vantagem de um sistema de encomendas (MT4) sobre um sistema de encomendas em rede (MT5). Tal coisa não me tinha ocorrido, embora obviamente funcione e esteja próximo.
 
MetaDriver:
Não pensei em tal truque, embora funcione claramente e esteja próximo.
Acho estranho que não me tenha ocorrido :) então é preciso uma segunda dica - de facto, deveria haver três magos ligados, porque também existem TP e SL.
 
sergeev:
Estranho que não tenha vindo :) então uma segunda dica para si - de facto, deveria haver três magos relacionados, porque também existem TP e SL.

Não é relevante para mim - não uso paragens comerciais (estratégicas), embora agradeça a dica. ))

--

Todos estes problemas são na sua maioria rebuscados (na netting), ou de clientes de trabalho. A forma quaternária de "diversificação de estratégias", que se destaca por baixo, o atavismo é nú, não melhor que a locomoção. Pode-se escrever toda a história tanto das posições recomendadas como da execução (posições de mercado) em disco, em geral. Para cada subestratégia individualmente. Se o escritor não perder tempo, coloque-o num fio separado (Expert Advisor) e alimente-o com a informação através de eventos personalizados. Para a análise das "realidades de execução" pode muito bem vir a ser útil.

 
Urain:
E se fizer uma referência API através do módulo de referência? então pode alterar um módulo e mudar a plataforma.

Exactamente. Não há necessidade de escrever um módulo separado. Porque o fornecedor de dados é esse mesmo módulo. Desenho o esquema de um tal pedido na segunda-feira. Quanto à GUI, não precisamos de inventar qualquer "router de eventos", como Vladimir sugere. O módulo de tempo de execução suporta interface GUI, o que significa que qualquer TC ligado ao módulo de tempo de execução começará a trabalhar com painel GUI por defeito, mesmo sem saber nada sobre ele (o esquema estará disponível na segunda-feira). O módulo de tempo de execução aqui é como uma classe adaptador. O princípio é simples:

Qualquer sistema que saiba trabalhar com o executável pode interagir uns com os outros, sem saber nada uns sobre os outros.

 
MetaDriver:
Ainda nem sequer pensei em tal coisa, embora obviamente esteja a funcionar e possa ser encontrada perto de mim.

É estranho, Vladimir, que isto tenha vindo como uma revelação para si. Utilizo este esquema no meu trabalho há já quase um ano.

Sim, compreender que não se trata de redes. Como Vladimir correctamente assinalou, os algoritmos governam, não se pode construir um projecto grande, e o mais importante, escalável sem saber como estruturar os dados correctamente. Preste atenção à discussão activa do esquema de condutores de mercado, um necessita disto e o outro necessita daquilo, e dentro deste esquema temos de introduzir cada vez mais novos módulos, inter-relações, diferentes "routers de eventos". E no que se tornaria o projecto se dezenas ou dois comerciantes com tarefas diferentes e compreensão diferente do mercado o utilizassem?

Por alguma razão, vêm-me à mente as palavras de Alexander Radishchev: "O monstro é maliciosamente enorme, estóico e a ladrar".