Questions d'un "mannequin - page 181

 

Au secours, je ne trouve aucune information nulle part.

Comment puis-je connaître le prix d' ouverture moyen pondéré d'une position après plusieurs transactions ? PriceOpen() de CPositionInfo indique le prix de la première transaction, mais j'ai besoin du prix actuel, obtenu après plusieurs transactions.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
class Parent1
{
public:
	virtual void Fn() {}
};

template <typename type>
class Parent2   // Какой-то библиотечный класс.
{
public:
	void Fn() {}     // Эту функцию хочу вызвать в Parent 1.
};

class Derived : public Parent2<type>, public Parent1
{

};

Parent1 *p = new Derived();
p->Fn();
L'idée est qu'il existe une classe dont nous voulons la fonctionnalité (liste liée Parent2). Je veux connecter cette classe dans une autre hiérarchie (en utilisant l'héritage multiple). Ensuite, dans la classe de base de cette hiérarchie, définissez des fonctions virtuelles du même nom (comme dans la classe de bibliothèque) pour appeler ces fonctions de bibliothèque. Comme une classe de bibliothèque est un modèle, par conséquent, nous ne connaissons pas le type de sortie (après un héritage multiple) (il y en a beaucoup et ils sont différents). Mais tout cela semble irréalisable.
 
sergeev:

l'intérêt est probablement purement académique

comment faire Q3 en C++ : public Q1, public Q2

et en même temps faire comprendre au compilateur ce que l'on attend de lui.

Qu'est-ce qui ne va pas avec cette note ? C'est ce qu'on appelle l'héritage multiple.
 
220Volt:
Qu'est-ce qui ne va pas avec ce post ? C'est ce qu'on appelle l'héritage multiple.

Oui, c'est juste que si les prototypes ont les mêmes fonctions, il est plus logique de faire de l'héritage en cascade.

L'héritage multiple est requis si un ensemble différent de fonctions virtuelles ou de fonctions explicites, et toutes les fonctions virtuelles ou explicites doivent être disponibles dans le descendant.

Il est particulièrement important lorsqu'il existe déjà une certaine hiérarchie, mais qu'il lui manque certaines virtualités, de ne pas réécrire les classes établies ; l'héritage multiple est fait et les virtualités manquantes sont virtualisées dans une branche parallèle.

 
Urain:

Oui, c'est juste que si les prototypes ont les mêmes fonctions, il est plus logique de faire de l'héritage en cascade.

L'héritage multiple est requis si un ensemble différent de fonctions virtuelles ou de fonctions explicites, et toutes les fonctions virtuelles ou explicites doivent être disponibles dans le descendant.

C'est particulièrement important lorsqu'il existe déjà une certaine hiérarchie mais qu'il lui manque certaines virtualités, pour éviter de réécrire les classes établies, l'héritage multiple est fait et les virtualités manquantes sont virtualisées dans une branche parallèle.

Je ne suis pas complètement satisfait de l'idée, d'après ce que j'ai compris l'héritage multiple est bon pour connecter certaines fonctionnalités de la bibliothèque, tout serait parfait si ce n'était pas pour le modèle.
 
220Volt:
Qu'est-ce qui ne va pas avec cette entrée ? C'est ce qu'on appelle l'héritage multiple.

Vous pouvez l'appeler comme vous voulez, mais vous devez toujours négocier avec le compilateur.

et il semble que le seul accord soit de définir Fn en Q2

 

Bon après-midi.

Comment puis-je sélectionner le volume des positions ouvertes pour tous les symboles à la fois ?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - Cette fonction ne produit que le résultat pour chaque symbole individuellement.

 
abeiks:

Bon après-midi.

Comment puis-je sélectionner le volume des positions ouvertes pour tous les symboles à la fois ?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - Cette fonction ne produit que le résultat pour chaque symbole individuellement.

Je passais en boucle tous les symboles, et je résumais. A peu près comme ça :

double volume = 0;
for(int counter = PositionsTotal();  counter > 0;  counter --)
{
   if( PositionSelect(PositionGetSymbol(counter)) )
      volume += PositionGetDouble(POSITION_VOLUME);
}
Je n'ai pas vérifié l'exactitude (je n'ai pas compilé du tout).
 
220Volt:

Je passais en revue tous les personnages et je résumais. Comme ça :

Je n'ai pas vérifié son exactitude (je ne l'ai pas du tout compilé).

Je pensais qu'il pourrait y avoir quelque chose comme AccountInfoDouble(ACCOUNT_BALANCE) uniquement par les positions ouvertes. Mais je vois que je vais devoir passer en revue tous les personnages. Merci.

 

Je n'arrive pas à comprendre pourquoi la fonction Print imprime 0 au lieu de 40 ?

//+------------------------------------------------------------------+
//|                                               test_deviation.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
CTrade trade;
trade.SetDeviationInPoints(40);
Print(trade.RequestDeviation());
  }
//+------------------------------------------------------------------+