Errori, bug, domande - pagina 39

 
Riprodotto su un altro foglio copiando, farò una richiesta al service desk.
Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
alexvd:

Ricordate esattamente dove è stato impostato DebugBreak()?

Non c'è ancora modo di replicarlo.

Ha fatto una richiesta in servicedesk #18435

Ho impostato DebugBreaks prima di tutti i cicli.

 
Urain:

Ha fatto una richiesta a servicedesk #18435

Zy DebugBreaks messo prima di tutti i cicli.

Sì, grazie.

L'ha già fatto di nuovo.

 
alexvd:

Sì, grazie.

L'ha già fatto di nuovo.

Ho aggiunto altre due versioni compilate più tardi, una funzionante e una rotta, per qualche motivo il loro peso differisce di quasi due volte.
 
ddd06:

Vorrei sapere il destino della richiesta#18261 peruna chiamata di indicatore da un EA (il valore non corrisponde all'indicatore).

Sarebbe bello se rispondessero in qualche modo...

Controllate di nuovo il vostro service desk, per favore, il problema è stato risolto
 

Ho una domanda sul campione MACD.

Ho impostato un Expert Advisor con SL 50 e TP200 nella demo di Alpari.

Ho aperto una posizione su GBPUSD e dopo qualche tempo l'Expert Advisor ha modificato la posizione e ha inserito nel log i seguenti dati

> 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]

La domanda è perché SL è diventato disabile? La posizione sembra essere stata modificata (o almeno è stata spostata a BU prima)...

Allo stesso tempo il tester di strategia non ha imprecato affatto...

PS

Il file con le impostazioni dell'indicatore è allegato...

 

C'è un array bidimensionale maVal[a][b] . Come copiare i valori di muVal in [b] dato che ho bisogno di sfogliare l'array per [a] e confrontare i valori di [b]

CopyBuffer(maHandle,0,0,3,maVal); Non adatto. È un codice ingombrante.

   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 [arresti non validi]

La domanda è perché SL è diventato disabile? E la posizione sembra essere stata modificata (almeno è stata spostata a BU prima)...

Anche il mio diario si è accigliato, se la modifica dell'ordine non ha cambiato né SL né TP.
 

Scriviamo un semplice script:

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

Lo lanciamo in modo sequenziale su diversi timeframe dello stesso strumento di trading, partendo da M1 e andando verso l'alto. Risultato: sul timeframe da M1 a M30 il periodo è corretto:

Ma su H1 viene lanciato un numero assolutamente fantastico.

La cosa più interessante è che il timeframe H2, (così come il successivo orario) non è lontano dal timeframe H1.


Su H1 il periodo = 16386, su H2 = 16387, su H3 = 16388 e così via - i numeri differiscono per l'ultima cifra.

Non mi interessa il metodo per aggirare questo bug, ma risolvere il bug stesso. Voglio che sia rimosso del tutto.

 
drknn:

Scriviamo un semplice script:

Lo lanciamo in modo sequenziale su diversi timeframe dello stesso strumento di trading, partendo da M1 e andando verso l'alto. Risultato: sul timeframe da M1 a M30 il periodo è corretto:

Ma sul timeframe H1 viene buttato fuori un numero assolutamente fantastico.

La cosa più interessante è che il timeframe H2 (così come i successivi timeframe orari) non è lontano dal timeframe H1.


Su H1 il periodo = 16386, su H2 = 16387, su H3 = 16388 e così via - i numeri differiscono per l'ultima cifra.

Non mi interessa il metodo per aggirare questo bug, ma risolvere il bug stesso. In modo che non ci fosse affatto.

> Non sono interessato a un modo per aggirare questo bug, ma a risolvere il bug stesso. Non voglio che ci sia affatto.

Non pensare che io sia scortese o insistente, ma sottolineando che questo bug mi ha appena ucciso...

Sull'essenza della domanda (suggerimenti):

Questo non è MQL4, e Period() non rappresenta il numero di secondi/minuti in TF.

Per ottenere il numero di secondi in un periodo è necessario utilizzare la funzione PeriodSeconds.


E se provate a esprimere Period come un numero, allora otterrete il valore numerico corrispondente all'identificatore del periodo nell'enumerazione ENUM_TIMEFRAMES.


PS

Quando ho bisogno di tradurre Period in formato MQL4, uso questa funzione:

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

E per evitare domande inutili sulla "periodizzazione", ecco altre due funzioni: MinuteToPeriod e 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);
//----------------------------------------------------------------------------//
}