[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 548

 
artmedia70 писал(а) >>
Что за ошибка 4051 и как её отлавливать?


https://docs.mql4.com/ru/constants/errors

ERR_INVALID_FUNCTION_PARAMVALUE 4051 Недопустимое значение параметра функции

 
artmedia70 >>:
А кто сказал, что именно тот кусочек работает неправильно? Если б я выложил весь код - места бы не хватило...
Сначала вызываете на общение, потом в кусты... :)


Нет. Я предложил Вам разобрать неработающий учаток кода. Разобрать во всех подробностях. Вместо этого Вы выложили весь код. :)

Ни в какие кусты я прятаться не собираюсь. Цитирую:

>> Давайте по-строчкам разберём кусочек Вашего кода, который работает не правильно...

>>Делаем? 

Вот мои слова. Вместо неработающего кусочка Вы выложили кучу непонятно чего - какой-то набор функций. Это-то мне и непонравилось.

 

Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:

 - Блок проверки наличия торгового сигнала

 - Блок открытия/закрытия/переворота ордеров

 - Блок сопровождения открытых позиций.

Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен. 

 
drknn >>:

Вообще, чтоб найти ошибку, нужно заблокировать некоторые участки кода. Например, код состоит из следующих блоков:

- Блок проверки наличия торгового сигнала

- Блок открытия/закрытия/переворота ордеров

- Блок сопровождения открытых позиций.

Блокируем при помощи многострочного комментария /**/ два последних блока, запускаем советника и с помощью принта или алерта снимаем значения ключевых переменных - просто убеждаемся, что этот блок работает корректно. Если натыкаемся на ошибку, то исправляем её. Затем снимаем блокировку со следующего блока кода и повторяем процедуру. И так далее до тех пор, пока весь код ни окажется отлажен. Другой путь будет более утомителен.

Да, спасибо, с этим я уже знаком... Знаний малость не хватает. А выложил я весь код просто по причине, что я не знаю какой именно его кусок не работает. Ведь не обязательно, что именно тот, первоначально выложенный. Благодарю за участие... :)
 
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
#property copyright "Krokus"
#property link      ""
//----
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//----
extern int       N=20; // период канала 
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit;
   double upPrice,downPrice;
//---- 
   if (counted_bars==0) limit=Bars-N;
   if (counted_bars>=0) limit=Bars-counted_bars;
   limit--;
   for(int i=limit;i>=0;i--)
     {
      upPrice=High[iHighest(Symbol(),0,MODE_HIGH,N,i)];//максимум за N баров 
      downPrice=Low[iLowest(Symbol(),0,MODE_LOW,N,i)]; //минимум за N баров 
      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
//---- 
   return(0);
  }
//+------------------------------------------------------------------+
 
в код эксперта имею ввиду а не вызов
 
Andrei01 >>:
Скажите, должны ли рисоваться графические объекты советником в тестере не в ценовом окне, а в отдельном? Почему-то это не работает при замене нуля на единицу при создании объекта.

Создайте пустой iCustom индикатор с сепаратным окном и вызываете его из советника,

тогда и объекты советника будет где отрисовывать, а то окна нет а команду рисовать даёте, хдеж ему рисовать та.

Только нужно обратить внимание на масштабы,

проще всего задать индюку два буфера в цвет фона,

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

 
sllawa3 >>:
подскажите пожалуйста как вписать индюк в эксперт чтоб снимал данные с тф н4 ???
for(int i=limit;i>=0;i--)
     {
      int ii=iBarShift(Symbol(), 240, i);//Symbol() или NULL

      upPrice=iHigh( NULL, 240,  iHighest(NULL, 240 ,MODE_HIGH,N, ii) );//максимум за N баров 
      downPrice=iLow( NULL, 240,  iLowest(NULL, 240 ,MODE_LOW, N, ii) ); //минимум за N баров 

      ExtMapBuffer1[i]=(upPrice-downPrice)/Point;

     }
чтобы индюк независимо от графика вычислял нужный ТФ (н4), то что-то вроде этого
 
это работать не будет.. limit не прописан и как его прописать ?
int    counted_bars=IndicatorCounted();
тоже в эксперте не потянет
 
Бардак!!! Открытые позиции каждая тралится тралом, при этом закрываются об "чужие" TP и SL... Соответственно полный разброд и шатание... Как победить?
Причина обращения: