Erreurs, bugs, questions - page 1845

 
Konstantin:

comment ?

Comme ça :

struct MyArray
{
   double buff[];
   
   MyArray()
   {
   }
   MyArray( int n )
   {
      ArrayResize( buff, n );
   }
   MyArray( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   ~MyArray()
   {
      ArrayFree( buff );
   }
   
   void operator=( const MyArray& other )
   {
      ArrayCopy( buff, other.buff );
   }
   
   void assign( int n, const double val = 0.0 )
   {
      ArrayResize( buff, n );
      ArrayInitialize( buff, val );
   }
};

MyArray func()
{
   MyArray myArray;
   
   // Заполняем массив.
   
   return myArray;
}
 
Koldun Zloy:

Par exemple, comme ceci :

Ce n'est pas ce qui a été demandé, mais cela conviendrait peut-être à l'auteur de la question, à laquelle il existe une réponse sans équivoque : AUCUNE.

Il n'y a pas de refus dans le Service Desk

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.04.02 10:34

Est-il possible de compenser l'absence de pointeurs vers un tableau en introduisant la possibilité de retourner un tableau avec une fonction ?
int[] Func()
{
  int a[] = {1, 2, 3};

  return(a);
}

Print(Func()[1]); // 2

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.04.01 10:20

Il était une fois, l'opérateur [] a été ajouté au type chaîne de caractères
string Str = "AB C";
Print(CharToString(Str[1])); // B


Est-il possible, du côté des développeurs, d'ajouter un opérateur = pour les tableaux ?

int a[], b[];
a = b; // ArrayCopy(a, b);


Comme il n'y a pas de pointeurs, un tel opérateur rendrait le langage plus flexible - on trouve des situations où il serait TRÈS pratique.

 
Alexey Kozitsyn:
Essayez d'utiliser un indicateur. Les variables globales ne sont pas réinitialisées lorsque le TF change (pour autant que je m'en souvienne). Ou par le biais d'un fichier.

C'est l'inverse :

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Initialisation des variables globales du programme et autres connaissances utiles.

Artyom Trishkin, 2016.12.05 20:27

Réponse reçue de SD :


Je pense que vous pouvez utiliser en toute sécurité une telle fonctionnalité des EA à variable globale.


 
Alexey Kozitsyn:
Essayez d'utiliser un indicateur. Les variables globales ne sont pas réinitialisées lorsque le TF est modifié (pour autant que je m'en souvienne). Ou par le biais d'un fichier.

C'est pour cela que j'utilise l'indicateur. Ils sont réinitialisés. Le fichier n'est pas du tout une option, il est lent et il est difficile de fournir une bonne synchronisation. Je ferais mieux d'utiliserResourceCreate dans ce cas.Mais tout cela n'est pas très pratique. Si j'ai des dizaines de tableaux, certains avec plusieurs Mb, je dois écrire au moins deux fonctions de lecture et d'écriture, créer un handler àOnDeinit. J'ai déjà expérimenté tout cela, j'ai été confronté au problème de la synchronisation, car les ressources et les fichiers ont leur propre vie séparée dans le multithreading. Pourquoi faire une bosse quand il n'y a tout simplement pas assez de possibilité de ne pas réinitialiser à un certain événement, dans mon cas un changement de calendrier.
 
Nikolai Semko:

Indicateur et je l'utilise. Réinitialisé. Le fichier n'est pas du tout une option, il est lent et il est difficile de fournir une synchronisation de qualité. Je ferais mieux d'utiliserResourceCreate dans ce cas.Mais tout cela n'est pas très pratique. Si j'ai des dizaines de tableaux, certains avec plusieurs Mb, je dois écrire au moins deux fonctions de lecture et d'écriture, créer un handler àOnDeinit. J'ai déjà expérimenté tout cela, j'ai été confronté au problème de la synchronisation, car les ressources et les fichiers ont leur propre vie séparée dans le multithreading. Jene sais pas pourquoi je me suis embêté avec ça alors que je veux simplement éviter la réinitialisation d'un événement particulier, dans mon cas il s'agissait d'un changement d'horaire.
La réponse est ici.
 
Artyom Trishkin:

C'est exactement le contraire :



Merci, je ne savais pas pour l'EA !
Mais bon sang, si j'ai besoin de cette puce dans l'indicateur !

 
Koldun Zloy:

Par exemple, comme ceci :


merci pour l'exemple, mais créer un objet d'un type complexe à cause d'un simple tableau est exactement ce que je ne veux pas, tout cela ressemble à du code inutile ;))
 
fxsaber:

Ce n'est pas ce qui a été demandé, mais cela conviendrait peut-être à l'auteur de la question, à laquelle il existe une réponse sans équivoque : AUCUNE.

Il n'y a aucun refus de le faire au Service Desk.



espérons qu'ils introduiront cette fonctionnalité, bien qu'il serait plus habituel d'introduire un pointeur pour les tableaux
 
Artyom Trishkin:

C'est exactement le contraire :

Oh, mec... Oui, j'ai été guidé exactement par votre post, j'ai juste tout mélangé :)
 
Konstantin:

Merci pour l'exemple, mais je ne voudrais pas créer un objet de type complexe juste à cause d'un tableau, tout cela ressemble à du code excessif ;))


Qu'est-ce que ces bêtises enfantines sur les types complexes ? C'est un non-sens élémentaire.
Vous parlez de C++, mais avez-vous déjà étudié la bibliothèque STL ? (c'est un truc d'enfer là-bas).

Le problème est résolu de la manière la plus acceptable, que vous pouvez trouver dans un délai raisonnable.
Ensuite, si nécessaire, refactorez autant que vous le souhaitez, mais vous n'en arriverez pas là.

L'utilisation d'une classe enveloppante pour une bibliothèque, et parfois une fonctionnalité standard, est en gros une variation sur le modèle de la "façade".