Erros, bugs, perguntas - página 367

 
Yedelkin:
O problema está muito provavelmente noutra coisa. Tenho exactamente a mesma declaração de matriz no OnInit() funcionou bem e continua a funcionar. Tem uma letra m latina omitida em nome do conjunto ArrSybols. Talvez este seja um problema do programador?

Pode falhar, mas será que faz alguma diferença?

E se eu o escrever em nativo (o que não é proibido, como eu o entendo) todo o terminal deve cair?

O código funciona exactamente sem essa declaração de matriz, mesmo que se especifique apenas a dimensionalidade, tudo funciona.

//Вот так работает
string ArrSybols[10];

A declaração original da matriz era assim

//List of symbols for trade on the Championship 2010
string ArrSymbolsChampionship2010[10] = {"EURUSD","GBPUSD","USDJPY","USDCHF","USDCAD",
                                        "AUDUSD","EURJPY","EURCHF","GBPJPY","GBPCHF"};
 

A pergunta ainda é válida.

Consegui ligar o indicador numa janela separada a OBJ_CHART, mas quando se muda o tamanho da janela indicadora, não é muito agradável, porque se a altura de OBJ_CHART é 500, então a altura da janela indicadora foi definida para um máximo de 493. Como resultado, deixa-nos com um topo feio. Como se livrar dele?

Código:

   if(ObjectFind(0,"MW_chart")!=0)
     {
      ObjectCreate(0,"MW_chart",OBJ_CHART,0,time[0],close[0]);
      ObjectSetString(0,"MW_chart",OBJPROP_SYMBOL,_Symbol);
      ObjectSetInteger(0,"MW_chart",OBJPROP_PERIOD,_Period);
      ObjectSetInteger(0,"MW_chart",OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(0,"MW_chart",OBJPROP_XSIZE,1000);

      ObjectSetInteger(0,"MW_chart",OBJPROP_DATE_SCALE,false);
      ObjectSetInteger(0,"MW_chart",OBJPROP_PRICE_SCALE,false);
      ObjectSetInteger(0,"MW_chart",OBJPROP_SELECTABLE,1);
      ObjectSetInteger(0,"MW_chart",OBJPROP_CHART_SCALE,2);
      ObjectSetInteger(0,"MW_chart",OBJPROP_YSIZE,500);
     }
   int h=iCCI(Symbol(),Period(),14,PRICE_TYPICAL);
   long id=ObjectGetInteger(0,"MW_chart",OBJPROP_CHART_ID);
   ChartIndicatorAdd(id,1,h);
   ChartSetInteger(id,CHART_HEIGHT_IN_PIXELS,1,493);
 
Interesting:

Pode ter falhado, mas será que faz alguma diferença?

É claro que sim. Não preciso de vos explicar :) Se uma matriz é definida com um nome, mas os elementos desta matriz são chamados com um nome de matriz diferente, então... :)

Se tudo funcionar sem inicialização manual da matriz, deve olhar para o código, como você mesmo entende. Afinal, a ausência de inicialização explícita de string-array não impede o terminal do cliente de inicializar este conjunto por si só.

Repito: tal corda funcionou e ainda funciona "o melhor que pode".

 
Yedelkin:

É claro que sim. Não preciso de vos explicar :) Se um array é declarado com um nome, mas os elementos deste array são acedidos com um nome de array diferente, então ... :)

Se tudo funcionar sem inicialização manual da matriz, deve olhar para o código, como você mesmo entende. Afinal, a ausência de inicialização explícita de string-array não impede o terminal do cliente de inicializar este conjunto por si só.

Repito: um fio deste tipo funcionou e continua a funcionar.

Não, não, o problema não está no nome, é que o conjunto é preenchido com uma enumeração durante a declaração.

Funciona bem com todos os tipos excepto com cordas. Com cadeias de caracteres, realmente falha qualquer programa (perito ou guião não importa).

Este é um erro óbvio escrito ao servicedesk.

É assim que funciona:

// string a[2]={"a","b"};
long   b[2]={2,3};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  Print("Работает");   
  }
//+------------------------------------------------------------------+

mas se descomentar a declaração do conjunto de cordas, ela não funciona.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Renat:
Verificar o número máximo de barras na janela nas definições
Alterado de 100000 para 1000000. Ajudado, mas só depois de reiniciar o terminal (a ajuda diz sobre o efeito das alterações depois de premir OK).
 

Renat, outro tafetá selvagem, tem a certeza de ter encontrado o erro?


 
O problema do tráfego está resolvido, mas a questão é que ainda não libertámos os componentes do servidor em liveupdate. Até agora, as actualizações do terminal do cliente foram lançadas e os servidores estarão na próxima actualização. Ainda não foram testados.
 
Renat:
O problema do tráfego está resolvido, mas a questão é que ainda não libertámos os componentes do servidor em liveupdate. Até agora, as actualizações do terminal do cliente foram lançadas e os servidores estarão na próxima actualização. Ainda não foram testados.
Estou a ver. Obrigado pela sua resposta. Pela minha parte, também vos manterei informados.
 

Última construção (430) quando os testes com Forward period e Custom Max - pendem (parece estar no momento de mudar para Forward testing). No início culpei o meu Expert Advisor, mas depois verifiquei o seguinte código:

input int a1;
input int a2;
input int a3;
int OnInit(){return(0);}
void OnDeinit(const int reason){}
void OnTick(){}
double OnTester() {
   return(rand());
}

Estabeleci parâmetros para optimizar de 1 a 1000, todas as carraças, USDCAD, M4 de 01.01.2011 até hoje (com Forward - qualquer período). Congelar. Agentes remotos deficientes - reiniciei o terminal - também fica pendurado. Removido o período de avanço - funciona. Se a culpa é do Custom Max - não o verificou. Antes desta construção - tudo funcionava.

 

O que significa isto?

2011.04.17 15:21:22 O agente testador falhou