来自一个 "傻瓜 "的问题 - 页 181

 

帮助,我在任何地方都找不到任何信息。

我如何才能在几次交易后找出头寸的加权平均开盘价?CPositionInfo PriceOpen() 显示的是第一笔交易的价格,但我需要的是几笔交易后得到的当前价格。

Документация по 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();
我们的想法是,有一个类的功能是我们想要的(链接列表Parent2)。我想把这个类连接到其他的层次结构中(使用多重继承)。然后,在这个层次的基类中,定义同名的虚拟函数(与库类中的相同)来调用这些库函数。由于库类是一个模板,因此,我们不知道输出类型(经过多次继承)(有很多,而且是不同的)。但这一切似乎都是无法实现的。
 
sergeev:

兴趣可能是纯学术性的

如何在C++ 中制作Q3:公共Q1,公共Q2

并同时使编译器理解对它的期望。

这张纸条有什么问题?这就是所谓的多重继承。
 
220Volt:
这个帖子有什么问题?这就是所谓的多重继承。

是的,只是如果原型有相同的功能,做级联继承更符合逻辑。

如果有不同的虚拟函数 或显性函数集,就需要多重继承,而且所有的虚拟函数或显性函数必须在子代中可用。

当已经有了一定的层次结构,但它缺乏一些美德时,尤其重要的是,不要重写已建立的类多继承,并在一个平行分支中虚拟出所缺的美德。

 
Urain:

是的,只是如果原型有相同的功能,做级联继承更符合逻辑。

如果有不同的虚拟函数 或显性函数集,就需要多重继承,而且所有的虚拟函数或显性函数必须在子代中可用。

当已经有了一定的层次结构,但它缺乏一些美德时,这一点尤其重要,为了避免重写已建立的类,可以进行多重继承,并在一个平行分支中虚拟出缺失的美德。

我对这个想法并不完全满意,在我的理解中,多重继承有利于插入一些库的功能,如果没有模板,一切都会很好。
 
220Volt:
这个条目有什么问题?这就是所谓的多重继承。

你想怎么叫就怎么叫,但你仍然需要与编译器协商。

而且似乎唯一的协议是在Q2中定义Fn

 

下午好

如何一次选择所有符号的开仓量?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - 这个函数只对每个符号单独输出结果。

 
abeiks:

下午好

如何一次选择所有符号的开仓量?

if(PositionSelect(Symbol_)) open_volume = PositionGetDouble(POSITION_VOLUME) - 这个函数只对每个符号单独输出结果。

我将循环浏览所有符号并进行总结。大约是这样的。

double volume = 0;
for(int counter = PositionsTotal();  counter > 0;  counter --)
{
   if( PositionSelect(PositionGetSymbol(counter)) )
      volume += PositionGetDouble(POSITION_VOLUME);
}
没有检查正确性(根本就没有编译)。
 
220Volt:

我将循环浏览所有的人物并进行总结。像这样。

我没有检查过它的正确性(我根本没有编译过它)。

我想可能会有类似于AccountInfoDouble(ACCOUNT_BALANCE)的东西,只按未结头寸 计算。但我看到我将不得不循环浏览所有的字符。谢谢。

 

我搞不清楚为什么打印函数打印的是 0而不是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());
  }
//+------------------------------------------------------------------+