Discussão do artigo "Interfaces gráficas X: Ordenação, reconstrução da tabela e controles nas células (build 11)" - página 10

 

Hi,

seu projeto de tabela é realmente interessante e um exemplo de boa codificação OOP.

Posso perguntar se você estaria disposto a pensar em um complemento - espero que para outros também - muito útil para EAs complicados com vários símbolos?

Imagine um EA que negocie muitos símbolos com muitos indicadores com - para cada símbolo - uma configuração de parâmetros de indicador individual (simples, por exemplo):

string de entrada Sym1 = "EURUSD";

input int Sym1MACDema1 = 12;

entrada int Sym1MACDema2 = 26;

input int Sym1MACDsma3 = 9

input ENUM_APPLIED_PRICE Sym1MACDprc =PRICE_CLOSE;

string de entrada Sym2 = "GBPUSD";

input int Sym2MACDema1 = 11;

input int Sym2MACDema2 = 25;

input int Sym2MACDsma3 = 10

input ENUM_APPLIED_PRICE Sym2MACDprc =PRICE_CLOSE;

...

Seria muito mais fácil para o usuário lidar com isso se essa configuração fosse apresentada como uma tabela em vez de uma longa lista de parâmetros.

Especialmente se você habilitar seu aplicativo para gerenciar o StartegyTester por esse arquivo csv. Acho que é preciso gerenciar o EA no StrategyTester pelo arquivo csv na função OnInit()-.

Para isso, poderíamos acrescentar o que o StratTester oferece: definir um intervalo, de, para, passo.

Mas aí o problema pode ser que, no caso do Algoritmo Genético, se OnInit() retornar INIT_PARAMETERS_INCORRECT ou INIT_FAILED, o algoritmo genético contará isso como uma aprovação válida, o que reduzirá a quantidade de execuções de teste realmente aprovadas, reduzindo a validade do resultado final.

Percebi esse problema com o mt4 e escrevi para o Service Desk, mas não tenho ideia se eles resolveram o problema ou não.


De qualquer forma, bom trabalho - continue assim :)




 
Carl Schreiber:

...

Obrigado pelo feedback e pela sugestão! Vou pensar em como isso pode ser feito.
 

Olá, como posso mover programaticamente o formulário principal ou a caixa de diálogo para um local específico.

Por exemplo, eu gostaria de mover a caixa de diálogo para o canto superior esquerdo quando o título do formulário for clicado.

 

Tol, notei coisas estranhas ao redimensionar colunas - o texto é cortado incorretamente. Também descobri acidentalmente que o tamanho da coluna muda constantemente quando a tecla Ctrl é mantida pressionada.


 
Artyom Trishkin:

1) Tol, notei coisas estranhas ao alterar o tamanho das colunas - o texto é cortado incorretamente.

2) E também descobri acidentalmente uma alteração constante do tamanho da coluna ao manter pressionada a tecla Ctrl.

1. Tentei testar com diferentes modos de alinhamento de texto em colunas, mas não consegui reproduzir.

2. Brinquei com a tecla Ctrl, mas não está claro o motivo desse comportamento. Essa tecla não está definida no código da tabela.

 

Hi!

Esta é uma ótima biblioteca!

Você ainda oferece suporte ao MT4?

Ter suporte tanto para o MT4 quanto para o MT5 seria uma ótima maneira de fazer uma transição tranquila do MT4 para o MT5 quando chegar a hora.

 

Olá,


Fiz o download da biblioteca deste artigo e estava modificando algo para aprender sobre a biblioteca. Tenho uma pergunta simples.


Se eu não criar menus, como no código que modifiquei abaixo, não poderei classificar a tabela e clicar uma única vez na caixa de seleção. @AnatoliKazharski


//+------------------------------------------------------------------+
//| Cria um painel de negociação|
//+------------------------------------------------------------------+
bool CProgram::CreateExpertPanel(void)
  {
//--- Criando o formulário 1 para controles
   if(!CreateWindow1("EXPERT PANEL"))
      return(false);
/*/--- Criando controles:
// Menu principal
 if(!CreateMenuBar(1,20))
 return(false);
//--- Menus de contexto
 if(!CreateMBContextMenu1())
 return(false);
 if(!CreateMBContextMenu2())
 return(false);
 if(!CreateMBContextMenu3())
 return(false);
 if(!CreateMBContextMenu4())
 return(false);*/
//--- Criando a barra de status
   if(!CreateStatusBar(1,25))
      return(false);
//--- Botões
   if(!CreateSimpleButton1(7,50,"ADD COLUMN"))
      return(false);
   if(!CreateSimpleButton2(7,75,"DELETE COLUMN"))
      return(false);
   if(!CreateSimpleButton3(180,50,"ADD ROW"))
      return(false);
   if(!CreateSimpleButton4(180,75,"DELETE ROW"))
      return(false);
   if(!CreateSimpleButton5(353,50,"REBUILD TABLE"))
      return(false);
   if(!CreateSimpleButton6(353,75,"CLEAR TABLE"))
      return(false);
//--- Edições
   if(!CreateSpinEdit1(114,52,":"))
      return(false);
   if(!CreateSpinEdit2(114,77,":"))
      return(false);
   if(!CreateSpinEdit3(287,52,":"))
      return(false);
   if(!CreateSpinEdit4(287,77,":"))
      return(false);
//--- Criar tabela renderizada
   if(!CreateCanvasTable(1,103)) // 103 | 42
      return(false);
//--- Redesenho do gráfico
   m_chart.Redraw();
   return(true);
  }
 
Olá, você pode me dizer como atualizar uma tabela se ela tiver dados dinâmicos ? https://www.mql5.com/ru/forum/165152/page10#comment_7488387
 
Juer:
Olá, você pode me dizer como atualizar uma tabela se ela tiver dados dinâmicos ? https://www.mql5.com/ru/forum/165152/page10#comment_7488387

Veja aqui: GUIs X: Atualizações para uma tabela desenhada e otimização de código (build 10)