Perguntas de um "boneco" - página 181

 

Ajuda, não consigo encontrar qualquer informação em lado nenhum.

Como posso saber o preço médio ponderado de abertura de uma posição após várias transacções? PriceOpen() da CPositionInfo mostra o preço da primeira transacção, mas preciso do preço actual, obtido após várias transacções.

Документация по 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();
A ideia é que existe uma classe cuja funcionalidade queremos (lista ligada Parent2). Esta classe quero ligar-me noutra hierarquia (utilizando herança múltipla). Depois, na classe base desta hierarquia, definir funções virtuais com o mesmo nome (o mesmo que na classe da biblioteca) para chamar a estas funções da biblioteca. Como uma classe de biblioteca é um modelo, consequentemente, não sabemos o tipo de saída (após herança múltipla) (há muitas e são diferentes). Mas tudo isto parece ser irrealizável.
 
sergeev:

o interesse é provavelmente puramente académico

como fazer Q3 em C++ : público Q1, público Q2

e, ao mesmo tempo, fazer o compilador compreender o que se espera dele.

O que há de errado com esta nota? É chamada herança múltipla.
 
220Volt:
O que há de errado com este posto? A isto chama-se herança múltipla.

Sim, é que se os protótipos têm as mesmas funções, é mais lógico fazer uma herança em cascata.

A herança múltipla é necessária se diferentes conjuntos de funções virtuais ou funções explícitas, e todas as virtudes ou funções explícitas devem estar disponíveis em descendente.

É especialmente importante quando já existe uma certa hierarquia, mas faltam-lhe algumas virtudes, para não reescrever as classes estabelecidas é feita uma herança múltipla e as virtudes em falta são virtualizadas num ramo paralelo.

 
Urain:

Sim, é que se os protótipos têm as mesmas funções, é mais lógico fazer uma herança em cascata.

A herança múltipla é necessária se diferentes conjuntos de funções virtuais ou funções explícitas, e todas as virtudes ou funções explícitas devem estar disponíveis em descendente.

É especialmente importante quando já existe uma certa hierarquia mas faltam-lhe algumas virtudes, para evitar reescrever as classes estabelecidas é feita uma herança múltipla e as virtudes em falta são virtualizadas num ramo paralelo.

Não estou completamente satisfeito com a ideia, na minha opinião a herança múltipla é boa para ligar alguma funcionalidade da biblioteca, tudo estaria bem se não fosse o modelo.
 
220Volt:
O que há de errado com esta entrada? É chamada herança múltipla.

chame-lhe o que quiser, mas ainda precisa de negociar com o compilador.

e parece que o único acordo é definir Fn no segundo trimestre

 

Boa tarde.

Como seleccionar o volume de posições abertas para todos os símbolos ao mesmo tempo?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - Esta função apenas produz o resultado para cada símbolo individualmente.

 
abeiks:

Boa tarde.

Como seleccionar o volume de posições abertas para todos os símbolos ao mesmo tempo?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - Esta função dá um resultado apenas para cada símbolo separadamente.

Eu faria um loop através de todos os símbolos e resumiria. Aproximadamente assim:

double volume = 0;
for(int counter = PositionsTotal();  counter > 0;  counter --)
{
   if( PositionSelect(PositionGetSymbol(counter)) )
      volume += PositionGetDouble(POSITION_VOLUME);
}
Não verificou a exactidão (não compilou de todo).
 
220Volt:

Eu faria um loop através de todos os caracteres e resumiria. Assim:

Não a verifiquei se estava correcta (não a compilei de todo).

Pensei que talvez houvesse algo como AccountInfoDouble(ACCOUNT_BALANCE) apenas por posições abertas. Mas vejo que terei de percorrer todas as personagens. Obrigado.

 

Não consigo perceber porque é que a função Imprimir imprime 0 em vez 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());
  }
//+------------------------------------------------------------------+