Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 98

 
Roger:

Не верю, не может этот советник работать ни на реале ни в тестере.


Почему? Есть ошибка? Объясните.

Это лишь часть кода, отвечающая за преобразование горизонтальных линий в ордера.

 
Помогите плиз. Как сделать чтоб советник оптимизировался на растоянии от 20-30 баров до нулевого. В самом конце графика......
 

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

до обновления http://charts.mql5.com/2/379/eurusd-m-m1-roboforex.png

после http://charts.mql5.com/2/379/eurusd-m-m1-roboforex-2.png

//+------------------------------------------------------------------+
//|                                                           t27_zz |
//|                                                          tommy27 |
//|                                        SKYPE:       t.o.m.m.y.27 |
//|                                        MAIL: tommy27fx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27fx@gmail.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 FireBrick

extern int DeepBars = 5000;
double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexArrow (0,108);
   SetIndexArrow (1,108);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorShortName("t27_zz");
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=DeepBars-ExtCountedBars-1; i>=0; i--)
     { 
      if (Bar1(i)==1)   buf_1[i+1] = Low[i+1]-5*Point;//UP
      if (Bar1(i)==2)   buf_2[i+1] = High[i+1]+5*Point;//DOWN
     }
   return(0);
  }
//---- end
//------------------------------------------------------------------------
int Bar1(int i)
{
 if(Low[i+1] <= Low[i+2] && Low[i+1] <= Low[i])//UP
  return(1);
 if(High[i+1] >= High[i+2] && High[i+1] >= High[i])//DOWN
  return(2);
 return(0);
} 
 
tommy27:

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



Разбирайтесь с переменной DeepBars.

 
splxgf:


Разбирайтесь с переменной DeerBars.


Вот спасибо большое! Убрал DeerBars и всё заработало, может ещё подскажете как тогда сделать правильно установку отображаемой глубины, чем теперь заменить мне DeerBars?
 

А зачем ее заменять?

if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;//добавить
for (int i=recalc; i>=0; i--)//поправить
 
splxgf:

А зачем ее заменять?


Да я поправил вот так:

if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)

а DeepBars-ом я хотел задавать количество баров, чтоб всю историю не показывал, а отображался на последних DeepBars - это почему то не получается сделать.

 

а DeepBars-ом я хотел задавать количество баров, чтоб всю историю не показывал, а отображался на последних DeepBars - это почему то не получается сделать.


if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;
if (recalc>DeepBars) recalc=DeepBars;
 
Большое спасибо за помощь, Вы мне очень помогли.
 
Dozol:


Почему? Есть ошибка? Объясните.

Это лишь часть кода, отвечающая за преобразование горизонтальных линий в ордера.

По Вашему коду линия будет удаляться после первого тика, т.е. функции слежения за ценой нет и работает как скрипт - провели вручную горизонтальную линию, ордер открылся или нет, но линия сразу уничтожается. Селлстоповые ордера по этому коду никогда не откроются.
Причина обращения: