Erros, bugs, perguntas - página 39

 
Reproduzido noutra folha por cópia, vou fazer um pedido ao balcão de serviço.
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
alexvd:

Lembra-se exactamente onde DebugBreak() foi colocado?

Ainda não há forma de o replicar.

Fez um pedido em servicedesk #18435

Eu ponho o DebugBreaks antes de todos os loops.

 
Urain:

Fez um pedido no Servicedesk #18435

Zy DebugBreaks colocados antes de todos os ciclos.

Sim, obrigado.

Já o fez novamente.

 
alexvd:

Sim, obrigado.

Já o fez novamente.

Acrescentei mais duas versões compiladas mais tarde, uma funcional e outra quebrada, por alguma razão o seu peso difere por quase duas vezes.
 
ddd06:

Gostaria de saber o destino do pedido#18261 parauma chamada de indicador de uma EA (o valor não corresponde ao indicador).

Seria bom se respondessem de alguma forma...

Verifique novamente o seu balcão de atendimento, por favor, o problema foi resolvido
 

Tenho uma pergunta sobre a amostra MACD.

Na demonstração da Alpari, estabeleci um consultor especializado com SL 50 e TP200.

Abri uma posição no GBPUSD e após algum tempo o Consultor Especialista modificou a posição e introduziu no registo os seguintes dados

> 2010.07.08 20:01:46 Comércios '3037120' : não modificou vender 0.10 GBPUSD sl: 1.51740, tp: 1.49868 -> sl: 1.51740, tp: 1.49868 [Paragens inválidas]

A questão é porque é que o SL ficou incapacitado? A posição parece ter sido modificada (ou pelo menos foi transferida para BU antes)...

Ao mesmo tempo, o testador de estratégias não jurou de todo...

PS

Ficheiro com as definições do indicador é anexado...

 

Existe uma matriz bidimensional maVal[a][b] . Como copiar valores muVal para [b] uma vez que preciso de navegar na matriz por [a] e comparar [b] valores

CopyBuffer(maHandle,0,0,3,maVal); Não adequado. Isso é um código incómodo.

   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 [Paragens inválidas]

A questão é porque é que o SL ficou incapacitado? Parece que a posição foi modificada (pelo menos foi mudada para BU antes)...

O meu diário também franzia o sobrolho, se a modificação da encomenda não alterasse nem SL nem TP.
 

Escrevemos um guião simples:

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

Lançamo-lo sequencialmente em diferentes períodos de tempo do mesmo instrumento comercial, começando com M1 e indo para cima. Resultado: No período de M1 a M30, o período é correcto:

Mas no período de tempo H1 é lançado um número absolutamente fantástico.

O mais interessante é que o prazo H2, (bem como o horário subsequente) não está muito longe do prazo H1.


Em H1 o período = 16386 , em H2 = 16387, em H3 = 16388 e assim por diante - os números diferem pelo último dígito.

Não estou interessado no método de contornar este insecto, mas na reparação do próprio insecto. Quero que seja de todo retirado.

 
drknn:

Escrevemos um guião simples:

Lançamo-lo sequencialmente em diferentes períodos de tempo do mesmo instrumento comercial, começando com M1 e indo para cima. Resultado: No período de M1 a M30, o período é correcto:

Mas no prazo H1, um número absolutamente fantástico é deitado fora.

O mais interessante é que o prazo H2 (bem como os prazos horários subsequentes) não está muito longe do prazo H1.


Em H1 o período = 16386 , em H2 = 16387, em H3 = 16388 e assim por diante - os números diferem pelo último dígito.

Não estou interessado no método de contornar este insecto, mas na reparação do próprio insecto. Para que não estivesse lá de todo.

> Não estou interessado numa forma de contornar este insecto, mas em corrigir o próprio insecto. Não quero de todo que esteja lá.

Não pensem que estou a ser rude ou insistente, mas sim a apontar que este insecto que acabaram de me matar...

Sobre a essência da questão (sugestões):

Isto não é MQL4, e Período() não representa o número de segundos/minutos na TF.

Para obter o número de segundos num período, é necessário utilizar a função PeriodSeconds.


E se tentar expressar Período como um número, então obterá o valor numérico correspondente ao identificador do período na enumeração ENUM_TIMEFRAMES.


PS

Quando preciso de traduzir Período no formato MQL4, utilizo esta função:

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

E para evitar questões desnecessárias sobre "periodização", aqui estão mais duas funções: MinutoPeriodo e PeríodoToStr.

//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);
//----------------------------------------------------------------------------//
}