Minha abordagem. O núcleo é o motor. - página 80

 
Александр:

Seu posto deve ser tomado como um requerimento para participar da implementação?

Eu também estava olhando para este tópico, mas você parece não ter lido meu post anterior com atenção.

Se através de freelance, por favor, faça. Qual é o orçamento? Em que momento lhe pareceu que eu estava lendo de forma desatenta?

 
Dmitry Fedoseev:

Se através de freelance, por favor, faça. Qual é o orçamento? Em que momento você pensou que eu não estava lendo com atenção?

Abster-me-ei de sugerir freelancer.

Vou me abster de prestar atenção aqui:

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Minha abordagem. Núcleo - Motor.

Alexander, 2018.12.16 16:12

Minhas habilidades em MQL e programação em geral são bastante modestas. ....

...Se existe uma maneira de acelerar os resultados sem ir muito fundo no processo, por que não aproveitar?

 

Exemplo de uma animação personalizada desenhada pela EA na janela do motor:

Código de controle na EA:

void OnTimer()
  { 
   static int q1,a,b; 
   //------------------------------------
   if(!a)LOAD_CANVAS_Last_10_bars(); 
   //---------------------------------
   if(!b) q1++;
   if(q1 == 200)b = 1;
   if(b)q1--;
   if(!q1)b = 0;  
   //------------- 
   ELLIPSE(q1,q1,q1+q1*2,q1+q1,clrBlue);          
   //------------------------------------
  }

Acrescentou 14 funções de desenho da classe CCanvas ao bloco de desenho do motor. Estas funções são chamadas do Conselheiro Especialista. Para isso, as funções de envoltório das funções de desenho foram adicionadas ao arquivo Connection_Properties.mqh

Você pode desenhar círculos, retângulos, triângulos, arcos, elipses e linhas.

Antes de chamar as funções de desenho, temos que especificar em que tela elas irão desenhar (por exemplo,LOAD_CANVAS_Last_10_bars();).

A tecnologia ainda está em seu estado bruto. Assim que eu fizer a depuração, vou postar um exemplo pronto.

 
Александр:

Boa tarde.

Estou tentando construir uma barra de ferramentas para controlar a habilitação/desabilitação de funções comerciais personalizadas e, respectivamente, corrigir alguns de seus parâmetros.

Eu me deparei com a impossibilidade de habilitar/desabilitar o painel devido à ausência do evento ChartEvent no Testador de Estratégia, ao implementar o painel no código do Expert Advisor.

Ou a impossibilidade de abrir ordens caso o painel seja implementado no código indicador.

Discussão aqui:

Peter me ofereceu sua ajuda para desenvolver o painel, o que eu não pude recusar.

Portanto, atualmente o painel tem este aspecto

ou assim, quando todos os botões são pressionados:

Sob cada botão seus parâmetros, que podem ser alterados por setas para cima/para baixo ou pela edição do campo de edição.

Para os botões "Now" o valor é .Locking(false); para todos os outros botões .Locking(true);

Para o botão "Trailing", adicionar outro parâmetro (interruptor) com os valores All/Each.

Além disso, temos que adicionar uma lista suspensa no painel com uma escolha de prazo e uma janela com uma lista de ordens abertas pelo símbolo atual com indicação do lucro de cada ordem (incluindo a troca) e uma cruz na frente de cada uma delas para fechá-la.

Peter, esta descrição é suficiente para o seu TOR?

Aqui está o painel.

Favor fazer ajustes na aparência, e explicar onde exatamente colocar a chave "Todos/E cada um", e também a lista de liberação com prazos (presumo que no topo, no centro).

Botões pressionados:


 

Quanto ao comércio no testador, estou resolvendo esse problema agora mesmo. Quero refazer completamente a comunicação entre a EA e o motor. Para implementá-lo através de "objetos de comunicação" (MT-objetos cuja descrição em cadeia é usada para a transmissão de dados entre programas).

Esta pode ser uma forma rápida e versátil de comunicação para comunicação normal e para comunicação no modo de teste da EA.

A abordagem atual da comunicação sobrecarrega a fila de eventos OnChartEvent(). O envio e a recepção de mensagens entre a EA e o motor é atrasado se houver muitos eventos, e isto pode ser visto visualmente. A comunicação através de objetos MT deve eliminar este problema, pois a recepção e o envio de mensagens será feito fora da fila de eventos OnChartEvent().

Em teoria, isto deve funcionar...

 
Реter Konow:

Aqui está o painel.

Por favor, faça correções na aparência e explique exatamente onde colocar a chave "Tudo/tudo", bem como a lista de prazos (acho que no topo, no centro).

Acho que seria melhor fazer o painel com toda a largura da área de trabalho (haverá mais meta para a lista de pedidos).

Os campos Editar com rótulos Lote, Lucro e ao lado dos botões "Agora" devem ter centésimos (formato 0,00).

Fiz experiências e cheguei à conclusão de que seria melhor substituir o campo pela lista de prazos por Rótulo e dois botões ("-" e "+"). Colocar no nível da fileira superior dos botões. Rótulo no meio, botão "-" à esquerda, botão "+" à direita do Rótulo. Haverá espaço abaixo para uma lista de pedidos em aberto.

Coloque as chaves All/Each abaixo dos botões "Trailing" no nível da etiqueta "Profit" (Lucro).

Esta é a minha visão, mas até onde entendi, depois de ler o fórum e observar seu trabalho, você tem o desejo e a capacidade de desenhar, por isso não me oporei a suas sugestões.

 
Александр:

1. Penso que seria melhor fazer com que o painel tenha toda a largura da área de trabalho (haveria mais meta para a lista de pedidos).

2. Os campos Editar com rótulos Lote, Lucro e ao lado dos botões "Agora" devem ter centésimos (formato 0,00).

3. Experimentei e cheguei à conclusão, que é melhor substituir o campo pela lista de prazos por Rótulo e dois botões ("-" e "+"). Colocar no nível da fileira superior dos botões. Rótulo no meio, botão "-" à esquerda, botão "+" à direita do Rótulo. Abaixo haverá espaço para a lista de pedidos em aberto.

4. Coloque os interruptores All/Each abaixo dos botões Trailing no nível da etiqueta Profit.

5 Esta é minha visão, mas entendi que, depois de ler o fórum e observar seu trabalho, você tem o talento e a capacidade de desenhar, portanto não me oporei a suas sugestões.

1. Ou seja, fazer o painel se ajustar automaticamente à largura da tabela? Ou apenas até a largura da tabela?

2. Será feito.

3. eu não entendo bem. Você quer dizer que os prazos devem ser estabelecidos no campo de entrada com botões +/-? E não fazer uma janela separada com uma lista de pedidos? Tudo sobre o painel?

4. O interruptor poderia ser um simples botão que muda de texto quando pressionado/pressionado?

5. Adicionar elementos gráficos.

(Um pequeno deslizador poderia ser transformado em um interruptor. O deslizador iria para a direita/esquerda)

 
Реter Konow:

Quanto ao comércio no testador, estou resolvendo esse problema agora mesmo. Eu quero refazer completamente a comunicação entre a EA e o motor. Para implementá-lo através de "objetos de comunicação" (MT-objetos cuja descrição em cadeia é usada para a transmissão de dados entre programas).

Esta pode ser uma forma rápida e versátil de comunicação para comunicação normal e para comunicação no modo de teste da EA.

A abordagem atual da comunicação sobrecarrega a fila de eventos OnChartEvent(). O envio e a recepção de mensagens entre a EA e o motor é atrasado se houver muitos eventos, e isto pode ser visto visualmente. A comunicação através de objetos MT deve eliminar este problema, pois a recepção e o envio de mensagens será feito fora da fila de eventos OnChartEvent().

Em teoria, deveria funcionar...

Não tenho certeza se entendi bem o ponto.

Estou certo de que você vai implementar a comunicação entre a EA e o painel em modo de teste através de eventos OnChartEvent()?

Se assim for, as chances de sucesso não são muito altas, porque os eventos OnChartEvent() não são gerados para a EA no testador (apenas para o indicador).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 aqui foi sugerido substituir os eventos OnChartEvent() por eventos OnTick().

Eu tentei, mas ele faz todos os objetos compostos (SpinEdit, ComboBox e outros) pararem de funcionar. O único método que permite alterar valores variáveis no Button.Pressed() tester e somente para botões autônomos (botões não incluídos em qualquer objeto complexo como SpinEdit)

SimplePanel проблема при переключении таймфрейма
SimplePanel проблема при переключении таймфрейма
  • 2018.12.16
  • www.mql5.com
В составе стандартного пакета MT4 имеется пример создания панели управления "Simple Panel...
 
Александр:

Não tenho certeza se entendi bem o ponto.

Entendo corretamente, que você vai realizar a comunicação entre a EA e o painel em modo de teste através dos eventos OnChartEvent()?

Se assim for, as chances de sucesso não são muito altas, porque os eventos OnChartEvent() não são gerados para a EA no testador (apenas para o indicador).

https://www.mql5.com/ru/forum/294890/page4#comment_9914750 aqui foi sugerido substituir os eventos OnChartEvent() por eventos OnTick().

Eu tentei, mas ele faz todos os objetos compostos (SpinEdit, ComboBox e outros) pararem de funcionar. O único método que permite alterar valores de variáveis em Button.Pressed() tester e somente para botões independentes (botões não incluídos em qualquer objeto complexo como SpinEdit)

É uma longa explicação. Mas, confie na minha experiência. O método de comunicação funcionará.

O painel estará em um gráfico regular. O Conselheiro Especialista no testador. O painel encontrará o Consultor Especialista no Testador de Estratégia, criará objetos de MT e através de sua descrição "comunicar-se-á" com a EA.

O OnChartEvent() funciona no gráfico regular. Não está no testador. Mas isso não impedirá a sincronização dos valores dos parâmetros.

Tenho certeza de que vai funcionar.

Será uma questão de uma semana.

 
Реter Konow:

É uma longa explicação. Mas, confie na minha experiência. O método de comunicação funcionará.

O painel estará em uma tabela normal. O Conselheiro Especialista no testador. O painel encontrará o Consultor Especialista no Testador de Estratégia, criará objetos de MT e através de sua descrição "comunicar-se-á" com a EA.

O OnChartEvent() funciona no gráfico regular. Não está no testador. Mas isso não impedirá a sincronização dos valores dos parâmetros.

Tenho certeza de que vai funcionar.

Será uma questão de uma semana.

Não vai funcionar.

Razão: