Индикаторы: BB Stops - MACD

 

BB Stops - MACD:

Индикатор MACD, использующий вместо сигнальной линии хорошо известный индикатор BB Stops.

Автор: Mladen Rakic

 

Я думаю, что в MetaTrader 5 есть большой баг. Когда я добавляю этот индикатор в свой советник, он клонирует себя сотни раз.

*****************************************************************************************************************************

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

//| |

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

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); //Не работает ! Наверное, ошибка MT.

double macd[];

double bmax[];

double bmin[];

double bblu[];

double bbld[];

double bba[];

double bbc[];

ArraySetAsSeries(macd,true);

ArraySetAsSeries(bmax,true);

ArraySetAsSeries(bmin,true);

ArraySetAsSeries(bblu,true);

ArraySetAsSeries(bbld,true);

ArraySetAsSeries(bba,true);

ArraySetAsSeries(bbc,true);

CopyBuffer(bbMACDDefinition,0,0,6,macd);

CopyBuffer(bbMACDDefinition,1,0,6,bmax);

CopyBuffer(bbMACDDefinition,2,0,6,bmin);

CopyBuffer(bbMACDDefinition,3,0,6,bblu);

CopyBuffer(bbMACDDefinition,4,0,6,bbld);

CopyBuffer(bbMACDDefinition,5,0,6,bba);

CopyBuffer(bbMACDDefinition,6,0,6,bbc);

int adxDefinition=iADXWilder(sympol,0,14); // Работает хорошо!

double adxArray[];

double dipArray[];

double dinArray[];

ArraySetAsSeries(adxArray,true);

ArraySetAsSeries(dipArray,true);

ArraySetAsSeries(dinArray,true);

CopyBuffer(adxDefinition,0,0,11,adxArray);

CopyBuffer(adxDefinition,1,0,11,dipArray);

CopyBuffer(adxDefinition,2,0,11,dinArray);




Петля

 
cuneytates:

Я думаю, что в MetaTrader 5 есть большой баг. Когда я добавляю этот индикатор в свой советник, он клонирует себя сотни раз.

*****************************************************************************************************************************

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

//| |

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

void tickProcess(int index)

{


orderClose(index);

int bbMACDDefinition = iCustom(sympol,0, "BB stops - MACD"); //Не работает ! Наверное, ошибка MT.

...





Ничего плохого в MT5 по этому поводу нет.

Вы вынуждаете (не проверяя, загружен ли уже пользовательский индикатор ) выполнять множественную загрузку. Исправьте свой код

 
Mladen Rakic:

В MT5 нет ничего плохого в этом отношении

Вы вынуждаете (не проверяя, загружен ли уже пользовательский индикатор ) выполнять множественную загрузку. Исправьте свой код

Уважаемый Ракич,

Я новичок в кодировании.

Пожалуйста, скажите мне, где я ошибся?

Что означает "множественная загрузка"?

Спасибо

 
cuneytates:

Дорогой Ракич,

Я новичок в кодировании.

Пожалуйста, скажите, где я ошибся?

Что означает "многократная загрузка"?

Спасибо

Тогда, пожалуйста, пишите в темах форума, а не в базе кода

Одно из возможных (много) решений вашей ошибки :

void tickProcess(int index)
{

   //...

   static int bbMACDDefinition=INVALID_HANDLE;
          if (bbMACDDefinition==INVALID_HANDLE) bbMACDDefinition = iCustom(_Symbol,_Period,"BB stops - MACD");    //Не работает! Наверное, ошибка MT.
          if (bbMACDDefinition==INVALID_HANDLE) return;

   //
   // выполните остальную обработку так же, как и в вашем коде
   //
}
Что касается остального: Я считаю, что в выражении "множественная загрузка" больше нечего объяснять.
 
Mladen Rakic:

Пожалуйста, размещайте сообщения в темах форума, а не в базе кода

Одно из возможных (многих) решений:

Что касается остальных: Я считаю, что в выражении "множественная загрузка" больше ничего объяснять не нужно.
Спасибо. Я собираюсь написать на форум.