Çaydanlıktan gelen sorular - sayfa 181

 

Yardım, hiçbir yerde bulamadım.

Birkaç alım satım işleminden sonra bir Uzman Danışmandan bir pozisyon açmanın ağırlıklı ortalama fiyatını nasıl öğrenebilirim? CPositionInfo'dan PriceOpen () , ilk işlemin TP'sini gösterirken, birkaç işlemden sonra elde edilen mevcut işlem gereklidir.

Документация по 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();
Buradaki fikir, işlevselliğine ihtiyacımız olan bir sınıf olduğudur (bağlantılı liste Parent2). Bu sınıfı başka bir hiyerarşide (birden çok kalıtım kullanarak) bağlamak istiyorum. Ayrıca, bu hiyerarşinin temel sınıfında, bu kitaplık işlevlerini çağırmak için aynı adı taşıyan (kütüphane sınıfındakiyle aynı) sanal işlevleri tanımlayın. Kitaplık sınıfı bir şablon olduğundan, bu nedenle çıktı türünü (çoklu kalıtımdan sonra) bilmiyoruz (birçok var ve farklılar). Ama hepsi gerçekçi değil.
 
sergeev :

ilgi muhtemelen tamamen akademik

C++' da Q3 nasıl yapılır: public Q1, public Q2

ve aynı zamanda derleyicinin ondan ne istediğini anlaması için.

Bu girişte yanlış olan ne? Buna çoklu kalıtım denir.
 
220Volt :
Bu girişin nesi var? Buna çoklu kalıtım denir.

Evet, her şey böyle, sadece prototipler aynı işlevlere sahipse, kaskad kalıtım yapmak daha mantıklı.

Farklı bir sanal veya açık işlev kümesi varsa çoklu devralma gerekir ve tüm sanal veya açık işlevler alt öğede mevcut olmalıdır.

bu özellikle zaten belirli bir hiyerarşi olduğunda önemlidir, ancak bazı sanal makinelerden yoksundur, kurulan sınıfları yeniden yazmamak için çoklu kalıtım yapılır ve eksik olanlar paralel dalda sanallaştırılır.

 
Urain :

Evet, her şey böyle, sadece prototipler aynı işlevlere sahipse, kaskad kalıtım yapmak daha mantıklı.

Farklı bir sanal veya açık işlev kümesi varsa çoklu devralma gerekir ve tüm sanal veya açık işlevler alt öğede mevcut olmalıdır.

bu özellikle zaten belirli bir hiyerarşi olduğunda önemlidir, ancak bazı sanal makinelerden yoksundur, kurulan sınıfları yeniden yazmamak için çoklu kalıtım yapılır ve eksik olanlar paralel dalda sanallaştırılır.

Bu fikirden tamamen memnun değildim, anladığım kadarıyla çoklu kalıtım, herhangi bir kitaplık işlevselliğini bağlamak için iyidir, şablon için olmasaydı her şey harika olurdu.
 
220Volt :
Bu girişin nesi var? Buna çoklu kalıtım denir.

ne istersen onu söyle, ama yine de derleyici ile anlaşman gerekiyor.

ve tek sözleşme Fn'yi Q2'de tanımlamak gibi görünüyor

 

İyi günler .

Tüm semboller için aynı anda açık pozisyonların hacmi nasıl seçilir?       

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble( POSITION_VOLUME ) - Bu fonksiyon sadece her karakter için ayrı ayrı sonuç verir.

 
abeiks :

İyi günler .

Tüm semboller için aynı anda açık pozisyonların hacmi nasıl seçilir?       

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble( POSITION_VOLUME ) - Bu fonksiyon sadece her karakter için ayrı ayrı sonuç verir.

Tüm karakterleri bir döngü içinde inceler ve özetlerdim. Aşağı yukarı şöyle:

 double volume = 0 ;
for ( int counter = PositionsTotal ();  counter > 0 ;  counter --)
{
   if ( PositionSelect ( PositionGetSymbol (counter)) )
      volume += PositionGetDouble ( POSITION_VOLUME );
}
Doğruluğu kontrol etmedi (hiç derlemedi).
 
220Volt :

Tüm karakterleri bir döngü içinde inceler ve özetlerdim. Aşağı yukarı şöyle:

Doğruluğu kontrol etmedi (hiç derlemedi).

Sadece açık pozisyonlar için AccountInfoDouble(ACCOUNT_BALANCE) gibi bir şey olabileceğini düşündüm. Ama tüm karakterleri bir döngü içinde sıralamam gerekecek. Teşekkür ederim.

 

Yazdır işlevinin neden 40 yerine 0 yazdırdığını anlayamıyorum?

 //+------------------------------------------------------------------+
//|                                               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());
  }
//+------------------------------------------------------------------+