You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Are the MC servers acting up?
Current Audi.
Maybe PositionSelect was not done immediately before the call - that's why it returns old data.
I've written to the SD, but I think it's going to take a long time to get an answer.
Could someone please check such a theme in your tester?
It causes objects in the renderer to dance.
Maybe it's just me...
Good afternoon. Can you advise me, I wrote a simple indicator... and when a new bar comes, this is how the indicator line behaves. What may be the problem?
The indicator code:
//+------------------------------------------------------------------+
//| Liniya_Trenda.mq5 |
//| Второй индикатор |
//+------------------------------------------------------------------+
#property copyright "Линейный график цен баров, двух выбранных валютных пар"
#property version "1.00"
#property description "Пользователь может выбрать по какой цене строить линию графика"
#property indicator_separate_window // Отображение в новом окне
#property indicator_buffers 2 // Количество буферов (1 линия - 1 буфер)
#property indicator_plots 2 // Количество массивов (1 линия - 1 массив)
//--- Укажем тип линий
#property indicator_label1 "FirstAktiv" // Название линии индикатора
#property indicator_type1 DRAW_LINE // Тип линии - линия
#property indicator_style1 STYLE_SOLID // Стиль линии - сплошная
#property indicator_color1 clrMediumBlue // Цвет линии
#property indicator_width1 2 // Толщина линии
#property indicator_label2 "SecondAktiv" // Название линии индикатора
#property indicator_type2 DRAW_LINE // Тип линии - линия
#property indicator_style2 STYLE_SOLID // Стиль линии - сплошная
#property indicator_color2 clrRed // Цвет линии
#property indicator_width2 2 // Толщина линии
enum ChangePrice{Open, High, Low, Close}; // Предоставим пользователю выбор цены по которой будет строиться график
//--- Входные параметры
input string FirstAktiv ="EURUSD"; // Тикер первого актива, по которому будем строить график цен
input string SecondAktiv ="GBPUSD"; // Тикер второго актива, по которому будем строить график цен
input ChangePrice WantPrice = Close; // Цена построения по умолчанию
//--- Глобальные переменные
double LinePriceBuffer1[]; // Массив для хранения данных линейного графика
double LinePriceBuffer2[]; // Массив для хранения данных линейного графика
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
SetIndexBuffer(0,LinePriceBuffer1,INDICATOR_DATA); // Указывает, что массив будет являться буфером индикатора
IndicatorSetString(INDICATOR_SHORTNAME,FirstAktiv);
SetIndexBuffer(1,LinePriceBuffer2,INDICATOR_DATA); // Указывает, что массив будет являться буфером индикатора
IndicatorSetString(INDICATOR_SHORTNAME,SecondAktiv);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, // Передаем общее количество баров на текущем графике
const int prev_calculated, // Количество баров для которых уже рассчитаны значения индикатора
const int begin, // номер начала достоверного отсчёта баров
const double &price[])
{
// Расчёт стартового номера first для цикла пересчёта баров
int first;
// Проверка на первый старт расчёта индикатора
if(prev_calculated == 0)
{
first = begin; // стартовый номер для расчёта всех баров
}
else
{
first = prev_calculated - 1; // стартовый номер для расчёта новых баров
}
// Объявим массив который будет содержать цены, объемы и спред для каждого бара
MqlRates mrate1[];
MqlRates mrate2[];
// Копируем данные по барам в массив
CopyRates(FirstAktiv,PERIOD_CURRENT,0,rates_total,mrate1);
CopyRates(SecondAktiv,PERIOD_CURRENT,0,rates_total,mrate2);
for(int i = first; i < rates_total; i++)
{
if(WantPrice == Open)
{
LinePriceBuffer1[i] = mrate1[i].open;
LinePriceBuffer2[i] = mrate2[i].open;
}
if(WantPrice == High)
{
LinePriceBuffer1[i] = mrate1[i].high;
LinePriceBuffer2[i] = mrate2[i].high;
}
if(WantPrice == Low)
{
LinePriceBuffer1[i] = mrate1[i].low;
LinePriceBuffer2[i] = mrate2[i].low;
}
if(WantPrice == Close)
{
LinePriceBuffer1[i] = mrate1[i].close;
LinePriceBuffer2[i] = mrate2[i].close;
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
Good afternoon. Can you advise me, I wrote a simple indicator... and when a new bar comes, I see this behaviour of the indicator line. What could be the problem?
The indicator code:
// Объявим массив который будет содержать цены, объемы и спред для каждого бара
MqlRates mrate1[];
MqlRates mrate2[];
I've written to the SD, but I think it's going to take a long time to get an answer.
Could someone please check such a theme in your tester?
It causes objects in the renderer to dance.
Maybe it's just me...
ilunga:
Ну для начала стоит указать размеры массивов..
Thank you.
I pointed it out, but it didn't help.
I forgot to mention that the construction of the indicator becomes normal again(the indicator lines correspond to the price values at which they are drawn) if the screen area is shifted slightly to the left.
In other words, if you "remove" the first bars from the screen, the indicator is drawn well. As soon as the indicator is shifted all the way to the right, it turns out such a bug.
Already fixed. Wait for the build.
Are the MC servers acting up?
Current Audi.
Judging by USDLFX - this is the problem of Lyforex, not MQ
Observant ))))
Racing Expert.Connected on MK.On lite it was just fine.