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[])
{
//---
for(int i=0;i<rates_total;i++)
{
Label1Buffer[i] = (iHigh(_Symbol,PERIOD_D1,0)+ iLow(_Symbol,PERIOD_D1,0))/2;
}
Eu fico longe das funções "i" sempre que posso. Se você ler atentamente a documentação, els podem falhar, portanto checagens adicionais são necessárias.
Eu trabalharia com os vetores que já estão à disposição. O código vai ficar maior, só que será muito mais veloz.
Bem-vindo ao mundo mala do MQL5.
;)
Eu fico longe das funções "i" sempre que posso. Se você ler atentamente a documentação, els podem falhar, portanto checagens adicionais são necessárias.
Eu trabalharia com os vetores que já estão à disposição. O código vai ficar maior, só que será muito mais veloz.
Bem-vindo ao mundo mala do MQL5.
;)
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá pessoal, estou tentando criar um indicador MeioDoDia, que é a (MaxDoDia+MinDoDia)/2. Porém gostaria que ficasse igual a do Profit ( vou mostrar nas fotos ). No MT5 ele traça uma unica linha somente do dia atual, já no profit ele traça de acordo com o dia. Os valores estão batendo. Segue o código que criei e as imagens do MT5 e do Profit.
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//--- plot Label1
#property indicator_label1 "MeioDoDia"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
//--- indicator buffers
double Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,Label1Buffer,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[])
{
//---
for(int i=0;i<rates_total;i++)
{
Label1Buffer[i] = (iHigh(_Symbol,PERIOD_D1,0)+ iLow(_Symbol,PERIOD_D1,0))/2;
}
//--- return value of prev_calculated for next call
return(rates_total);
}