Я довольно новичок в mql5 и пытаюсь создать индикатор, что я хочу, это просто, но мне кажется, что-то упущено из этого.
Я хочу сравнить цену закрытия 2баров в минуту, если оно больше определенного значения, оно добавляет 1 к индикатору (Массив?)
Так скажем
Бар A-1 закрывается на 1,555
Бар A закрывается в 1.455
каждый 0.01, он добавляет 1 к индикатору бара, следовательно, должен быть бар со значением 10.
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 1
//--- plot Bars
#property indicator_label1 "Bars"
#property indicator_type1 DRAW_BARS
#property indicator_color1 clrGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 5
#property indicator_maximum 5
#property indicator_minimum 0.000
//--- input parameter
input int pip=100; // Number of pip
//--- An indicator buffer for the plot
double LineBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Binding an array and an indicator buffer
SetIndexBuffer(1,LineBuffer,INDICATOR_DATA);
//--- Initializing the generator of pseudo-random numbers
//---
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[])
{
//--- Block for calculating indicator values
for(int i=0;i<rates_total;i++)
{
if(i>= 1 && (close[i] - close[i-1] >= pip*_Point))
{
LineBuffer[i]=1;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
все же, когда я тестировал его, кажется, что close [i] вызывается каждый тик вместо каждого бара, и я не могу получить индикатор LineBuffer, чтобы показатьразница между close [i] и close [i-1] (поэтому я прикрепил его к 1, чтобы получить показатель, он имеет разницу больше, чем значение, называемое pip)