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

 
999666:

Вот функция

Сам советник во вложении


Чой-то странные имена переменных, декомпилятор такие делает )))
 
artmedia70:

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

Это так... направление мысли.

Проверил, и к сожалению, это не выход! Возникает ошибка 138! Вполне понятно, что теперь у тестера и эксперта разные Аски! Потому рэквотит! Подстраивать алгоритм под спрэд не имеет смысла!

Пока буду пользоваться повышенным постоянным спрэдом. Может, разработчики сделают имитацию меняющегося спрэда, да и задержек исполнения ордеров!

Был бы в Москве, пригласил бы на блины! :))

А тут только крепсы... :(( Но всё равно пригласил бы!

 

Приветствую форумчане!

Подскажите новичку, почему приведенный код удаляет каждый второй объект? Половина остается. Что не так?

int deinit()
  {
  int    obj_total=ObjectsTotal();
  
  for(int i=0;i<obj_total;i++)
      {
      ObjectDelete(ObjectName(i)); 
      }
   return(0);
  }
 
Parkhom:

Приветствую форумчане!

Подскажите новичку, почему приведенный код удаляет каждый второй объект? Половина остается. Что не так?

А так:

int deinit()
  {
  ObjectsDeleteAll();
  return(0);
  } 
 
r772ra:

А так:


Так, оставил на резерв :) Если по другому нельзя.

ObjectsDeleteAll() - удаляет всё. А хочется чтоб было красиво и удалять объекты, нарисованные индикатором.

 
Parkhom:


Так, оставил на резерв :) Если по другому нельзя.

ObjectsDeleteAll() - удаляет всё. А хочется чтоб было красиво и удалять объекты, нарисованные индикатором.

int deinit() {
// -------- Блок удаления всех объектов, построенных на графике --------
   string Name_Del[1]; 
   int Quant_Del=0;                    
   int Quant_Objects=ObjectsTotal();   
   int LenPref=StringLen(Prefix);
   ArrayResize(Name_Del,Quant_Objects);
   for(int k=0; k<Quant_Objects; k++) {
      string Obj_Name=ObjectName(k);   
      string Head=StringSubstr(Obj_Name,0,LenPref);
      if (Head==Prefix) {                              
         Quant_Del+=1;        
         Name_Del[Quant_Del-1]=Obj_Name;
         }
     }
   for(int i=0; i<Quant_Del; i++) ObjectDelete(Name_Del[i]); 
// ----- Конец блока удаления всех объектов, построенных на графике -----
   return(0);
}

В init() нужно ещё переменную Prefix, объявленную глобально, инициализировать

Например:

int init() {
   IndicatorShortName("IB_"+Symbol());
   Prefix="IB_"+Symbol();
//-----------------------------
   SetIndexBuffer(0, isbup);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,181);
   SetIndexEmptyValue(0,0.0);
   SetIndexLabel(0,"Long Signal");
//-----------------------------
   SetIndexBuffer(1, isbdn);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,181);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(1,"Short Signal");
//-----------------------------
   SetIndexBuffer(2, arrup);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexArrow(2,159);
   SetIndexEmptyValue(2,EMPTY_VALUE);
   SetIndexLabel(2,"Long Level");
//-----------------------------
   SetIndexBuffer(3, arrdn);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexArrow(3,159);
   SetIndexEmptyValue(3,EMPTY_VALUE);
   SetIndexLabel(3,"Short Level");
//-----------------------------
   return(INIT_SUCCEEDED);
}
 
borilunad:

Проверил, и к сожалению, это не выход! Возникает ошибка 138! Вполне понятно, что теперь у тестера и эксперта разные Аски! Потому рэквотит! Подстраивать алгоритм под спрэд не имеет смысла!

Пока буду пользоваться повышенным постоянным спрэдом. Может, разработчики сделают имитацию меняющегося спрэда, да и задержек исполнения ордеров!

Был бы в Москве, пригласил бы на блины! :))

А тут только крепсы... :(( Но всё равно пригласил бы!

Я ж сказал - не по рынку открываться, а стоповыми отложками. Ведь сказал же сразу.

А за блины спасибо. Можешь мне по Скайпу их передать. ;)

 
Parkhom:


Так, оставил на резерв :) Если по другому нельзя.

ObjectsDeleteAll() - удаляет всё. А хочется чтоб было красиво и удалять объекты, нарисованные индикатором.


Так может лучше по именам искать и удалять? Или там с полтыщи обьектов?


А если циклом, то стоит попробовать обратную последовательность в цикле

 for(int i=obj_total-1;i>=0;i--)
      {
      ObjectDelete(ObjectName(i)); 
      }
 
Начал тестировать своего советника, начались проблемы с тестером,хотелось бы узнать у опытных "тестеров“ как сильно тестер может усугублять? Сначало он открывал много противоположных позиций и сразу их закрывал, что весь доход вместе с депозитом сливался, вроде решил эту проблему, теперь он открывает например 20 лотов со стопом в 600 пунктов и сливает часть дохода, гаденышь такой.
 
Burger:
Начал тестировать своего советника, начались проблемы с тестером,хотелось бы узнать у опытных "тестеров“ как сильно тестер может усугублять? Сначало он открывал много противоположных позиций и сразу их закрывал, что весь доход вместе с депозитом сливался, вроде решил эту проблему, теперь он открывает например 20 лотов со стопом в 600 пунктов и сливает часть дохода, гаденышь такой.
А тестер-то при чём?
Причина обращения: