Erreurs, bugs, questions - page 1813
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Sous chrome 56.0.2924.87, le vol se passe bien, avec et sans rafraîchissement manuel de la page d'examen.
Pouvez-vous me dire comment ?
Mais dans Chrome, vous pouvez le faire comme ceci :
Appuyez sur F12 sur www.mql5.com => dans le tableau de bord, allez dans Application => Cookies => cliquez sur les cookies => Effacer tout de...
Google aide.
Mais dans Chrome, vous pouvez le faire comme ceci:
Appuyez sur F12 tout en naviguant sur www.mql5.com => dans le tableau de bord, allez dans Application => Cookies => cliquez sur les cookies => Effacer tous les...
Il n'y en a pas.
Il est en train de jouer. J'ai écrit votre code dans le script, il a donné une valeur correcte (1001199) lorsqu'il a été exécuté en mode débogage, mais si je compile la version et l'exécute à partir de l'arbre dans MT5, il a donné 11199 de manière stable. J'ai pu localiser.
Il s'agit en fait d'un bogue de compilateur, à écrire à servicedesk.
Il n'y en a pas.
Veuillez conseiller
MT4 a commencé à peser 1,8 Gbytes (RAM). Il a mangé tout l'UPU, le deuxième terminal ne peut pas être allumé correctement. Des suggestions sur la façon de "nettoyer" la RAM de MT ?
Veuillez conseiller
MT4 a commencé à peser 1,8 Gbytes (RAM). Il a mangé tout l'UPU, le deuxième terminal ne peut pas être allumé correctement. Des suggestions sur la façon de "nettoyer" la RAM de MT ?
Avez-vous essayé de redémarrer le terminal ?
La mémoire est libérée si je réduis le nombre de barres sur le graphique, mais je dois ensuite redémarrer.
Avez-vous essayé de redémarrer le terminal ?
La mémoire est libérée si vous réduisez le nombre de barres sur le graphique, mais vous devez alors redémarrer.
Erreur dans la détermination du type de paramètre de l'indicateur ENUM_DATATYPE.
J'exécute un indicateur de test. Dans les paramètres d'entrée, chaque paramètre a un type unique :
#property indicator_plots 0
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input bool inpBool = false; //1
input char inpChar = 0; //2
input uchar inpUChar = 0; //3
input short inpShort = 0; //4
input ushort inpUShort=0; //5
input color inpColor=clrWhite; //6
input int inpInt=0; //7
input uint inpUInt=0; //8
input datetime inpDatetime=0; //9
input long inpLong=0; //10
input ulong inpULong = 0; //11
input float inpFloat = 0.0; //12
input double inpDouble = 0.0; //13
input string inpString = ""; //14
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
IndicatorSetString(INDICATOR_SHORTNAME,"DATATYPE");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
//+------------------------------------------------------------------+
Ensuite, je le recherche dans le script et je fais le déblocage de son type de paramètres :
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- Проверяем количество аналогичных индикаторов на всех открытых окнах
long id=ChartFirst();
int indicatorsTotal=0;
int windowsTotal=0;
//---
int ctr=0;
//---
do
{
windowsTotal=(int)ChartGetInteger(id,CHART_WINDOWS_TOTAL);
for(int i=0; i<windowsTotal; i++)
{
indicatorsTotal=ChartIndicatorsTotal(id,i);
for(int j=0; j<indicatorsTotal; j++)
{
//Print( __FUNCTION__,": Имя индикатора: "+ChartIndicatorName( id, i, j ) );
//---
string shortName=ChartIndicatorName(id,i,j);
if(StringFind(shortName,"DATATYPE")<0)
continue;
else
{
//--- получим хэндл индикатора
int handle=ChartIndicatorGet(id,i,shortName);
//---
if(handle==INVALID_HANDLE) // Если хэндл не получен
{
Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": хэндл индикатора "+shortName+" не получен!");
return; // Ошибка! Переходим к следующему индикатору
}
//--- Получаем параметры индикатора
MqlParam parameters[]; // Массив-приемник параметров
ENUM_INDICATOR indicator_type; // Тип индикатора
//--- Получение..
int params=IndicatorParameters(handle,indicator_type,parameters);
//---
for(int p=1; p<params; p++)
Print(__FUNCTION__,": p#",p,": type = ",EnumToString(parameters[p].type));
}
}
}
}
while(( id=ChartNext(id))>=0);
}
Dans la sortie, j'obtiens :
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#2: type = TYPE_CHAR
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#3: type = TYPE_UCHAR
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#4: type = TYPE_SHORT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#5: type = TYPE_USHORT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#6: type = TYPE_UINT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#7: type = TYPE_INT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#8: type = TYPE_UINT
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#9: type = TYPE_LONG
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#10: type = TYPE_LONG
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#11: type = TYPE_ULONG
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#12: type = TYPE_DOUBLE
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#13: type = TYPE_DOUBLE
2017.02.20 09:08:58.147 test_DATATYPE (BR-3.17,M1) OnStart: p#14: type = TYPE_STRING
Je constate qu'au lieu du type TYPE_COLOR(#6), on trouve le type TYPE_UINT, au lieu du type TYPE_DATETIME (#9), le type TYPE_LONG, au lieu du type TYPE_FLOAT (#12), le type TYPE_DOUBLE. Bien que les types TYPE_COLOR, TYPE_DATETIME et TYPE_FLOAT soient décrits dans l'énumération et doivent avoir leurs propres valeurs !
Servicedesk#1677120Erreur dans la détermination du type des paramètres de l'indicateur ENUM_DATATYPE.
Nous pouvons voir que TYPE_COLOR(#6) affiche TYPE_UINT au lieu de TYPE_DATETIME (#9), TYPE_LONG au lieu de TYPE_FLOAT(#12), TYPE_DOUBLE au lieu de TYPE. Bien que les types TYPE_COLOR, TYPE_DATETIME et TYPE_FLOAT soient décrits dans l'énumération et doivent avoir leurs propres valeurs !
On peut cependant voir la logique dans le résultat. Même float->double peut être expliqué. Je tronquerais encore plus le nombre de types de sortie. En ce sens, l'ENUM_DATATYPE semble trop large.