Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1229

 
Elena Baranova:

Cari professionisti, potreste per favore consigliarmi se è possibile ottenere i valori di RSI per un timeframe settimanale nel codice dell'advisor, ma per calcolare i valori per la settimana, che non inizia il lunedì, ma per esempio da mercoledì (cioè la settimana da mercoledì a mercoledì prossimo). Per quanto ne so non può essere fatto con iRSI?

Finora posso solo vedere un modo per scrivere il codice per il calcolo da solo. C'è una soluzione più semplice o una soluzione già pronta?

Se create un indicatore handle sul timeframe W1, significa che l'indicatore sarà calcolato sulle barre W1: una barra, una settimana.

È necessario creare un indicatore handle sul timeframe D1 (timeframe giornaliero).


In generale, il significato della frase "(cioè una settimana da mercoledì a mercoledì prossimo)" non è chiaro. Non fa differenza quale giorno della settimana inizia - l'indicatore è calcolato su barre.

 
Vladimir Karputov:

Se create un indicatore handle sul timeframe W1, significa che l'indicatore sarà calcolato sulle barre W1: una barra, poi una settimana.

È necessario creare un indicatore handle sul timeframe D1 (timeframe giornaliero).


In generale, il significato della frase "(cioè una settimana da mercoledì a mercoledì prossimo)" non è chiaro. Non importa quale giorno inizia la settimana - l'indicatore è calcolato utilizzando le barre.

Ho capito tutto delle barre. Ma tutte le barre settimanali iniziano il lunedì. Quindi, per ottenere, per esempio, una settimana da mercoledì a mercoledì, penso che dovrei scrivere il mio codice basato su barre giornaliere.

Anche io non capisco bene il significato di questo calcolo, ma il cliente ha chiesto.

 
Elena Baranova:

Capisco tutto delle barre. Ma tutte le barre settimanali iniziano il lunedì. Quindi, per ottenere la settimana da mercoledì a mercoledì, per esempio, credo di dover scrivere il mio codice basato sulle barre giornaliere.

Nemmeno io capisco bene il significato di questo calcolo, ma il mio cliente mi ha chiesto di farlo.

L'Expert Advisor apre i trade in base ai valori RSI. Non capisco il senso di questo calcolo, ma il cliente lo ha richiesto e l'EA apre gli ordini il lunedì solo con l'apertura di una nuova barra settimanale.

 
Elena Baranova:

Capisco tutto delle barre. Ma tutte le barre settimanali iniziano il lunedì. Quindi, per ottenere la settimana da mercoledì a mercoledì, per esempio, credo di dover scrivere il mio codice basato sulle barre giornaliere.

Anche io non capisco bene il significato di tale calcolo, ma il cliente mi ha chiesto di farlo.

Non riesco a capire il significato fisico. Perciò me ne vado.

 

Aiuta a risolvere il problema della visualizzazione dei grafici in MT5. Il grafico continua ad aggiornarsi e a trascinarsi a sinistra. E questo su tutti gli strumenti.

Più avanti continua a spostarsi verso la storia massima. In generale non riesce a visualizzare correttamente le informazioni dell'ultima settimana. Le candele dell'ultimo giorno scompaiono costantemente, lampeggiano e si spostano a sinistra. Come risolvere il problema?

 
Александр:

Aiuta a risolvere il problema con la visualizzazione del grafico in MT5. Il grafico continua ad aggiornarsi e a trascinarsi a sinistra. E questo su tutti gli strumenti.

Continua a spostarsi verso la storia massima. In generale, non può visualizzare normalmente le informazioni dell'ultima settimana. Le candele dell'ultimo giorno scompaiono costantemente, lampeggiano e si spostano a sinistra. Come risolvere il problema?

È solo una macchina del tempo :)

Forse hai degli script/consiglieri/indicatori in esecuzione - possono spostare il grafico.

 
Александр:

Aiuta a risolvere il problema con la visualizzazione del grafico in MT5. Il grafico continua ad aggiornarsi e a trascinarsi a sinistra. E questo su tutti gli strumenti.

Continua a spostarsi verso la storia massima. In generale, non può visualizzare normalmente le informazioni dell'ultima settimana. Le candele dell'ultimo giorno scompaiono costantemente, lampeggiano e si spostano a sinistra. Come risolvere il problema?

Rimuovere gli indicatori e gli EA in esecuzione. Rimuovere il gatto dalla tastiera. Pulire il caffè versato sulla tastiera.

 
Vladimir Karputov:

Rimuovere gli indicatori di marcia e i consiglieri. Rimuovere il gatto dalla tastiera. Pulire il caffè versato sulla tastiera.

Grazie per il consiglio. Problema risolto, bastava scegliere un server con un ping alto.

 

Per favore, spiega perché l'area blu non è ombreggiata? E come risolvere il problema?
È possibile produrre due istogrammi in un solo indicatore?

#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:

Per favore, spiegate perché l'area blu non è ombreggiata? E come risolvere il problema?
È possibile produrre due istogrammi in un solo indicatore?

Se lo spessore di entrambi gli istogrammi è impostato su '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);
  }
//+------------------------------------------------------------------+



File:
2.mq5  3 kb
Motivazione: