Erros, bugs, perguntas - página 1290

 
Tapochun:
Obrigado, compreendo que a OnTrade() e a OnTradeTransaction() não podem ser utilizadas de qualquer forma?
Compreende correctamente. Não pode.
 

1. Porque é que quando mudo a língua num terminal, ela muda em todos os outros depois de os reiniciar?

Em detalhe: tenho 10 terminais MT4/765 em funcionamento, mudei a língua num deles de russo para inglês e reiniciei-o. Depois de reiniciar os outros terminais, a sua língua também muda!

2. Porque é que o perfil não é automaticamente recordado quando o altero - definições de indicadores, Expert Advisors, gráficos?

Para ser específico: Ontem configurei um perfil, negociei nele, e hoje ficou apagado e quando reiniciei os terminais, nenhuma alteração foi guardada e apenas as que tinha antes de as alterações serem descarregadas.
Seria uma boa ideia lembrar automaticamente o perfil após um certo tempo, por exemplo, de 10 em 10 minutos ou de 1 em 1 hora.

 
Novikov:

2. Porque é que o perfil não é automaticamente recordado quando lhe são feitas alterações - definições de indicadores, Expert Advisors, gráficos?

O perfil é guardado quando se fecha a aplicação normalmente.
Se precisar de o salvar, fechar o terminal e reabri-lo, então ficará feliz :)
 
fyords:
O perfil é guardado quando se fecha a aplicação normalmente.
Se precisar de o salvar, fechar o terminal e reabri-lo, então ficará feliz :)

"o que faria eu sem ti" :)

3. Para onde vão as citações?

Quando descarrego citações m1 para construir gráficos RENCO, após um encerramento incorrecto do terminal (corte de energia), as citações têm de ser recarregadas!

 
porque é que quando se acede ao perfil de outra pessoa a partir de um telemóvel andróide, não há botão para escrever uma mensagem? das mensagens, é necessário digitar o nome de utilizador do novo correspondente .... isto é muito inconveniente...
 
Novikov:

"o que faria eu sem ti" :)

3. Para onde vão as citações?

Descarrego citações m1 para construir gráficos RENCO, mas depois de o terminal terminar incorrectamente (falta de energia), as citações têm de ser recarregadas!

é-lhe dito que todas as alterações são guardadas com o encerramento correcto .... incluindo as citações descarregadas
 

Compreendo que um membro da estrutura não pode ser utilizado como um tampão indicador, por exemplo, como este:

struct Buffers
{
    double buffer [];
};

mas depois o que fazer se precisar de várias dúzias de amortecedores e não funcionar desta forma:

struct Buffers
{
    double buffer [];
};

Buffers IndBuff;

void Func()
{
  IndBuff[0].buffer[0]=3.1415926;
}
 
paladin800:
Sim, eu também tropecei nesta função. Não consigo descobrir como fazer uma variável em parâmetros externos como 4AM e a outra como 5PM e depois basta comparar o resultado de TimeGMT() com eles.

Há já algum tempo que não procurava.

4 da manhã é 04:00
17:00h às 17:00h

 
joo:

É meu entendimento que um membro da estrutura não pode ser utilizado como um tampão indicador, por exemplo

Pode
 
joo:

Compreendo que um membro da estrutura não pode ser utilizado como um tampão indicador, por exemplo, como este:

Mas o que fazer se precisar de várias dúzias de amortecedores e não funcionar desta forma:

Encontrei tal exemplo de autor não desconhecido. )

//+------------------------------------------------------------------+
//|                                                  EMA_Rainbow.mq5 |
//|                                       Copyright 2012, MetaDriver |
//|                                            MetaDriver@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaDriver"
#property link      "MetaDriver@rambler.ru"
#property version   "1.00"
//---
#define  CountLine  50
//---
#property indicator_chart_window
#property indicator_buffers CountLine
#property indicator_plots   CountLine

//--- Внешние параметры
input int   FastPeriod   =5;
input int   PeriodStep   =5;
input color FastColor    =clrAqua;
input color MiddleColor  =clrDodgerBlue;
input color SlowColor    =clrBlue;
input color LFastColor   =clrYellow;
input color LMiddleColor =clrOrange;
input color LSlowColor   =clrOrangeRed;
//--- 
struct SBuffer
  {
   double            B[];
  };
//--- indicator buffers
SBuffer       EmaBuffer[CountLine];
//---
color Colors[CountLine];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   InitColors();
//---
   for(int i=0; i<CountLine; i++)
      InitBuffers(i);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//---
   int limit=rates_total-prev_calculated;
//---
   if(limit==1)
      limit++;
//---
   if(prev_calculated==0)
     {
      limit-=begin+1;
      for(int i=0; i<CountLine; i++)
         EmaBuffer[i].B[limit]=price[limit];
     }
//---
   if(limit!=0)
     {
      for(int i=0; i<CountLine; i++)
        {
         double p=2./(FastPeriod+PeriodStep*(CountLine-i)+1);
         //---
         for(int j=limit-1; j>=0; j--)
            EmaBuffer[i].B[j]=price[j]*p+EmaBuffer[i].B[j+1]*(1.-p);
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Инициализация цветных буферов                                    |
//+------------------------------------------------------------------+
void InitColors()
  {
   int Half=CountLine/2;
//---
   for(int i=0; i<Half; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LSlowColor,LMiddleColor,i*1.0/Half);
      else
         Colors[i]=MixColor(SlowColor,MiddleColor,i*1.0/Half);
     }
//---
   for(int i=Half; i<CountLine; i++)
     {
      if(i%4==3)
         Colors[i]=MixColor(LMiddleColor,LFastColor,(i-Half)*1.0/Half);
      else
         Colors[i]=MixColor(MiddleColor,FastColor,(i-Half)*1.0/Half);
     }
  }
//+------------------------------------------------------------------+
//| Определение цвета                                                |
//+------------------------------------------------------------------+
color MixColor(color A,color B,double mix)
  {
   int r = (int)MathRound((B     & 0xFF) * mix + (A     & 0xFF) * (1. - mix));
   int g = (int)MathRound((B>>8  & 0xFF) * mix + (A>>8  & 0xFF) * (1. - mix));
   int b = (int)MathRound((B>>16 & 0xFF) * mix + (A>>16 & 0xFF) * (1. - mix));
   return color(r|g<<8|b<<16);
  }
//+------------------------------------------------------------------+
//| Инициализация индикаторных буферов                               |
//+------------------------------------------------------------------+
void InitBuffers(int index)
  {
   SetIndexBuffer(index,EmaBuffer[index].B,INDICATOR_DATA);
   PlotIndexSetInteger(index,PLOT_DRAW_TYPE,DRAW_LINE);
   PlotIndexSetInteger(index,PLOT_LINE_COLOR,Colors[index]);
   PlotIndexSetDouble(index,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
   if(index%8==7) PlotIndexSetInteger(index,PLOT_LINE_WIDTH,1);
  }
//+------------------------------------------------------------------+