Erros, bugs, perguntas - página 3137

 
Olá!
Ao testar a EA no histórico para todos os instrumentos seleccionados, o testador apenas dá resultados para pares de moedas, mas para criptografia dá "oninit retorna código não-zero 1". O que posso fazer em relação a isso? Quem já experimentou isto?
 
lapundra1 #:
Olá!
Ao testar a EA no histórico para todos os instrumentos seleccionados, o testador apenas dá resultados para pares de moedas, mas para criptografia dá "oninit retorna código não-zero 1". O que posso fazer em relação a isso? Quem o tinha?

Comente a linha 123 e o erro desaparecerá. Estou a dizer-vos como telepata :) - porque não há código, portanto só telepatia, nenhuma outra forma :)

 

Saudações.

Ao executar o MT5 no terminal, ocorre um erro:

2022.01.03 15:33:30.108 Alojamento virtual não conseguiu obter a lista de anfitriões virtuais [1001] (tls - create certificate chain engine failed)

2022.01.03 15:34:30.945 Sinal '56334871': não conseguiu obter a lista de sinais


E a seguir, ao tentar ligar-se a um repositório no MetaEditor:

2022.01.03 15:34:39.668 Armazenamento pedido de lista de projectos falhou com erro 1001

2022.01.03 15:34:46.561 Armazenamento activação de MQL5 Armazenamento falhou [1001]


Ao mesmo tempo, a ligação a outro computador funcionou bem, e todas as alterações foram enviadas para o Armazém.

Não foram detectados problemas de rede no computador, tudo funcionou bem. Também nos últimos meses não foram realizadas actividades "arriscadas" no computador, e tudo está a funcionar bem. A construção é 3140.

Qual a direcção a tomar?


 

Nem sequer vou entrar nos "Segredos de Madrid" e Deus me proíba de me perguntar porque é que os cabos indicadores começam a indexar a partir de 10 e não a partir de 0 ou 1.

Porque devo perguntar, se existem dois tipos de pegas independentes do mesmo indicador e apago a segunda, não só a segunda MA, mas também a primeira desaparece? Ou seja, a remoção de uma das pegas mata também a outra. Aqui está o códigoiMA altamente simplificado e duplicado da Ajuda:

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2

#property indicator_label1  "iMA1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

#property indicator_label2  "iMA2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

double iMABuffer1[], iMABuffer2[];
int    handle1, handle2;
int    bars_calculated=0;

int OnInit()
  {
   SetIndexBuffer(0,iMABuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,iMABuffer2,INDICATOR_DATA);

   PlotIndexSetInteger(0,PLOT_SHIFT,0);
   PlotIndexSetInteger(1,PLOT_SHIFT,0);

   handle1=iMA(_Symbol,PERIOD_CURRENT,10,0,MODE_SMA,PRICE_CLOSE);
   handle2=iMA(_Symbol,PERIOD_CURRENT,20,0,MODE_SMA,PRICE_CLOSE);

   return(INIT_SUCCEEDED);
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int values_to_copy;

   int calculated=BarsCalculated(handle1);
   if(calculated<=0) return(0);

   if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
      if(calculated>rates_total) values_to_copy=rates_total;
      else                       values_to_copy=calculated;
   else
      values_to_copy=(rates_total-prev_calculated)+1;

   if(!FillArrayFromBuffer(iMABuffer1,0,handle1,values_to_copy)) return(0);
   if(!FillArrayFromBuffer(iMABuffer2,0,handle2,values_to_copy)) return(0);

   //if(handle2!=INVALID_HANDLE)
   //   Print(IndicatorRelease(handle2));

   bars_calculated=calculated;

   return(rates_total);
  }

bool FillArrayFromBuffer(double &values[],
                         int shift,
                         int ind_handle,
                         int amount
                         )
  {
   if(CopyBuffer(ind_handle,0,-shift,amount,values)<0)
      return(false);

   return(true);
  }

void OnDeinit(const int reason)
  {
   if(handle1!=INVALID_HANDLE)
      IndicatorRelease(handle1);
   if(handle2!=INVALID_HANDLE)
      IndicatorRelease(handle2);
  }

Se descomentar as duas linhas, o resultado é que nada é apresentado. Espera-se: o primeiro MA (vermelho) permanece.

...E tudo o que eu queria fazer era limpar a memória.

 
x572intraday #:

Nem sequer vou entrar nos "Segredos de Madrid" e Deus me proíba de me perguntar porque é que os cabos indicadores começam a indexar a partir de 10 e não a partir de 0 ou 1.

Porque devo perguntar, se existem dois tipos de pegas independentes do mesmo indicador e apago a segunda, não só a segunda MA, mas também a primeira desaparece? Ou seja, a remoção de uma das pegas mata também a outra. Aqui está o códigoiMA altamente simplificado e duplicado da Ajuda:

Se descomentar as duas linhas, o resultado é que nada é apresentado. Espera-se: o primeiro MA (vermelho) permanece.

...E tudo o que eu queria fazer era limpar a memória.

Pelo menos:

if(handle2!=INVALID_HANDLE && !FillArrayFromBuffer(iMABuffer2,0,handle2,values_to_copy)) return(0);
 
JRandomTrader #:

No mínimo:

Já verificou? Não funcionou para mim. E basta apagar uma (com libertação de memória) e deixar a outra visualmente. E da sua lógica segue-se: se o segundo cabo existe e o segundo tampão não foi preenchido, então saia, e nem sequer chega à minha linha com IndicatorRelease(handle2) (se tiver inserido o código no sítio certo).

 
   int dim=5;
   int Arr1[5];// OK
   int Arr2[dim];// '[' - invalid index value

Ou estou totalmente fodido ou, se não for um insecto, dar uma pancada na Help.

 
x572intraday #:

Ou estou completamente lixado, ou, se não for um insecto, espetam-me na Ajuda.

O tamanho de uma matriz estática é uma constante, não uma int.

 
Valeriy Yastremskiy #:

A dimensionalidade de uma matriz estática é uma constante, não uma int.

É possível definir um vector desta forma, mas eles são apenas duplos.

int n = 5;
vector v(n);
v[0] = 1.2;
 
Aleksey Nikolayev #:

É possível definir um vector dessa forma, mas eles só se desdobram.

Está bem. É melhor então redimensioná-lo.