[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 264

 

Подскажите пожалуйста как присвоить время линии индикатора val1[]. Или натолкните на то как это сделать и что использовать а то немогу догнать. Индикатор Laguerre.

i=CountBars-1;
   while(i>=0)
   {
      L0A = L0;
      L1A = L1;
      L2A = L2;
      L3A = L3;
      L0 = (1 - gamma)*Close[i] + gamma*L0A;
      L1 = - gamma *L0 + L0A + gamma *L1A;
      L2 = - gamma *L1 + L1A + gamma *L2A;
      L3 = - gamma *L2 + L2A + gamma *L3A;

      CU = 0;
      CD = 0;
      
      if (L0 >= L1) CU = L0 - L1; else CD = L1 - L0;
      if (L1 >= L2) CU = CU + L1 - L2; else CD = CD + L2 - L1;
      if (L2 >= L3) CU = CU + L2 - L3; else CD = CD + L3 - L2;

      if (CU + CD != 0) LRSI = CU / (CU + CD);
      val1[i] = LRSI;
          i--;
        }
         

   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   if(limit>CountBars)
      limit=CountBars;
  
   for(int c=1;c<limit;c++)
        
{if(val1[c]>0.45)
  // присваиваем время;}

Например когда линия val1[c] пересекает 0.45 вверх значение времени присваивается переменной TimeBegin и потом когда пересекает вниз значение времени присваивается TimeEnd. И так по всему графику.

Идея такова чтобы когда линия пересекает 0.45 вверх и после того как она перескла 0.45 вниз, за этот период считаем пункты на графике (Сколько максимально дал индикатор за этот сигнал). Надеюсь смог объяснить.

Файлы:
 
VeyRON123:
А можно ли каким-то образом отключить от интернета сам МТ4 не вырубая интернет на компе?
hrenfx 20.03.2011 16:18

Отключайтесь от брокера через галочку "прокси" в настройках терминала. Одно движение - и вы в оффлайне или онлайне.

 
Здравствуйте, скажите, пожалуйста, почему не работает стандартная функция OrderSend? Просто беру исходный код из учебника на этом сайте, но ничего не происходит. Когда добавил вывод ошибки, выдало 4109 - неинициализированная строка в массиве..
 
Спасибо за советы буду разбираться...
 
Golden-dark:
Здравствуйте, скажите, пожалуйста, почему не работает стандартная функция OrderSend? Просто беру исходный код из учебника на этом сайте, но ничего не происходит. Когда добавил вывод ошибки, выдало 4109 - неинициализированная строка в массиве..
покажите полностью код
 

Приветствую товарищи!

Подскажите пожалуйста, в чем может быть ошибка в следующем коде:

//+------------------------------------------------------------------+
//|                                                         BB_k.mq4 |
//|                                                     |
//|                                                          no link |
//+------------------------------------------------------------------+
#property copyright "123"
#property link      "no link"

#property indicator_separate_window
#property indicator_buffers 1

#property indicator_color1 MediumSpringGreen

#property indicator_width1 1

double   buf_0[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {

   SetIndexBuffer (0, buf_0);
   SetIndexStyle (0, DRAW_LINE);
   SetIndexLabel (0, "Koefficient");
   SetIndexShift (0, 0);

   return;
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int i;
   int    counted_bars=IndicatorCounted();
//----
   i = Bars - counted_bars - 1;
   
   while (i>=0)
   {
      double x1 = iBands(NULL, 0, 20, 2, 0, PRICE_LOW, 1, i); //Верхняя полоса
      double x2 = iBands(NULL, 0, 20, 2, 0, PRICE_LOW, 2, i); //Нижняя полоса
   
      buf_0[i] = x1 / x2;
      i--;
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+

А суть такова: хочу индикатор, отображающий линию значений деления верхней полосы Боллинджера на нижнюю.

А результата нет.

В окне индикатора пусто:

Заранее благодарю если кто подскажет!

 
ramirez17:

Приветствую товарищи!

Подскажите пожалуйста, в чем может быть ошибка в следующем коде:

А суть такова: хочу индикатор, отображающий линию значений деления верхней полосы Боллинджера на нижнюю.

А результата нет.

В окне индикатора пусто:

Заранее благодарю если кто подскажет!

buf_0[i] = x1 / x2;

у тебя x2=0 на крайних левых барах. А деление на ноль вещь нехорошая...

 
ilunga:

у тебя x2=0 на крайних левых барах. А деление на ноль вещь нехорошая...


А что, к примеру, можно предпринять, чтобы это предотвратить?
 
ramirez17:

А что, к примеру, можно предпринять, чтобы это предотвратить?
if (x2 == 0) buf_0[i] = 0;
else buf_0[i] = x1 / x2;
Лучше совсем не допускать такого.
 
Подскажите, пожалуйста! Есть два условия, на бай и селл. После пойманного лося по ложному сигналу, например на бай, советник начинает открывать следующую позицию опять по этому ложному сигналу и опять ловит лося. Как сделать так, чтобы советник после лося ждал сигнал в противоположную сторону, а не открывал снова по прежнему ложному? Спасибо!
Причина обращения: