Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1229

 
Elena Baranova:

Caros Profissionais, poderiam aconselhar se é possível obter os valores de LER durante uma semana no código de consultor, mas calcular os valores para a semana, que não começa na segunda-feira, mas por exemplo a partir de quarta-feira (ou seja, a semana de quarta-feira para a próxima quarta-feira). Tanto quanto sei, não pode ser feito com o iRSI?

Até agora só consigo ver uma forma de escrever o código eu próprio a calcular. Existe uma solução mais simples ou uma solução já feita?

Se criar um manípulo indicador no período de tempo W1, significa que o indicador será calculado em barras W1: uma barra, uma semana.

É necessário criar um manípulo indicador no período de tempo D1 (período de tempo diário).


Em geral, o significado da frase "(ou seja, uma semana de quarta-feira até à próxima quarta-feira)" não é claro. Não faz diferença qual o dia da semana que começa - o indicador é calculado em barras.

 
Vladimir Karputov:

Se criar um manípulo indicador no período de tempo W1, significa que o indicador será calculado em barras W1: uma barra, depois uma semana.

É necessário criar um manípulo indicador no período de tempo D1 (período de tempo diário).


Em geral, o significado da frase "(ou seja, uma semana de quarta-feira até à próxima quarta-feira)" não é claro. Não importa que dia começa a semana - o indicador é calculado usando barras.

Compreendo tudo sobre os bares. Mas todos os bares semanais começam na segunda-feira. Por conseguinte, para obter, por exemplo, uma semana de quarta-feira a quarta-feira, penso que deveria escrever o meu próprio código com base nas barras diárias.

Também não compreendo totalmente o significado deste cálculo, mas o cliente perguntou.

 
Elena Baranova:

Compreendo tudo sobre os bares. Mas todos os bares semanais começam na segunda-feira. Assim, para obter a semana de quarta a quarta-feira, por exemplo, acho que tenho de escrever o meu próprio código com base nas barras diárias.

Também não compreendo bem o significado deste cálculo, mas o meu cliente pediu-me que o fizesse.

O Expert Advisor abre negócios com base em valores de RSI. Não compreendo o objectivo deste cálculo, mas o cliente solicitou-o e a EA só abre as encomendas às segundas-feiras com a abertura de um novo bar semanal.

 
Elena Baranova:

Compreendo tudo sobre os bares. Mas todos os bares semanais começam na segunda-feira. Assim, para obter a semana de quarta a quarta-feira, por exemplo, acho que tenho de escrever o meu próprio código com base nas barras diárias.

Também não compreendo totalmente o significado de tal cálculo, mas o cliente pediu-me que o fizesse.

Não consigo compreender o significado físico. Por conseguinte, vou-me embora.

 

Ajuda a resolver o problema com a apresentação de gráficos no MT5. O gráfico continua a ser actualizado e arrastado para a esquerda. E isto está em todos os instrumentos.

Mais à frente, continua a mudar para o máximo histórico. Em geral, não consegue exibir correctamente a informação da última semana. as velas do último dia desaparecem constantemente, pisca e move-se para a esquerda. Como repará-lo?

 
Александр:

Ajuda a resolver o problema com a apresentação do gráfico em MT5. O gráfico continua a ser actualizado e arrastado para a esquerda. E isto está em todos os instrumentos.

Continua a mudar para o máximo histórico. Em geral, não pode exibir informação da última semana normalmente. Os castiçais do último dia desaparecem constantemente, piscam e deslocam-se para a esquerda. Como repará-lo?

É apenas uma máquina do tempo :)

Talvez tenha alguns scripts/advisores/indicadores em funcionamento - eles podem mudar o gráfico.

 
Александр:

Ajuda a resolver o problema com a apresentação do gráfico em MT5. O gráfico continua a ser actualizado e arrastado para a esquerda. E isto está em todos os instrumentos.

Continua a mudar para o máximo histórico. Em geral, não pode exibir informação da última semana normalmente. Os castiçais do último dia desaparecem constantemente, piscam e deslocam-se para a esquerda. Como repará-lo?

Remover indicadores de funcionamento e EAs. Retirar o gato do teclado. Limpar qualquer café derramado do teclado.

 
Vladimir Karputov:

Remover os indicadores de funcionamento e os conselheiros. Retirar o gato do teclado. Limpar qualquer café derramado do teclado.

Obrigado pelo conselho. Problema resolvido, só tinha de escolher um servidor com um ping elevado.

 

Por favor explique porque é que a zona azul não está sombreada? E como repará-lo?
É sequer possível produzir dois histogramas num único indicador?

#property indicator_chart_window                   
#property indicator_buffers   8                    
#property indicator_plots     8                    

#property indicator_color1    clrRed                
#property indicator_style1    STYLE_SOLID          
#property indicator_color2    clrRed               
#property indicator_style2    STYLE_SOLID          
#property indicator_color3    clrRed               
#property indicator_style3    STYLE_DOT            

#property indicator_color5    clrDodgerBlue        
#property indicator_style5    STYLE_SOLID          
#property indicator_color6    clrDodgerBlue        
#property indicator_style6    STYLE_SOLID          
#property indicator_color7    clrDodgerBlue        
#property indicator_style7    STYLE_DOT            

double
   Line_High_Up[], Line_High_Dn[], Hist_High_Up[], Hist_High_Dn[],
   Line_Low_Up[],  Line_Low_Dn[],  Hist_Low_Up[],  Hist_Low_Dn[];
   

void OnInit() 
   { 
   SetIndexBuffer     (0, Line_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(0, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (1, Line_High_Dn,      INDICATOR_DATA); 
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (2, Hist_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(2, PLOT_DRAW_TYPE,    DRAW_HISTOGRAM2);
   SetIndexBuffer     (3, Hist_High_Dn,      INDICATOR_DATA);

   SetIndexBuffer     (4, Line_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(4, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (5, Line_Low_Dn,       INDICATOR_DATA);
   PlotIndexSetInteger(5, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (6, Hist_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(6, PLOT_DRAW_TYPE,    DRAW_HISTOGRAM2);
   SetIndexBuffer     (7, Hist_Low_Dn,       INDICATOR_DATA);
   }


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 i;
   for(i=prev_calculated; i<=rates_total-1; i++)      
      {
      Line_High_Dn[i] = Hist_High_Dn[i] = high[i];
      Line_High_Up[i] = Hist_High_Up[i] = Line_High_Dn[i] + 20*_Point;

      Line_Low_Up[i]  = Hist_Low_Up[i]  = low[i];
      Line_Low_Dn[i]  = Hist_Low_Dn[i]  = Line_Low_Up[i] - 20*_Point;
      }
   return(i-1);
   }           
 
User_mt5:

Por favor explique porque é que a zona azul não está sombreada? E como repará-lo?
É mesmo possível emitir dois histogramas num só indicador?

Se a espessura de ambos os histogramas estiver definida para '3'.

//+------------------------------------------------------------------+
//|                                                            2.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   2
//--- plot Hist_High
#property indicator_label1  "Hist_High"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Hist_Low
#property indicator_label2  "Hist_Low"
#property indicator_type2   DRAW_HISTOGRAM2
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double         Hist_HighBuffer1[];
double         Hist_HighBuffer2[];
double         Hist_LowBuffer1[];
double         Hist_LowBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Hist_HighBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Hist_HighBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Hist_LowBuffer1,INDICATOR_DATA);
   SetIndexBuffer(3,Hist_LowBuffer2,INDICATOR_DATA);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 limit=prev_calculated-1;
   if(prev_calculated==0)
      limit=0;
   for(int i=limit; i<rates_total; i++)
     {
      Hist_HighBuffer1[i]=high[i]+20.0*Point();
      Hist_HighBuffer2[i]=high[i];
      Hist_LowBuffer1[i]=low[i];
      Hist_LowBuffer2[i]=low[i]-20.0*Point();
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



Arquivos anexados:
2.mq5  3 kb