Erros, bugs, perguntas - página 215

 

Não poderia ainda ser possível imprimir o fragmento seleccionado no Yeditor? Neste momento, este botão de rádio não está activo.

Uma coisa pequena, é claro, mas desagradável, especialmente quando as listagens têm 50 páginas.

 

O servidor parece ter congelado... desde ontem.

 

O algoritmo genético desapareceu algures... Construir 360

Pergunta eliminada! Olhado no sítio errado!

 

Podemos confiar no facto de que a HistorySelectByPosition() devolve uma lista ORDERED de negócios?

ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера
  {
   PositionSelect(m_smb);
   HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
   uint total=HistoryDealsTotal();
//   for(uint i=0; i<total; i++)
   for(uint i=total-1; i>=0; i--)
     {
      ulong deal=HistoryDealGetTicket(i);
      if(order==HistoryDealGetInteger(deal,DEAL_ORDER))
         return(deal);                            // запомнили тикет сделки 
     }
   return(0);
  } 

Então a enumeração AQUI seria desnecessária. Caso contrário, a enumeração pode começar a partir do fim ... (reparou que os ofícios no testador foram ordenados).

 

Caros Senhores Desenvolvedores e programadores! Eu preciso de ajuda! Talvez eu não seja o primeiro, mas mesmo assim...

1. Como é possível organizar um loop, que seria interrompido (por exemplo) ao carregar no "botão" do objecto. Tanto quanto sei, a função OnChartEvent não pode ser chamada à força a partir do mesmo loop? Se assim for, talvez haja algumas formas de contornar isto, porque já me arrebentei com os miolos.

Quando o laço está em funcionamento, as variáveis do sistema não são actualizadas, ou seja, não é possível tirar partido da mudança do período gráfico (pelo menos). Se o laço é organizado verificando OnChartEvent, então é necessário fazer algo constantemente com o gráfico para activar esta função - também não é uma opção.

2. É possível mover a carta na janela da carta programática, e não apenas manualmente? ChartNavigate ou não funciona, ou foi concebido para outra coisa, ou ainda não descobri como funciona.

Agradeço-vos antecipadamente.

p.s. Seria possível fazer as próprias funções e variáveis destacadas no texto do programa?

 
KffAlex:

1. Como se pode configurar um laço para ser interrompido (por exemplo) quando um objecto "botão" é premido? Compreendo que a função OnChartEvent não pode ser chamada à força a partir do mesmo loop? Se assim for, talvez haja algumas formas de contornar a situação, porque eu já me arrebentei com os miolos.

Verificar o estado do objecto do botão.
 
KffAlex:

ChartNavigate ou não funciona, ou é concebido para outra coisa, ou ainda não descobri como funciona este.

Tente ChartRedraw após a chamada da função e certifique-se de que a autoscrolling no gráfico está desactivada...
Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 

Instalei o MT5 num servidor remoto dedicado. De vez em quando tenho de me certificar de que o terminal se liga novamente a um servidor se a ligação for interrompida por um curto período de tempo. Certifique-se de especificar qual o servidor a utilizar, caso contrário todo o comércio "congela". Como posso fazer com que o terminal volte a ligar-se automaticamente se não estiver ligado dentro de 5 minutos, por exemplo?

 
EvgeTrofi:

Instalei o MT5 num servidor remoto dedicado. De vez em quando tenho de me certificar de que o terminal se liga novamente a um servidor se a ligação for interrompida por um curto período de tempo. Certifique-se de especificar qual o servidor a utilizar, caso contrário todo o comércio "congela". Como posso reconectar automaticamente o terminal se não estiver ligado em 5 minutos, por exemplo?

Isto deve acontecer automaticamente.

O terminal detecta automaticamente a perda de ligação e volta a ligar-se a ele (quando esta característica está disponível).

Se isto não acontecer, escrever um pedido ao Service Desk com uma descrição completa do problema e não se esqueça de anexar os registos.

 

Confrontado com um problema de transbordamento da pilha de chamadas (penso eu).

Depois de chamar um método de um dos objectos , ver exemplo abaixo. O código é simplificado, apenas a sua essência. A classe CClass1 é uma classe base, e a list1 tem diferentes objectos que são descendentes desta classe, e as suas funções init têm diferentes implementações. Assim, numa classe em que a função init vai buscar tal lista (para simplificar, uma inicialização de uma interface aninhada, um painel num painel) após retornar do init na linha

    Print(t.name);

há um erro

2010.12.02 00:21:00 test1 (EURUSD,H1) Acesso ao ponteiro inválido em 'Container.mqh' (74,10)

for(CClass1* t = list1.GetLastNode(); t != NULL; t = list1.GetPrevNode() ) {
   t.init(); //после выхода отсюда t-мертвый указатель
    Print(t.name); 
}

Isto é, o ponteiro t está morto.

Quando se depura, este erro não ocorre, depois de chamar o método, o ponteiro está "vivo", são criadas interfaces aninhadas e a EA continua a funcionar.

A única forma de contornar o erro

savePoint = t;
t.init();
t = savePoint;
#O ponteiro do tamanho da pilha de propriedades não conseguiu nada.
Razão: