Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не знаешь язык собеседника? Функция автоматического перевода тебе поможет!
Serjik
70
Serjik 2016.02.08 17:28 

Доброго времени суток! Помогите пожалуйста кому не трудно, данный код индикатора оформить в виде функции и вставить в тело советника. Вроде и не сложно но что-то не получается.

Код индикатора и как сейчас принимаются значения через iCustom :

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Yellow
#property indicator_color2 Red

extern int pq = 2;
extern int pr = 10;
extern int ps = 1;
extern int trigger = 2;
string Comm;
double Buffer_2[];
double Buffer_5[];
double Buffer_0[];
double Buffer_1[];
double Buffer_3[];
double Buffer_4[];
double Buffer_6[];
double Buffer_7[];

int init() 
{
   IndicatorBuffers(8);
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Yellow);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, Red);
   SetIndexBuffer(0, Buffer_0);
   SetIndexLabel(0, "Egodic CCI");
   SetIndexBuffer(1, Buffer_1);
   SetIndexLabel(1, "Trigger Line");
   SetIndexBuffer(2, Buffer_2);
   SetIndexBuffer(3, Buffer_3);
   SetIndexBuffer(4, Buffer_4);
   SetIndexBuffer(5, Buffer_5);
   SetIndexBuffer(6, Buffer_6);
   SetIndexBuffer(7, Buffer_7);
   return (0);
}

int start() 
{
   int a = IndicatorCounted();
   if (a < 0) return (-1);
   if (a > 0) a--;
   int b = Bars - a;
   for (int i = b; i >= 0; i--) Buffer_2[i] = Close[i] - (Close[i + 1]);
   for (i = b; i >= 0; i--) Buffer_5[i] = MathAbs(Buffer_2[i]);
   for (i = b; i >= 0; i--) Buffer_3[i] = iMAOnArray(Buffer_2, 0, pq, 0, MODE_EMA, i);
   for (i = b; i >= 0; i--) Buffer_4[i] = iMAOnArray(Buffer_3, 0, pr, 0, MODE_EMA, i);
   for (i = b; i >= 0; i--) Buffer_6[i] = iMAOnArray(Buffer_5, 0, pq, 0, MODE_EMA, i);
   for (i = b; i >= 0; i--) Buffer_7[i] = iMAOnArray(Buffer_6, 0, pr, 0, MODE_EMA, i);
   for (i = b; i >= 0; i--)
      if (iMAOnArray(Buffer_7, 0, ps, 0, MODE_EMA, i) != 0.0) Buffer_0[i] = 500.0 * iMAOnArray(Buffer_4, 0, ps, 0, MODE_EMA, i) / iMAOnArray(Buffer_7, 0, ps, 0, MODE_EMA, i);
   for (i = b; i >= 0; i--) Buffer_1[i] = iMAOnArray(Buffer_0, 0, trigger, 0, MODE_EMA, i);
   i = b;
   if (i >= 0) 
   {
      if (Buffer_1[i] > Buffer_0[i]) Comm = "SHORT";
      if (Buffer_1[i] < Buffer_0[i]) Comm = "LONG";
      if (Buffer_1[i] == Buffer_0[i]) Comm = "NEUTRAL";
      IndicatorShortName("BB_trigger: " + Comm);
      return (0);
   }
   return (0);
}
   local_BB_Trigger_YELLOW_0 = iCustom(NULL, R_time_frame, "BB_Trigger", pq, pr, ps, trigger, 0, 0);
   local_BB_Trigger_RED_0 = iCustom(NULL, R_time_frame, "BB_Trigger", pq, pr, ps, trigger, 1, 0);
   local_BB_Trigger_YELLOW_1 = iCustom(NULL, R_time_frame, "BB_Trigger", pq, pr, ps, trigger, 0, 1);
   local_BB_Trigger_RED_1 = iCustom(NULL, R_time_frame, "BB_Trigger", pq, pr, ps, trigger, 1, 1);
   local_BB_Trigger_YELLOW_2 = iCustom(NULL, R_time_frame, "BB_Trigger", pq, pr, ps, trigger, 0, 2);
   local_BB_Trigger_RED_2 = iCustom(NULL, R_time_frame, "BB_Trigger", pq, pr, ps, trigger, 1, 2);
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий