Сделайте, пожалуйста, воспроизводимый пример. То есть, нужен готовых код, который можно скомпилять, бросить на чарт и получить результаты.
Без этого мало кто поймет о чем речь.
Думал сократить чтобы зря не отрывать людей от дела.
Вот полный вариант:
#property indicator_separate_window // Индик. рисуется в отдельном окне#property indicator_buffers 1#property indicator_plots 1#property indicator_type1 DRAW_LINE#property indicator_color1 Aquainputstring InstrumentName = "EURJPY";
//-- Индикаторный массивdouble ScreenBuffer[];
//-- Динамический буфер --double ArrayBuffer[];
intOnInit() // Специальная функция init()
{
//--------------------------------------------------------------------IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,ScreenBuffer,INDICATOR_DATA);
return0; // Выход
}
//--------------------------------------------------------------------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 Counted_bars; // Количество баров для работы int copied;
//--------------------------------------------------------------------//1 вход rates_total = 9667 / prev_calculated = 0 / Bars = 9667//-- потом rates_total = 9667 / prev_calculated = 9667 / Bars = 9667//-- в процессе работы потом rates_total = 9668 / prev_calculated = 9667 / Bars = 9668//Print("rates_total: " + (string)rates_total);if (rates_total == prev_calculated) return (rates_total);//-- Это все тот же бар, поэтому выходим --//-- Получить кол-во необработанных баров (при первом входе это все, потом 1)//-- Кол-во выводимых баров относятся к самому графику но выводить то мы будем другой инструмент//-- там кол-во баров может быть другое и по этому сначала скидываем все данные в буфер --
Counted_bars = rates_total-prev_calculated;
// Print("Counted_bars: " + Counted_bars);Print("rates_total: " + rates_total + " / prev_calculated: " + prev_calculated + " / Bars: " + Bars(Symbol(),0));
//-- Выделяем память по кол-ву баров основного инструмента --if (ArrayResize(ArrayBuffer, Counted_bars,0) == -1) return (rates_total);//-- Ошибка выделения памяти --//--- инициализируем элементы массива значением EMPTY_VALUE ---ArrayInitialize(ArrayBuffer,EMPTY_VALUE);
//-- Получить сколько реально баров есть у этого инструмента --
copied = (int)SeriesInfoInteger(InstrumentName,0,SERIES_BARS_COUNT);
if (copied > 0){
copied=CopyClose(InstrumentName,0,0,copied,ArrayBuffer);//-- Записать данные в буффер памяти --if (copied <= 0) return (rates_total);//-- ошибка
}
else{
return (rates_total);//-- ошибка
}
if (Counted_bars > copied) Counted_bars = copied;//-- Берем меньшее значение --
Counted_bars--;//-- Так как отсчет от 0 --//-- Данные загружены в буфер памяти, теперь записать их в буфер экранный справа налево --for (int i = Counted_bars; i > 0; i--){
ScreenBuffer[i] = ArrayBuffer[i];
}
//--------------------------------------------------------------------return(rates_total);
}
voidOnDeinit(constint reason)
{
ObjectsDeleteAll(0,0,-1); // удаляются все объекты с графика.
}
Но поскольку в логику индюка и реализацию его я не вдавался о правильности результатов судить не мне.
PS
Я бы всеж избавился от символа в параметре и сделал его по текущему символу и TФ, после чего юзал в эксперте или другом индюке при помощи обычного iCustom().
Кроме того я тут не очень пойму логику работы с буферами (я про хвост калькулятора и прочее). На мой взгляд том есть над чем поработать...
Но поскольку в логику индюка и реализацию его я не вдавался о правильности результатов судить не мне.
PS
Я бы всеж избавился от символа в параметре и сделал его по текущему символу и TФ, после чего юзал в эксперте или другом индюке при помощи обычного iCustom().
Кроме того я тут не очень пойму логику работы с буферами (я про хвост калькулятора и прочее). На мой взгляд том есть над чем поработать...
Я бы всеж обратил внимание на алгоритм работы с буферами. если я все правильно понял там одного буфера вполне хватит (просто его правильно нужно рассчитать и отрисовывать на графике).
PS
А при текущем варианте у меня складывается впечатление о том, что индюк отображает "левые" данные (самое начало истории) вместо "правых" (текущих)...
Ну или я тоды вообще не чего не пойму в логике этого индюка...
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
6.Похоже, не хватает:
TradePerformer( 4, Symb4, Trade4, StLoss4, TkProfit4, Lots4, Slippage4, UpSignal, DnSignal, UpStop, DnStop);
в Exp_TEMA.mq5 ?
6.Похоже, пропущено
в Exp_TEMA.mq5 ?
Сделайте, пожалуйста, воспроизводимый пример. То есть, нужен готовых код, который можно скомпилять, бросить на чарт и получить результаты.
Без этого мало кто поймет о чем речь.Думал сократить чтобы зря не отрывать людей от дела.
Вот полный вариант:
Что я делаю не так, почему не получается вывести нормально график другого инструмента ?
на MQL4 все работало, тут только если на тот же инструмент выводишь то тогда без ошибок.
Что я делаю не так, почему не получается вывести нормально график другого инструмента ?
на MQL4 все работало, тут только если на тот же инструмент выводишь то тогда без ошибок.
Не уверен в правильности реализации и алгоритма в целом, но исходя из кода и того что я с ним смог сделать предположу что:
Строка
должна выглядеть так
Возможно везде период в виде "0" будет правильней сменить на PERIOD_CURRENT.
По крайней мере у меня все заработало после таких изменений....
PS
Возможно, это к делу не относиться, но так компилятор МАТЕРИТЬСЯ гораздо меньше
Не уверен в правильности реализации и алгоритма в целом, но исходя из кода и того что я с ним смог сделать предположу что:
Строка
должна выглядеть так
PS
Возможно везде период в виде "0" будет правильней сменить на PERIOD_CURRENT.
По крайней мере у меня все заработало после таких изменений....
У меня на экране вот так выглядит:

Явно что не правильно.У меня вот так вышло
Но поскольку в логику индюка и реализацию его я не вдавался о правильности результатов судить не мне.
PS
Я бы всеж избавился от символа в параметре и сделал его по текущему символу и TФ, после чего юзал в эксперте или другом индюке при помощи обычного iCustom().
Кроме того я тут не очень пойму логику работы с буферами (я про хвост калькулятора и прочее). На мой взгляд том есть над чем поработать...
У меня вот так вышло
Но поскольку в логику индюка и реализацию его я не вдавался о правильности результатов судить не мне.
PS
Я бы всеж избавился от символа в параметре и сделал его по текущему символу и TФ, после чего юзал в эксперте или другом индюке при помощи обычного iCustom().
Interesting:
Кроме того я тут не очень пойму логику работы с буферами (я про хвост калькулятора и прочее). На мой взгляд том есть над чем поработать...
Я бы всеж обратил внимание на алгоритм работы с буферами. если я все правильно понял там одного буфера вполне хватит (просто его правильно нужно рассчитать и отрисовывать на графике).
PS
А при текущем варианте у меня складывается впечатление о том, что индюк отображает "левые" данные (самое начало истории) вместо "правых" (текущих)...
Ну или я тоды вообще не чего не пойму в логике этого индюка...