Preguntas de un "tonto" - página 181

 

Ayuda, no encuentro información en ningún sitio.

¿Cómo puedo averiguar el precio medio ponderado de apertura de una posición después de varias operaciones? PriceOpen() de CPositionInfo muestra el precio de la primera operación, pero necesito el precio actual, obtenido tras varias operaciones.

Документация по 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();
La idea es que hay una clase cuya funcionalidad queremos (lista enlazada Parent2). Esta clase quiero conectarla en alguna otra jerarquía (usando herencia múltiple). Luego, en la clase base de esta jerarquía, defina funciones virtuales del mismo nombre (el mismo que en la clase de la biblioteca) para llamar a estas funciones de la biblioteca. Como una clase de biblioteca es una plantilla, en consecuencia, no sabemos el tipo de salida (después de la herencia múltiple) (hay muchos y son diferentes). Pero todo parece irrealizable.
 
sergeev:

el interés es probablemente puramente académico

cómo hacer Q3 en C++ : public Q1, public Q2

y al mismo tiempo hacer que el compilador entienda lo que se espera de él.

¿Qué hay de malo en esta nota? Se llama herencia múltiple.
 
220Volt:
¿Qué hay de malo en este puesto? Esto se llama herencia múltiple.

Sí, es que si los prototipos tienen las mismas funciones, es más lógico hacer herencia en cascada.

La herencia múltiple es necesaria si hay un conjunto diferente de funciones virtuales o explícitas, y todas las virtuales o explícitas deben estar disponibles en el descendiente.

Es especialmente importante cuando ya existe una determinada jerarquía, pero le faltan algunos virtuales, para no reescribir las clases establecidas se hace una herencia múltiple y los virtuales que faltan se virtualizan en una rama paralela.

 
Urain:

Sí, es que si los prototipos tienen las mismas funciones, es más lógico hacer herencia en cascada.

La herencia múltiple es necesaria si se trata de un conjunto diferente de funciones virtuales o explícitas, y todas las virtuales o explícitas deben estar disponibles en la descendencia.

Es especialmente importante cuando ya existe una determinada jerarquía pero le faltan algunos virtuales, para evitar reescribir las clases establecidas se hace una herencia múltiple y los virtuales que faltan se virtualizan en una rama paralela.

No estoy completamente satisfecho con la idea, a mi entender la herencia múltiple es buena para conectar algunas funcionalidades de la biblioteca, todo estaría bien si no fuera por la plantilla.
 
220Volt:
¿Qué pasa con esta entrada? Se llama herencia múltiple.

llámalo como quieras, pero aún tienes que negociar con el compilador.

y parece que el único acuerdo es definir Fn en Q2

 

Buenas tardes.

¿Cómo puedo seleccionar el volumen de posiciones abiertas para todos los símbolos a la vez?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - Esta función sólo emite el resultado para cada símbolo individualmente.

 
abeiks:

Buenas tardes.

¿Cómo puedo seleccionar el volumen de posiciones abiertas para todos los símbolos a la vez?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - Esta función da un resultado sólo para cada símbolo por separado.

Yo haría un bucle a través de todos los símbolos y resumiría. Aproximadamente así:

double volume = 0;
for(int counter = PositionsTotal();  counter > 0;  counter --)
{
   if( PositionSelect(PositionGetSymbol(counter)) )
      volume += PositionGetDouble(POSITION_VOLUME);
}
No se ha comprobado la corrección (no se ha compilado en absoluto).
 
220Volt:

Yo haría un bucle con todos los personajes y resumiría. Así:

No he comprobado que sea correcto (no lo he compilado en absoluto).

Pensé que podría haber algo como AccountInfoDouble(ACCOUNT_BALANCE) sólo por posiciones abiertas. Pero veo que tendré que hacer un bucle con todos los personajes. Gracias.

 

No puedo entender por qué la función Imprimir imprime 0 en lugar 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());
  }
//+------------------------------------------------------------------+