Коллеги предварительно спс за помощь на 2253,2254 стр. Это МТ5.
Надо с текущего года цены открытия баров изобразить со смещением на 1 год - т.е. 1.01.2023 - чтобы было на 01.01.2022 года.
Син линия - это индикатор за 2022 год. Надо чтобы текущий год отображался (цены открытия) на этом же периоде 2022 года.
в копилот (вместо гугла) запрос делал - он вернул:
код индикатора с отрисовкой индикатора в отдельном окне отрисовка индикатора в виде линии. Выполняет расчет цен открытий дневных свечей на дневном таймфрейме по ценам открытия с 01.01.2023 года по 19.09.2023 года. Отображает со смещением в прошлое на 1 год на дневном таймфрейме с 01.01.2022 года по 19.09.2022 года.
короче - нужно смещение данных цен открытий на один год - чтобы отображалось с 2022 года.
Надо чтобы цены открытий баров текущего года - отображались где син линия - т.е на периоде с 01.01.2022 года. Чтобы было отображение со смещением на 1 год в прошлое.
вот участок кода индикатора который синюю рисует:
В общем-то совсем не понятно что должен отображать индикатор. Нужно, чтобы в окне индикатора рисовались свечи со смещением на один год? Чтобы была возможность воочию видеть что было на графике год назад?
Тип рисуемой линии можно сделать DRAW_COLOR_CANDLES и на текущем времени (по времени индекса цикла) рисовать данные бара, у которого год меньше текущего на один. Правда, дни недели же не совпадают, поэтому точной даты получить нет возможности, и в этом случае можно просто не рисовать свечу.
Добрый день! Подскажите, пожалуйста, где в МТ-5 можно увидеть результаты тестирования стратегий? Меня интересует, день, час, минута сделок. В МТ-4 это раздел "результаты". Есть что-то подобное в МТ-5?
Коллеги предварительно спс за помощь на 2253,2254 стр. Это МТ5.
Надо с текущего года цены открытия баров изобразить со смещением на 1 год - т.е. 1.01.2023 - чтобы было на 01.01.2022 года.
Син линия - это индикатор за 2022 год. Надо чтобы текущий год отображался (цены открытия) на этом же периоде 2022 года.
в копилот (вместо гугла) запрос делал - он вернул:
код индикатора с отрисовкой индикатора в отдельном окне отрисовка индикатора в виде линии. Выполняет расчет цен открытий дневных свечей на дневном таймфрейме по ценам открытия с 01.01.2023 года по 19.09.2023 года. Отображает со смещением в прошлое на 1 год на дневном таймфрейме с 01.01.2022 года по 19.09.2022 года.
короче - нужно смещение данных цен открытий на один год - чтобы отображалось с 2022 года.
Надо чтобы цены открытий баров текущего года - отображались где син линия - т.е на периоде с 01.01.2022 года. Чтобы было отображение со смещением на 1 год в прошлое.
вот участок кода индикатора который синюю рисует:
Вот принцип:
//+------------------------------------------------------------------+//| TestShiftYear.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property indicator_separate_window#property indicator_buffers5#property indicator_plots1//--- plot Candle#property indicator_label1"Candle"#property indicator_type1DRAW_COLOR_CANDLES#property indicator_color1clrDodgerBlue,clrOrangeRed,clrGray#property indicator_style1STYLE_SOLID#property indicator_width11//--- input parametersinputuint InpYearShift=1;
//--- indicator buffersdouble BufferOpen[];
double BufferHigh[];
double BufferLow[];
double BufferClose[];
double BufferColors[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,BufferOpen,INDICATOR_DATA);
SetIndexBuffer(1,BufferHigh,INDICATOR_DATA);
SetIndexBuffer(2,BufferLow,INDICATOR_DATA);
SetIndexBuffer(3,BufferClose,INDICATOR_DATA);
SetIndexBuffer(4,BufferColors,INDICATOR_COLOR_INDEX);
//---PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0);
//---PlotIndexSetString(0,PLOT_LABEL,"Open;High;Low;Close");
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---int limit=rates_total-prev_calculated;
if(limit>1)
{
limit=rates_total-1;
ArrayInitialize(BufferOpen,0);
ArrayInitialize(BufferHigh,0);
ArrayInitialize(BufferLow,0);
ArrayInitialize(BufferClose,0);
ArrayInitialize(BufferColors,2);
}
if(prev_calculated>0 && rates_total-prev_calculated>1)
return0;
int i=fmax(0,prev_calculated-1);
for(;i<rates_total && !IsStopped();i++)
{
MqlRates rates=GetDataBar(Symbol(),Period(),time[i],InpYearShift);
BufferOpen[i]=rates.open;
BufferHigh[i]=rates.high;
BufferLow[i]=rates.low;
BufferClose[i]=rates.close;
BufferColors[i]=(BufferOpen[i]<BufferClose[i] ? 0 : BufferOpen[i]>BufferClose[i] ? 1 : 2);
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Данные бара по указанному времени |//| со смещением на указанное количество лет |//+------------------------------------------------------------------+MqlRates GetDataBar(conststring symbol,constENUM_TIMEFRAMES timeframe,constdatetime time,constuint year_shift)
{
MqlRates rates[1];
ZeroMemory(rates);
datetime tm=GetTimeYearShift(time,year_shift);
if(tm==0)
return rates[0];
CopyRates(symbol,timeframe,tm,1,rates);
return rates[0];
}
//+------------------------------------------------------------------+//| Время со смещением на указанное количество лет |//+------------------------------------------------------------------+datetime GetTimeYearShift(constdatetime time,constuint year_shift)
{
MqlDateTime tm={0};
if(!TimeToStruct(time,tm))
return0;
tm.year-=(int)year_shift;
returnStructToTime(tm);
}
//+------------------------------------------------------------------+
Просто принцип. Без проверки на то, если день недели выпадает на выходной
В общем-то совсем не понятно что должен отображать индикатор. Нужно, чтобы в окне индикатора рисовались свечи со смещением на один год? Чтобы была возможность воочию видеть что было на графике год назад?
Тип рисуемой линии можно сделать DRAW_COLOR_CANDLES и на текущем времени (по времени индекса цикла) рисовать данные бара, у которого год меньше текущего на один. Правда, дни недели же не совпадают, поэтому точной даты получить нет возможности, и в этом случае можно просто не рисовать свечу.
спс смотрю. Нет.
Надо чтобы рядом с син линией с 01.01.2022 г по тек дату отображались цены открытий свечей линией которые идут с 01.01.2023 г по тек дату. Для простоты визуального восприятия что было год назад и сейчас...
Цены открытия за 2022 г по дням. Линией. И тут же рядом график кот цены с 2023 - по тек дату.
Надо чтобы рядом с син линией с 01.01.2022 г по тек дату отображались цены открытий свечей линией которые идут с 01.01.2023 г по тек дату. Для простоты визуального восприятия что было год назад и сейчас...
Цены открытия за 2022 г по дням. Линией. И тут же рядом график кот цены с 2023 - по тек дату.
типа как здесь - серым цветом - текущий год
Тогда нужно делать простой буфер-линию. Буферов должно быть столько, сколько линий нужно отобразить. В них записывать не данные из структуры цен, а просто Open с той даты, которую возвращает функция.
Ну как-то так:
//+------------------------------------------------------------------+//| TestOpenShiftYear.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property indicator_separate_window#property indicator_buffers4#property indicator_plots4//--- plot Current#property indicator_label1"Current"#property indicator_type1DRAW_LINE#property indicator_color1clrGray#property indicator_style1STYLE_SOLID#property indicator_width11//--- plot Year1#property indicator_label2"Year1"#property indicator_type2DRAW_LINE#property indicator_color2clrDodgerBlue#property indicator_style2STYLE_SOLID#property indicator_width21//--- plot Year2#property indicator_label3"Year2"#property indicator_type3DRAW_LINE#property indicator_color3clrOrangeRed#property indicator_style3STYLE_SOLID#property indicator_width31//--- plot Year3#property indicator_label4"Year3"#property indicator_type4DRAW_LINE#property indicator_color4clrLimeGreen#property indicator_style4STYLE_SOLID#property indicator_width41//--- input parameters//input uint InpYearShift1=1;//input uint InpYearShift2=2;//input uint InpYearShift3=3;//--- indicator buffersdouble BufferCurrent[];
double BufferYear1[];
double BufferYear2[];
double BufferYear3[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,BufferCurrent,INDICATOR_DATA);
SetIndexBuffer(1,BufferYear1,INDICATOR_DATA);
SetIndexBuffer(2,BufferYear2,INDICATOR_DATA);
SetIndexBuffer(3,BufferYear3,INDICATOR_DATA);
//---PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---PlotIndexSetString(0,PLOT_LABEL,"Текущий год");
PlotIndexSetString(1,PLOT_LABEL,"1 год назад");
PlotIndexSetString(2,PLOT_LABEL,"2 года назад");
PlotIndexSetString(3,PLOT_LABEL,"3 года назад");
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---int limit=rates_total-prev_calculated;
if(limit>1)
{
limit=rates_total-1;
ArrayInitialize(BufferCurrent,EMPTY_VALUE);
ArrayInitialize(BufferYear1,EMPTY_VALUE);
ArrayInitialize(BufferYear2,EMPTY_VALUE);
ArrayInitialize(BufferYear3,EMPTY_VALUE);
}
if(prev_calculated>0 && rates_total-prev_calculated>1)
return0;
int i=fmax(0,prev_calculated-1);
for(;i<rates_total && !IsStopped();i++)
{
BufferCurrent[i]=open[i];
BufferYear1[i]=GetDataOpen(Symbol(),Period(),time[i],1);
BufferYear2[i]=GetDataOpen(Symbol(),Period(),time[i],2);
BufferYear3[i]=GetDataOpen(Symbol(),Period(),time[i],3);
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Данные бара по указанному времени |//| со смещением на указанное количество лет |//+------------------------------------------------------------------+double GetDataOpen(conststring symbol,constENUM_TIMEFRAMES timeframe,constdatetime time,constuint year_shift)
{
double array[1]={EMPTY_VALUE};
datetime tm=GetTimeYearShift(time,year_shift);
if(tm==0)
return array[0];
return(CopyOpen(symbol,timeframe,tm,1,array)==1 ? array[0] : EMPTY_VALUE);
}
//+------------------------------------------------------------------+//| Время со смещением на указанное количество лет |//+------------------------------------------------------------------+datetime GetTimeYearShift(constdatetime time,constuint year_shift)
{
MqlDateTime tm={0};
if(!TimeToStruct(time,tm))
return0;
tm.year-=(int)year_shift;
returnStructToTime(tm);
}
//+------------------------------------------------------------------+
По сути, нужно ещё добавлять смещение линий по вертикали - для более кучного отображения. Но тогда данные в буфере тоже будут со смещением по цене, что не правильно.
По сути, нужно ещё добавлять смещение линий по вертикали - для более кучного отображения. Но тогда данные в буфере тоже будут со смещением по цене, что не правильно.
Добрый день, так что-то никто и не ответил. Подскажите, пожалуйста, где в МТ-5 можно увидетьрезультаты тестированиястратегий? Меня интересует, день, час, минута сделок. В МТ-4 это раздел "результаты". Есть что-то подобное в МТ-5?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Коллеги предварительно спс за помощь на 2253,2254 стр. Это МТ5.
Надо с текущего года цены открытия баров изобразить со смещением на 1 год - т.е. 1.01.2023 - чтобы было на 01.01.2022 года.
Син линия - это индикатор за 2022 год. Надо чтобы текущий год отображался (цены открытия) на этом же периоде 2022 года.
в копилот (вместо гугла) запрос делал - он вернул:
код индикатора с отрисовкой индикатора в отдельном окне отрисовка индикатора в виде линии. Выполняет расчет цен открытий дневных свечей на дневном таймфрейме по ценам открытия с 01.01.2023 года по 19.09.2023 года. Отображает со смещением в прошлое на 1 год на дневном таймфрейме с 01.01.2022 года по 19.09.2022 года.
короче - нужно смещение данных цен открытий на один год - чтобы отображалось с 2022 года.
Надо чтобы цены открытий баров текущего года - отображались где син линия - т.е на периоде с 01.01.2022 года. Чтобы было отображение со смещением на 1 год в прошлое.
вот участок кода индикатора который синюю рисует:
В общем-то совсем не понятно что должен отображать индикатор. Нужно, чтобы в окне индикатора рисовались свечи со смещением на один год? Чтобы была возможность воочию видеть что было на графике год назад?
Тип рисуемой линии можно сделать DRAW_COLOR_CANDLES и на текущем времени (по времени индекса цикла) рисовать данные бара, у которого год меньше текущего на один. Правда, дни недели же не совпадают, поэтому точной даты получить нет возможности, и в этом случае можно просто не рисовать свечу.
Коллеги предварительно спс за помощь на 2253,2254 стр. Это МТ5.
Надо с текущего года цены открытия баров изобразить со смещением на 1 год - т.е. 1.01.2023 - чтобы было на 01.01.2022 года.
Син линия - это индикатор за 2022 год. Надо чтобы текущий год отображался (цены открытия) на этом же периоде 2022 года.
в копилот (вместо гугла) запрос делал - он вернул:
код индикатора с отрисовкой индикатора в отдельном окне отрисовка индикатора в виде линии. Выполняет расчет цен открытий дневных свечей на дневном таймфрейме по ценам открытия с 01.01.2023 года по 19.09.2023 года. Отображает со смещением в прошлое на 1 год на дневном таймфрейме с 01.01.2022 года по 19.09.2022 года.
короче - нужно смещение данных цен открытий на один год - чтобы отображалось с 2022 года.
Надо чтобы цены открытий баров текущего года - отображались где син линия - т.е на периоде с 01.01.2022 года. Чтобы было отображение со смещением на 1 год в прошлое.
вот участок кода индикатора который синюю рисует:
Вот принцип:
Просто принцип. Без проверки на то, если день недели выпадает на выходной
В общем-то совсем не понятно что должен отображать индикатор. Нужно, чтобы в окне индикатора рисовались свечи со смещением на один год? Чтобы была возможность воочию видеть что было на графике год назад?
Тип рисуемой линии можно сделать DRAW_COLOR_CANDLES и на текущем времени (по времени индекса цикла) рисовать данные бара, у которого год меньше текущего на один. Правда, дни недели же не совпадают, поэтому точной даты получить нет возможности, и в этом случае можно просто не рисовать свечу.
спс смотрю. Нет.
Надо чтобы рядом с син линией с 01.01.2022 г по тек дату отображались цены открытий свечей линией которые идут с 01.01.2023 г по тек дату. Для простоты визуального восприятия что было год назад и сейчас...
Цены открытия за 2022 г по дням. Линией. И тут же рядом график кот цены с 2023 - по тек дату.
Artyom Trishkin #:
..
Просто принцип. Без проверки на то, если день недели выпадает на выходной
спс смотрю. Нет.
Надо чтобы рядом с син линией с 01.01.2022 г по тек дату отображались цены открытий свечей линией которые идут с 01.01.2023 г по тек дату. Для простоты визуального восприятия что было год назад и сейчас...
Цены открытия за 2022 г по дням. Линией. И тут же рядом график кот цены с 2023 - по тек дату.
типа как здесь - серым цветом - текущий год
Тогда нужно делать простой буфер-линию. Буферов должно быть столько, сколько линий нужно отобразить. В них записывать не данные из структуры цен, а просто Open с той даты, которую возвращает функция.
Ну как-то так:
По сути, нужно ещё добавлять смещение линий по вертикали - для более кучного отображения. Но тогда данные в буфере тоже будут со смещением по цене, что не правильно.
Ну а так вот:
Но данные рисует на графике любого периода:
сывать не данные из структуры цен, а
По сути, нужно ещё добавлять смещение линий по вертикали - для более кучного отображения. Но тогда данные в буфере тоже будут со смещением по цене, что не правильно.
Ну а так вот:
Но данные рисует на графике любого периода: