Avec un algorithme de comptage glissant, seuls deux prix DBL_MAX sont nécessaires au début pour que l'ensemble du tampon devienne INF.
DBL_MAX + DBL_MAX = INF
et alors l'INF n'échappera plus aux calculs
Cette variante est assez probable car c'est DBL_MAX qui est rempli de valeurs inférieures à la période MAA. Il y a alors un bug dans la moyenne de l'algorithme récurrent - MODE_SMA.
C'est ainsi ! J'ai fait quelques changements et ça marche !
// Вычисляем Машку от Машки через хэндл самого себя#property indicator_separate_window#property indicator_buffers1#property indicator_plots1#property indicator_type1 DRAW_LINE#property indicator_color1 clrRed#property indicator_style1 STYLE_SOLID#property indicator_width1 1inputbool CustomData = false; // true - кастомный режим для iCustominputint MAPeriod = 1 e1; // Период МАшкиstring GetMyName( void )
{
constint Length = StringLen(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Indicators\\");
conststring Path = MQLInfoString(MQL_PROGRAM_PATH);
return(StringSubstr(Path, Length, StringLen(Path) - Length - 4));
}
double Buffer[];
constbool Init = SetIndexBuffer(0, Buffer, INDICATOR_DATA);
constint handleMA = CustomData ? iMA(NULL, PERIOD_CURRENT, 100, 0, MODE_SMA, PRICE_OPEN) // от этой МАшки будет брать другую Машку, но не напрямую, а кастомно
: iMA(NULL, PERIOD_CURRENT, MAPeriod, 0, MODE_SMA, iCustom(_Symbol, PERIOD_CURRENT, GetMyName(), true));
int Replace( double &Array[], constdouble NewValue = 1 e3, constdouble PrevValue = EMPTY_VALUE )
{
for (int i = ArraySize(Array) - 1; i >= 0; i--)
if (Array[i] == PrevValue)
Array[i] = NewValue;
return(0);
}intOnCalculate( constint rates_total, // размер входных таймсерий constint prev_calculated, // обработано баров на предыдущем вызовеconstdatetime& time[], // Time constdouble& open[], // Open constdouble& high[], // High constdouble& low[], // Low constdouble& close[], // Close constlong& tick_volume[], // Tick Volume constlong& volume[], // Real Volume constint& spread[] ) // Spread
{
return(prev_calculated + CopyBuffer(handleMA, 0, prev_calculated, rates_total - prev_calculated, Buffer) + Replace(Buffer));
}
On peut affirmer avec certitude que l'algorithme récurrent iMA ne prend pas en compte le cas où DBL_MAX est alimenté à l'entrée. Bug.
Pourquoi ne pas afficher le numéro de commande/transaction dans une fenêtre pop-up lorsque l'on passe la souris dessus ? On l'a demandé il y a mille ans, ça manque tellement !
De telles constructions doivent être évitées. L'ordre dans lequel les opérandes sont exécutés n'est pas réglementé en C++, c'est donc au compilateur individuel d'en décider. Les exceptions sont les opérateurs && et ||, où les opérandes sont toujours exécutés de gauche à droite.
De telles constructions doivent être évitées. L'ordre dans lequel les opérandes sont exécutés en C++ n'est pas réglementé, c'est donc au compilateur individuel d'en décider. Les exceptions sont les opérateurs && et ||, où les opérandes sont toujours exécutés de gauche à droite.
Bonjour. Pouvez-vous me dire quelles fonctions peuvent être utilisées pour obtenir la liste des indicateurs affichés sur le graphique et leurs paramètres ? Je n'ai trouvé qu'une fonction qui renvoie le nombre d'indicateurs sur le graphique
У каждого графика можно посмотреть списки наложенных объектов: индикаторов, аналитических объектов и советников. Там же можно можно редактировать их свойства и удалять их с графика. Список индикаторов Индикаторы сгруппированы на наложенные на основное окно графика и на те, что открыты в отдельных окнах. Выберите индикатор и нажмите "Свойства...
Bonjour. Pouvez-vous me dire quelles fonctions peuvent être utilisées pour obtenir la liste des indicateurs affichés sur le graphique et leurs paramètres ? Je n'ai trouvé que la fonction qui renvoie le nombre d'indicateurs dans le graphique.
Paramétrage des directives du préprocesseur en une seule ligne - mais bientôt désactivé.
Exécution des opérandes de gauche à droite.
OrderSend est synchronisé à 99% avec l'environnement de trading.
ChartApplyTemplate est asynchrone.
Et il y a beaucoup d'autres subtilités non documentées. Et puis il y a des cas où la documentation ne correspond pas à la réalité. Et ce n'est pas un bug, mais un bug rare qui n'est tout simplement pas mentionné.
Le précédent était un rejet de casting, mais il y avait une raison à cela.
Donc ne pas utiliser quelque chose juste parce qu'il n'est pas décrit est une décision discutable.
Je pense qu'un tel code ne susciterait pas de doutes chez les programmeurs.
int Replace( double &Array[], int );
return(prev_calculated + Replace(Buffer, CopyBuffer(handleMA, 0, prev_calculated, rates_total - prev_calculated, Buffer)));
Cependant, ce n'est pas très joli. Il est logique d'écrire MyCopyBuffer mais il est laid de montrer dans un code court que vous en avez besoin pour éviter un bug. Ainsi, l'utilisation d'une priorité d'exécution d'opérande non documentée est juste suffisante pour montrer qu'il s'agit d'une solution temporaire.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Avec un algorithme de comptage glissant, seuls deux prix DBL_MAX sont nécessaires au début pour que l'ensemble du tampon devienne INF.
DBL_MAX + DBL_MAX = INF
et alors l'INF n'échappera plus aux calculs
Cette variante est assez probable car c'est DBL_MAX qui est rempli de valeurs inférieures à la période MAA. Il y a alors un bug dans la moyenne de l'algorithme récurrent - MODE_SMA.
C'est ainsi ! J'ai fait quelques changements et ça marche !
On peut affirmer avec certitude que l'algorithme récurrent iMA ne prend pas en compte le cas où DBL_MAX est alimenté à l'entrée. Bug.
@A100, Merci !
MetaEditor se bloque lorsqu'on essaie de compiler un fichier joint
S'il ne s'arrête pas tout de suite, attendez un peu ou allez à la ligne de résumé et voyez le temps de compilation.
Pourquoi ne pas afficher le numéro de commande/transaction dans une fenêtre pop-up lorsque l'on passe la souris dessus ? On l'a demandé il y a mille ans, ça manque tellement !
De telles constructions doivent être évitées. L'ordre dans lequel les opérandes sont exécutés n'est pas réglementé en C++, c'est donc au compilateur individuel d'en décider. Les exceptions sont les opérateurs && et ||, où les opérandes sont toujours exécutés de gauche à droite.
De telles constructions doivent être évitées. L'ordre dans lequel les opérandes sont exécutés en C++ n'est pas réglementé, c'est donc au compilateur individuel d'en décider. Les exceptions sont les opérateurs && et ||, où les opérandes sont toujours exécutés de gauche à droite.
Eh bien, nous sommes dans le MQL !
Eh bien, nous sommes dans le MQL !
Nulle part dans la documentation il n'est question d'un ordre particulier. Ils peuvent donc la modifier comme bon leur semble à tout moment.
J'ai déjà contacté le service d'assistance une fois pour clarifier ce problème.
Bonjour. Pouvez-vous me dire quelles fonctions peuvent être utilisées pour obtenir la liste des indicateurs affichés sur le graphique et leurs paramètres ? Je n'ai trouvé qu'une fonction qui renvoie le nombre d'indicateurs sur le graphique
Bonjour. Pouvez-vous me dire quelles fonctions peuvent être utilisées pour obtenir la liste des indicateurs affichés sur le graphique et leurs paramètres ? Je n'ai trouvé que la fonction qui renvoie le nombre d'indicateurs dans le graphique.
IndicatorParameters (+ IndicatorRelease)
Nulle part dans la documentation il n'est question d'un ordre particulier. Ils peuvent donc la modifier comme bon leur semble à tout moment.
Je ne m'embête pas avec ça. Il y a beaucoup de choses qui ne sont pas décrites ici.
Du haut de ma tête
Le précédent était un rejet de casting, mais il y avait une raison à cela.
Donc ne pas utiliser quelque chose juste parce qu'il n'est pas décrit est une décision discutable.
Je pense qu'un tel code ne susciterait pas de doutes chez les programmeurs.
Cependant, ce n'est pas très joli. Il est logique d'écrire MyCopyBuffer mais il est laid de montrer dans un code court que vous en avez besoin pour éviter un bug. Ainsi, l'utilisation d'une priorité d'exécution d'opérande non documentée est juste suffisante pour montrer qu'il s'agit d'une solution temporaire.
L'ordre dans lequel les opérandes sont exécutés en C++ n'est pas réglementé, c'est donc au compilateur individuel d'en décider.
L'ordre dans lequel les opérandes sont évalués ne peut pas être réglementé car il dépend du contexte.
Si elle est strictement réglementée, l'efficacité sera perdue dans l'un des deux cas suivants