#property indicator - страница 2

 
Stefan Stoyanov:

Мне не нравится это с ObjectCreate,  ObjectDeleteAll
Мне кажется, что мы теряем скорость и точность оттуда и уверенность в вычислении и отображении данных

Это очен интересно

А будет ли оно работать в условия МТ4 код

В документации ест где то подробное про условная компиляция

например что это :


Да, под МТ4 тоже будет, и под С++ будет, и даже в C# )) Это изначально стандарт дефайнов от Си

#define separate // определяем свой дефайн separate
#ifdef separate  // если он определен
   #property indicator_separate_window //выполняется эта ветка
#else // иначе
   #property indicator_chart_window // эта
#endif // конец блока

то есть, если напишем так

//#define separate // дефайн separate не определен
#ifdef separate  
   #property indicator_separate_window 
#else 
   #property indicator_chart_window //выполняется эта ветка
#endif 


define - это не переменная, это текстовая подстановка, которая обрабатывается ДО компиляции препроцессором

 
Alexey Volchanskiy:

Да, под МТ4 тоже будет, и под С++ будет, и даже в C# )) Это изначально стандарт дефайнов от Си


define - это не переменная, это текстовая подстановка, которая обрабатывается ДО компиляции препроцессором

Ну да правилно и я тоже где то там пришел

Вопрос такой , как определить   свой дефайн  в
#define separate    // определяем свой дефайн separate

Можно на месте separate вставить какую ни будь функцию

к примеру

#define Ind()

так что функция Ind() ,чтобы будь условно скомпилированная и отображенная в окно которое мы ее скажем

прочее спосибо разработчиков для обновление МТ4

https://docs.mql4.com/ru/basis/preprosessor

Препроцессор - Основы языка - Справочник MQL4
Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Препроцессор - Основы языка - Справочник MQL4
 
Stanislav Korotky:

Для простоты начните с одного индикатора, первого, который с #property indicator_separate_window. Когда он будет готов, напишите второй с #property indicator_chart_window, вызывая первый через iCustom.

Потом смотрите на код и делайте рефакторинг, вытаскивая общие куски (если они будут) в инклудник.

Все это не проблем ,но прежде чем начать мне надо знать, как определить   свой дефайн  в
#define separate    // определяем свой дефайн separate
 
Stefan Stoyanov:
Все это не проблем ,но прежде чем начать мне надо знать, как определить   свой дефайн  в
#define separate    // определяем свой дефайн separate

В этом случае define вообще ни при чем, он не нужен.

 

Stefan Stoyanov,  в варианте с define идет всего лишь автовыбор директивы, но вы не сможете использовать сразу 2 в одном индикаторе.. это так просто не работает..

 
Stefan Stoyanov:

Ну да правилно и я тоже где то там пришел

Вопрос такой , как определить   свой дефайн  в
#define separate    // определяем свой дефайн separate

Можно на месте separate вставить какую ни будь функцию

к примеру

#define Ind()

так что функция Ind() ,чтобы будь условно скомпилированная и отображенная в окно которое мы ее скажем

прочее спосибо разработчиков для обновление МТ4

https://docs.mql4.com/ru/basis/preprosessor

Нет, вы не понимаете смысла дефайнов. Поясню на другом примере, так понятнее.

#define five (2+3)

//еще ДО компиляции по всему тексту программы проходит специальная программа - препроцессор и везде, где встречает five, заменяет его на (2+3), то есть вместо
int f5 = five; 
//получается
int f5 = (2+3);

// скобки надо ставить для того, чтобы избежать проблем вроде 
#define five 2+3 //забыли поставить скобки
int f20 = five*4; //ожидали получить 20 
//но получается 14
int f20 = 2+3*4;   
 
Alexey Volchanskiy:

Нет, вы не понимаете смысла дефайнов. Поясню на другом примере, так понятнее.

А можно в скобками поставить одного из буфера индикатора,конечно если значения буфера численная

Примерно так :

#define five (Up[i])
#ifdef five (Up[i])
#property indicator_separate_window
double R[];
{ for(i=Bar; i>=0; i--)   five=R[i];}
{ for(i=Bar; i>=0; i--)  R[i] ;}

#endif

 
Stanislav Korotky:

В этом случае define вообще ни при чем, он не нужен.

Да но если я вызываю второй код через iCustom, это уже не единая программа а  отдельные  файлы

Первоначальная идея поместить все на одной код в одной программе  - файле

 

А можно попоробоват так

#define five 
#ifdef five 
#property indicator_separate_window
five=Ind()

#endif

Идея в том ,возможно ли поставить функции между операторы

#ifdef ---Ind()----- #endif
 
Stefan Stoyanov:

Да но если я вызываю второй код через iCustom, это уже не единая программа а  отдельные  файлы

Первоначальная идея поместить все на одной код в одной программе  - файле

Еще раз: одним файлом и одной программой не получится. Точка.

Если есть общий код - его можно вынести в один общий инклудник, но включить его нужно в два индикатора.

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