Как использовать индикатор который не влазит в iCustom - страница 5

 
fxsaber:
В MT5 сабж решается очень легко, а для MT4 в КБ, вроде, было решение (через DLL), позволяющее считывать значения буферов запущенных на чарте индикаторов.

О, было бы прекрасно, лишь бы найти... пока не получилось

 
fxsaber:
В MT5 сабж решается очень легко, а для MT4 в КБ, вроде, было решение (через DLL), позволяющее считывать значения буферов запущенных на чарте индикаторов.

там нужно иметь исходник индикатора

https://www.mql5.com/ru/articles/19

Передача данных между индикаторами - простое решение наболевшей проблемы
Передача данных между индикаторами - простое решение наболевшей проблемы
  • 2010.01.15
  • Alexey Subbotin
  • www.mql5.com
Введение Ценность новичков – не только в том, что они задают вопросы, упорно не желая пользоваться поиском и тем самым побуждая остальных к созданию бросающихся в глаза разделов с названиями вроде «FAQ», «Новичкам сюда» или «Тот, кто задаст вопрос из этого списка, будет гореть в аду». Их истинное предназначение – задавать вопросы, начинающиеся...
 
Taras Slobodyanik:

там нужно иметь исходник индикатора

https://www.mql5.com/ru/articles/19


Видела, читала. Только не поняла: нужно же "регистрацию" буффера проводить с подопечного, а в моем случае куда вставить?

(не увидела замечание за исходник. сор, что-то уже не соображаю)
 
Galina Bobro:

Если не так, то аж интересно зачем скрин, чего такого по нем можно сказать 

да толком ничего особенного не скажу по нём...

Выводятся для рисования два буфера со стрелками, привязанными один к High, другой к Low. Получить их можно без проблем.

Но нет возможности изменять настройки по умолчанию. Как до них до всех добраться - не соображу. Однако глядя на набор input-параметров, утверждаюсь в высказанном ранее мнении о своеобразной защите.


 ----

Вот собственно моя неудачная прокладка, если кто-то увидит в инете этот индикатор с открытым кодом - сообщите за вознаграждение, заказчик бы его тоже хотел заполучить. 

где-то там закралась ошибка.

 
Последние параметры  UseSignalsToFile,  FileName. Индикатор может писать сигналы в файл. Периодически проверять файл, если размер больше нуля - читать и обнулять.
 

Хорошая идея с прокладкой толкнула меня на испытания и вот что получилось с удалением первых параметров вллигатора.

//+------------------------------------------------------------------+
//|                                              Test_InputParam.mq4 |
//|                                                         Viktorov |
//|                     https://www.mql5.com/ru/users/alexeyvik/news |
//+------------------------------------------------------------------+
#property copyright "Viktorov"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1  clrDeepPink
#property indicator_color2  clrMediumSpringGreen
#property indicator_color3  clrNavy

#resource  "\\Indicators\\Alligator.ex4"

//input int InpJawsPeriod=13; // Jaws Period
//input int InpJawsShift=8;   // Jaws Shift
//input int InpTeethPeriod=8; // Teeth Period
//input int InpTeethShift=5;  // Teeth Shift
input int InpLipsPeriod=5;  // Lips Period
input int InpLipsShift=3;   // Lips Shift

double ExtBlueBuffer[];
double ExtRedBuffer[];
double ExtLimeBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorDigits(Digits);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0, ExtBlueBuffer);
   SetIndexBuffer(1, ExtRedBuffer);
   SetIndexBuffer(2, ExtLimeBuffer);
//---- drawing settings
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexStyle(2, DRAW_LINE);
//---- index labels
   SetIndexLabel(0, "Gator Jaws");
   SetIndexLabel(1, "Gator Teeth");
   SetIndexLabel(2, "Gator Lips");
//---
   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[])
  {
//---
  int i, limit = prev_calculated == 0 ? 0 : rates_total-1;
   for(i = limit; i >= 0; i++)
    {
     ExtBlueBuffer[i] = iCustom(_Symbol, _Period, "::Indicators\\Alligator.ex4", 13, 8, 8, 5, InpLipsPeriod, InpLipsShift, 0, i);
     ExtRedBuffer[i] = iCustom(_Symbol, _Period, "::Indicators\\Alligator.ex4", 13, 8, 8, 5, InpLipsPeriod, InpLipsShift, 1, i);
     ExtLimeBuffer[i] = iCustom(_Symbol, _Period, "::Indicators\\Alligator.ex4", 13, 8, 8, 5, InpLipsPeriod, InpLipsShift, 2, i);
    }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Дальнейшее обращение к индикатору Test_InputParam потребует ввода только двух значений, но результат будет такой-же как и в стандартном аллигаторе.


 
Alexey Viktorov:

Хорошая идея с прокладкой толкнула меня на испытания и вот что получилось с удалением первых параметров вллигатора.

Дальнейшее обращение к индикатору Test_InputParam потребует ввода только двух значений, но результат будет такой-же как и в стандартном аллигаторе.

Самообман же. iCustom нужно будет все равно в потрохах вызвать на все элементы.

Создайте тестовый индикатор на 100 входных и оставьте только EX4. И попробуйте через прокладку получить значения индикатора с измененным 100-м параметром.

 
fxsaber:

Самообман же. iCustom нужно будет все равно в потрохах вызвать на все элементы.

Создайте тестовый индикатор на 100 входных и оставьте только EX4. И попробуйте через прокладку получить значения индикатора в измененным 100-м параметром.

Возможно я не совсем точно воспроизвёл проблему. В предложениях было указать первые параметры, а остальные оставить по умолчанию... Согласен, это моя невнимательность. Моё предположение было именно так, но сделал я через ...

Делать индикатор с сотней параметров мне лениво, поэтому переделаю этот тестовый вариант именно с отбрасыванием последних параметров, но только как будет время и настроение. А в общем-то направление мысли дано и соответственно можно экспериментировать.

 

Факт - нельзя получить данные EX4-индикатора с измененным N-м параметром (N > 50, нужно уточнить). Это значит, что если, например, кто-то хочет сделать Маркет-индикатор исключительно для ручной торговли, то он может создать фейковые входные параметры в самом начале, и никто не сможет этот индикатор автоматизировать. Некая фишка MT4.

 
fxsaber:

Факт - нельзя получить данные EX4-индикатора с измененным N-м параметром (N > 50, нужно уточнить). Это значит, что если, например, кто-то хочет сделать Маркет-индикатор исключительно для ручной торговли, то он может создать фейковые входные параметры в самом начале и никто не сможет этот индикатор автоматизировать. Некая фишка MT4.

Увы... согласен. А как хорошо всё начиналось... Какой был порыв...

Причина обращения: