Ошибки, баги, вопросы - страница 39

 
Воспроизвёл на другом листе путём копирования, щас оформлю заявку в сервисдеске.
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
alexvd:

Не помните, где именно был установлен DebugBreak()?

Пока никак не получается повторить. 

Оформил заявку в сервисдеске #18435

зы ДебагБрейки ставил перед всеми циклами.

 
Urain:

Оформил заявку в сервисдеске #18435

зы ДебагБрейки ставил перед всеми циклами.

Да, спасибо.

Уже повторили. 

 
alexvd:

Да, спасибо.

Уже повторили. 

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

Хотел бы узнать судьбу заявки #18261 по поводу вызова индикатора из советника (значение не совпадает с индикатором).

Было бы не плохо если бы както реагировали...

Проверьте свой сервисдеск ещё раз, пожалуйста, проблема устранена
 

Есть такой вопрос по поводу MACD Sample.

На демке у Альпари поставил торговать эксперта с SL 50 и TP200.

По паре GBPUSD открылась позиция, после некоторого времени эксперт модифицировал позицию и выдал в журнал следующее

> 2010.07.08 20:01:46    Trades    '3037120' : failed modify sell 0.10 GBPUSD sl: 1.51740, tp: 1.49868 -> sl: 1.51740, tp: 1.49868 [Invalid stops]

Вопрос с чего это SL стал инвалидом? При этом вроде позиция была модифицирована (по крайней мере до этого переводилась в БУ)...

При этом тестер стратегий при тесте с 200 года не ругался совсем...

PS

Файл с настройками индюка прилагается...

 

 Есть двумерный массив maVal[a][b] . Как скопировать значения мувинга в [b] т.к. нужно просматривать массив по [a] и сравнивать значения [b]

CopyBuffer(maHandle,0,0,3,maVal); Не подходит. А то так вот громоздкий код.

   bool Buy_Condition_1=((ma1Val[2]<ma1Val[1]) && (ma1Val[1]<ma1Val[0])||
                         (ma2Val[2]<ma2Val[1]) && (ma2Val[1]<ma2Val[0])||
                         (ma3Val[2]<ma3Val[1]) && (ma3Val[1]<ma3Val[0])||
                         (ma4Val[2]<ma4Val[1]) && (ma4Val[1]<ma4Val[0])||
                         (ma5Val[2]<ma5Val[1]) && (ma5Val[1]<ma5Val[0])); // MA растет
 
Interesting:

 sl: 1.51740, tp: 1.49868 -> sl: 1.51740, tp: 1.49868 [Invalid stops]

Вопрос с чего это SL стал инвалидом? При этом вроде позиция была модифицирована (по крайней мере до этого переводилась в БУ)...

У меня тоже журнал ругался, если при модификации у ордера не менялся ни SL, ни ТР.
 

Пишем простой скрипт:

void OnStart(){
  Alert("-----------------------------------");
  Alert("Period() = ",Period()," минут");
  Alert("------------ ",Symbol()," ------------");
}

Кидаем последовательно на разные таймфреймы одного и того же торгового инструмента, начиная с М1 и далее по-нарастающей. Результат: На таймфрейме от М1 до М30 период определяется верно:

Но на таймфрейме Н1 происходит выброс совершенно фантастического числа.

Самое интересное. что таймфрейм Н2, (как и последующие часовые) не далеко ушёл от таймфрейма Н1. 


На Н1 период = 16386 , на Н2 = 16387, на Н3 = 16388 и так далее - числа отличаются последней цифрой.

Интересует не способ как обойти этот баг, а исправление самого бага как такового. Чтоб небыло его вообще.

 
drknn:

Пишем простой скрипт:

Кидаем последовательно на разные таймфреймы одного и того же торгового инструмента, начиная с М1 и далее по-нарастающей. Результат: На таймфрейме от М1 до М30 период определяется верно:

Но на таймфрейме Н1 происходит выброс совершенно фантастического числа.

Самое интересное. что таймфрейм Н2, (как и последующие часовые) не далеко ушёл от таймфрейма Н1. 


На Н1 период = 16386 , на Н2 = 16387, на Н3 = 16388 и так далее - числа отличаются последней цифрой.

Интересует не способ как обойти этот баг, а исправление самого бага как такового. Чтоб небыло его вообще.

 

> Интересует не способ как обойти этот баг, а исправление самого бага как такового. Чтоб небыло его вообще.

Не сочтите за ГРУБОСТЬ и НАЕЗД, но указав на то что это БАГ Вы меня просто убили...

По сути вопроса (предложения):

Это Вам не MQL4, и Period() не представляет явно количество секунд/минут в ТФ.

Чтобы получить количество секунд в периоде нужно воспользоваться функцией PeriodSeconds.


А если Вы всеж попытаетесь выразить Period в виде числа, то в итоге получите всего-то числовое значение соответствующее идентификатору данного периода в перечислении ENUM_TIMEFRAMES.


PS

Я лично при необходимости перевода Period-а к формату MQL4 юзаю вот эту функцию:

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
//Возвращает число секунд в периоде
{
//----------------------------------------------------------------------------//
//Служебные переменные
int Result;
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

Ну и за одно чтобы лишних вопросов не было по "периодизации", приведу еще две функции: MinuteToPeriod и PeriodToStr.

//Fumction MinuteToPeriod
ENUM_TIMEFRAMES MinuteToPeriod(int Value)
//Преобразовывает число сикунд в период, возвращаемый как ENUM_TIMEFRAMES
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
ENUM_TIMEFRAMES Result;
//----------------------------------------------------------------------------//
  switch(Value)
  {
  //Перирд текущещего графика
  case   0: return(PERIOD_CURRENT); break;
  //Минуты
  case   1: return(PERIOD_M1);  break;   //1 минута
  case   2: return(PERIOD_M2);  break;   //2 минуты
  case   3: return(PERIOD_M3);  break;   //3 минуты
  case   4: return(PERIOD_M4);  break;   //4 минуты
  case   5: return(PERIOD_M5);  break;   //5 минуты
  case   6: return(PERIOD_M6);  break;   //6 минуты
  case  10: return(PERIOD_M10); break;   //10 минуты
  case  12: return(PERIOD_M12); break;   //12 минуты
  case  15: return(PERIOD_M15); break;   //15 минуты
  case  20: return(PERIOD_M20); break;   //20 минуты
  case  30: return(PERIOD_M30); break;   //30 минуты
  //Часы
  case  60: return(PERIOD_H1); break;    //60 минут  - 1 час
  case 120: return(PERIOD_H2); break;    //120 минут - 2 часа  
  case 180: return(PERIOD_H3); break;    //180 минут - 3 часа
  case 240: return(PERIOD_H4); break;    //240 минут - 4 часа
  case 360: return(PERIOD_H6); break;    //360 минут - 6 часов
  case 480: return(PERIOD_H8); break;    //480 минут - 8 часов
  case 720: return(PERIOD_H12); break;   //720 минут - 12 часов
  //Старшие ТФ
  case 1440: return(PERIOD_D1); break;   //1 день
  case 10080: return(PERIOD_W1); break;  //1 неделя 
  case 43200: return(PERIOD_MN1); break; //1 месяц 
  //Default
  default: return(PERIOD_CURRENT);
  }
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}
//Function PeriodToStr
string PeriodToStr(ENUM_TIMEFRAMES Value)
//Функция возвращает тексовое представление ТФ (периода)
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
string Result; //Возвращаемое значение
//----------------------------------------------------------------------------//

  switch(Value)
  {
  //Минуты
  case PERIOD_M1:  Result = "M1";  break; //1 минута
  case PERIOD_M2:  Result = "M2";  break; //2 минуты
  case PERIOD_M3:  Result = "M3";  break; //3 минуты  
  case PERIOD_M4:  Result = "M4";  break; //4 минуты    
  case PERIOD_M5:  Result = "M5";  break; //5 минут
  case PERIOD_M6:  Result = "M6";  break; //6 минут
  case PERIOD_M10: Result = "M10"; break; //10 минут
  case PERIOD_M12: Result = "M12"; break; //12 минут
  case PERIOD_M15: Result = "M15"; break; //15 минут
  case PERIOD_M20: Result = "M20"; break; //20 минут
  case PERIOD_M30: Result = "M30"; break; //30 минут
  //Часы
  case PERIOD_H1:  Result = "H1";  break; //60 минут   - 1 час
  case PERIOD_H2:  Result = "H2";  break; //120 минут  - 2 часа
  case PERIOD_H3:  Result = "H3";  break; //180 минут  - 3 часа
  case PERIOD_H4:  Result = "H4";  break; //240 минут  - 4 часа
  case PERIOD_H6:  Result = "H6";  break; //360 минут  - 6 часов  
  case PERIOD_H8:  Result = "H8";  break; //480 минут  - 8 часов
  case PERIOD_H12: Result = "H12"; break; //720 минут  - 12 часов
  //Старшие ТФ
  case PERIOD_D1:  Result = "Day";   break; //День
  case PERIOD_W1:  Result = "Week";  break; //Неделя
  case PERIOD_MN1: Result = "Month"; break; //Месяц
  //Unknown
  default: Result = "Unknown";
  break;
  }
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}