MetaEditor. Problemas e soluções. - página 6

 
1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Olá! depois de ter instalado MQL5 encontrei alguns defeitos na exibição de textos de programas durante a edição. Quando selecciono o cursor, a posição do texto muda, aparecem novos caracteres no teclado e não na posição do cursor. Reinstalar o software não ajuda. Como posso resolver o problema?



 
Pode dizer-me se é possível utilizar a carteira de encomendas no comércio (EA)?
 
Liric86:

1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Olá! depois de ter instalado MQL5 encontrei alguns defeitos na exibição de textos de programas durante a edição. Quando selecciono o cursor, a posição do texto muda, aparecem novos caracteres no teclado e não na posição do cursor. Reinstalar o software não ajuda. Como pode o problema ser resolvido?

A fonte que seleccionou não é mono-branca.

Por favor mude a sua definição de fonte para Courier New com um tamanho de fonte de 10 pontos.

 
todem:
Pode dizer-me se pode utilizar a carteira de encomendas no comércio (pela EA)?

Pode, mas não no testador de estratégias comerciais.

De momento são poucos (há Alpari em modo de teste) a oferecerem pilhas de divisas.

 
O que falta no depurador é um contador de passos. E um parâmetro predefinido para fazer a primeira pausa num determinado passo.
 
Urain:
O que falta no depurador é um contador de passos. E um parâmetro predefinido para fazer a primeira pausa num determinado passo.

As quebras são actualmente incondicionais, mas é possível contornar esta limitação usando o DebugBreak()
Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
Общие функции / DebugBreak - Документация по MQL5
 
mql5:
As quebras são actualmente incondicionais, mas podemos trabalhar em torno desta limitação usando DebugBreak().

Tudo isso é assim, mas enfrentei uma situação em que há muitas chamadas de uma classe universal descritas num ficheiro a ser ligado. E diferentes condições causam chamadas para células de matriz inexistentes desta classe. O programa em si contém milhares de passos de algoritmos, por isso é muito difícil rastrear em que passo uma falha ocorre usando DebugBreak()+F11.

É claro que saí da situação à moda antiga (com impressões e adivinhações lógicas). Mas o custo disto, muitas horas de trabalho. O principal problema não estava em que função deu um erro, mas em que função não calculou correctamente o valor que depois leva a um erro noutra função. Ou seja, não precisávamos do ponto de erro em si, mas do conhecimento do que estava a acontecer mesmo antes dele.

É por isso que precisamos de um rastreador interno passo a passo e da capacidade de ir ao passo especificado imediatamente após um novo começo (tendo rebobinado todos os anteriores).

 
Estava a referir-me a um desenho como este:

if(step==123124) DebugBreak();
 
mql5:

Referia-me a essa construção:

if(step==123124) DebugBreak();


Sim, é disso que estou a falar também. A sua colocação em cada linha de 5.000 linhas de código é um problema. E a localização intermédia não funcionou porque a referência está constantemente a saltar entre os inlúdios, pelo que não foi possível fazer uma primeira estimativa aproximada para uma localização mais precisa.

Descrevi esta sobrecarga no início do ficheiro:

ulong cntDebugBreak=0;
void DebugBreak(ulong step)
  {
   if(step>=cntDebugBreak){cntDebugBreak++;DebugBreak();}
   else cntDebugBreak++;
  }

mas se o chamar de forma invisível (em debugger), antes de cada expressão seria muito fixe.

O PS corrigiu o código.

 

O MetaEditor 4 tinha uma solução engenhosa para colocar a janela de ajuda na janela de ferramentas, a ajuda estava sempre à mão, mesmo na janela de edição de texto. A janela de ajuda também poderia ser colocada no MetaEditor 5?