J'ai utilisé ArraySetAsSeries( array[], false) dans l'indicateur. Dans l'indicateur j'ai besoin d'utiliser iMa(...,i), il s'avère indexer d'une autre manière. Puis-je également modifier l'ordre d'indexation pour iMa() en tant que ArraySetAsSeries ?
Jusqu'à présent, j'ai procédé comme suit : rates_total-i (comptage à l'autre extrémité), mais je ne suis pas sûr que ce soit la bonne solution ? .
Les gars. Pouvez-vous me donner le code pour lier un indicateur à un numéro de compte, et en plus de la liaison à un compte, vous pourriez ajouter une clé de licence ?
J'ai utilisé ArraySetAsSeries( array[], false) dans l'indicateur. Dans l'indicateur j'ai besoin d'utiliser iMa(...,i), il s'avère indexer d'une autre manière. Puis-je également inverser l'ordre d'indexation pour iMa() comme ArraySetAsSeries ?
Jusqu'à présent, j'ai fait ceci : rates_total-i (compter à partir de l'autre extrémité), mais je ne suis pas sûr que ce soit la bonne solution ?
Je vais répondre moi-même (peut-être que quelqu'un en aura besoin aussi). Vous pouvez créer (refaire) un tampon de données en incluant par exemple MovingAverages.mqh (SimpleMAOnBuffer) et ne vous embêtez même pas avec ArraySetAsSeries, car il y a déjà ArrayGetAsSeries dans l'exemple.
//+------------------------------------------------------------------+//| Data on array |//+------------------------------------------------------------------+int DataBuffer(constint rates_total,constint prev_calculated,constint begin,
constdouble& data[],double& buffer[])
{
int i,limit;
//--- check for data//--- save as_series flagsbool as_series_data=ArrayGetAsSeries(data);
bool as_series_buffer=ArrayGetAsSeries(buffer);
if(as_series_data)
ArraySetAsSeries(data,false);
if(as_series_buffer)
ArraySetAsSeries(buffer,false);
//--- first calculation or number of bars was changedif(prev_calculated==0) // first calculation
{
limit=begin+1;
//--- set empty value for first barsfor(i=0; i<limit-1; i++)
buffer[i]=0.0;
//--- calculate first visible valuedouble firstValue=0;
for(i=begin; i<limit; i++)
firstValue=data[i];
buffer[limit-1]=firstValue;
}
else
limit=prev_calculated-1;
//--- main loopfor(i=limit; i<rates_total-1; i++)
buffer[i]=data[i];
//--- restore as_series flagsif(as_series_data)
ArraySetAsSeries(data,true);
if(as_series_buffer)
ArraySetAsSeries(buffer,true);
//---return(rates_total);
}
//+------------------------------------------------------------------+
il n'y aura pas de noms de variables après la compilation,
Je vois, Igor, je suppose que ça ne fonctionnera pas de manière élégante. Je pensais raccourcir le chemin vers les données pour plus de clarté, mais je vais avoir des feuilles de substitutions de cas et de macros. Je vais probablement me contenter d'un long enregistrement. Je vais y réfléchir, c'est une solution intéressante. Merci !
Quelle est la meilleure façon d'accéder à une propriété d'une classe vers une autre propriété de la même classe ?
C'est-à-dire qu'au lieu de "this", je voudrais utiliser quelque chose comme "parent".
J'ai utilisé ArraySetAsSeries( array[], false) dans l'indicateur. Dans l'indicateur j'ai besoin d'utiliser iMa(...,i), il s'avère indexer d'une autre manière. Puis-je également modifier l'ordre d'indexation pour iMa() en tant que ArraySetAsSeries ?
Jusqu'à présent, j'ai procédé comme suit : rates_total-i (comptage à l'autre extrémité), mais je ne suis pas sûr que ce soit la bonne solution ?.
Quelle est la meilleure façon d'accéder à une propriété d'une classe vers une autre propriété de la même classe ?
C'est-à-dire qu'au lieu de "this", je voudrais utiliser quelque chose comme "parent".
Apprenez les mathématiques)
Les gars. Pouvez-vous me donner le code pour lier un indicateur à un numéro de compte, et en plus de la liaison à un compte, vous pourriez ajouter une clé de licence ?
Une question : comment puis-je faire référence à un élément de structure en substituant son nom par une chaîne de caractères ?
Celui qui peut me le dire, bravo !J'ai utilisé ArraySetAsSeries( array[], false) dans l'indicateur. Dans l'indicateur j'ai besoin d'utiliser iMa(...,i), il s'avère indexer d'une autre manière. Puis-je également inverser l'ordre d'indexation pour iMa() comme ArraySetAsSeries ?
Jusqu'à présent, j'ai fait ceci : rates_total-i (compter à partir de l'autre extrémité), mais je ne suis pas sûr que ce soit la bonne solution ?Je vais répondre moi-même (peut-être que quelqu'un en aura besoin aussi). Vous pouvez créer (refaire) un tampon de données en incluant par exemple MovingAverages.mqh (SimpleMAOnBuffer) et ne vous embêtez même pas avec ArraySetAsSeries, car il y a déjà ArrayGetAsSeries dans l'exemple.
Une question : comment puis-je faire référence à un élément de structure en substituant son nom par une chaîne de caractères ?
Qui sait, ce sera bien fait !Pas de noms de variables après la compilation,
Je dois inventer quelque chose avec les macrosubstitutions.
Je n'aime pas letype de chaîne, je m'attends toujours à beaucoup de choses inattendues avec elle :
UPD :
bien qu'il serait plus logique de mettre une méthode de travail avec les champs dans la structure, c'est-à-dire ainsi :
il n'y aura pas de noms de variables après la compilation,
Je vois, Igor, je suppose que ça ne fonctionnera pas de manière élégante. Je pensais raccourcir le chemin vers les données pour plus de clarté, mais je vais avoir des feuilles de substitutions de cas et de macros. Je vais probablement me contenter d'un long enregistrement. Je vais y réfléchir, c'est une solution intéressante. Merci !
Une question : comment puis-je faire référence à un élément de structure en substituant son nom par une chaîne de caractères ?
Celui qui peut me le dire, bravo !