Предложение: добавить IndicatorCreate в MetaTrader 4 - страница 2

 
Stanislav Korotky:

Да не, там все просто, постараюсь сегодня дописать. mql4 часть почти готова, надо mql5 часть реализовать. Ограничение на 8 параметров есть.

Размер индикатора наверное будет конским, но летать все должно аки перышко.

 
Комбинатор:

Да не, там все просто, постараюсь сегодня дописать. mql4 часть почти готова, надо mql5 часть реализовать. Ограничение на 8 параметров есть.

Размер индикатора наверное будет конским, но летать все должно аки перышко.

Насколько я понимаю, предполагаемое ограничение 8 - из-за числа параметров шаблонов. У меня была немного другая задача - универсализация iCustom и больше 8 параметров - там достаточно всего 2 типов - строка и число (которое подходит подо все кроме строки). Если делать в лоб на шаблоне до 8 параметров, то согласен - все просто.
 
Реализация на шаблонах
 
Stanislav Korotky:
У меня была немного другая задача - универсализация iCustom и больше 8 параметров - там достаточно всего 2 типов - строка и число
В mqlparam 3 типа, логично предположить что при разделении на 2 могут быть глюки.

И такое решение геморное, потому что при каждом вызове ручками икастом в рантайме собирать по сути. Как по мне путь в никуда. В чем вы уже наверное убедились )
 
Andrei Trukhanovich:
В mqlparam 3 типа, логично предположить что при разделении на 2 могут быть глюки.

И такое решение геморное, потому что при каждом вызове ручками икастом в рантайме собирать по сути. Как по мне путь в никуда. В чем вы уже наверное убедились )
Согласен, конвертация long в double может терять точность. Но это не суть, можно и на 3 типа все разложить. А проблема ограничения на 8 параметров - капитальная, потому что очень много индюков имеет больше. Поэтому шаблонный вариант был лишь частным решением, и я пытался её решить в общем случае. Куда или никуда путь - не выяснишь, пока не попробуешь;-) Пока МТ не дает возможности.
 
Stanislav Korotky:

Поэтому шаблонный вариант был лишь частным решением, и я пытался её решить в общем случае.

В общем случае задача решается только через IndicatorCreate. Я на шаблонный вариант потратил в сумме часа два, ну еще два потрачу чтобы встроенные индикаторы добавить.

И это решение, которое будет работать в 90% случаев, вернее уже работает.

 
Комбинатор:

В общем случае задача решается только через IndicatorCreate. Я на шаблонный вариант потратил в сумме часа два, ну еще два потрачу чтобы встроенные индикаторы добавить.

И это решение, которое будет работать в 90% случаев, вернее уже работает.

Спасибо за код. Но проблема шаблонов в том, что эта статическая компиляция:

//+------------------------------------------------------------------+
//|                                                   TestCustom.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#include <iCustom.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+

//---
void OnStart()
{
  ICustom* x = CreateCustom("MACD", Symbol(), Period(), 50, 100, 20);   // Здесь мы задаем явный формат вызова индикатора,
                                                                        // На его основе компилятор генерит нужный вариант iCustom и зашивает его в код.
  double v1 = x.Value(1, 1);
  delete x;
  double v2 = iCustom(Symbol(), Period(), "MACD", 50, 100, 20, 1, 1);
  Print("v1 = ", v1, "; v2 = ", v2);
}

//+------------------------------------------------------------------+

Проблема в том, что мы не знаем формат вызываемой iCustom в момент компиляции. 

 
Vasiliy Sokolov:

Проблема в том, что мы не знаем формат вызываемой iCustom в момент компиляции. 

Пример? По ходу тоже можно, сложнее и с тем же ограничением в 8 параметров.
 
Комбинатор:
Пример? По ходу тоже можно, сложнее и с тем же ограничением в 8 параметров.
Посмотри профиль у Дмитрия. У него в Маркете выложен советник, торгующий по сигналам пользовательских индикаторов. Забавная вещичка. Мне кстати тоже интересна его реализация.  
 
Vasiliy Sokolov:
Мне кстати тоже интересна его реализация.  
параметры передаются в одной строке через ','
Причина обращения: