mql5语言的特点、微妙之处以及技巧 - 页 206

 
Vladimir Pastushak:
我如何知道历史上某个头寸的获利 和止损?

DEAL_OUT包含这些字段。

 
fxsaber:

DEAL_OUT包含这些字段。

DEAL_ENTRY_OUT? 我到底该如何获得这些字段?

 
Vladimir Pastushak:

DEAL_ENTRY_OUT? 究竟如何获得这些字段?

 
fxsaber:

我们有一个SL和TP为零的开仓,然后我们修改仓位,SL !=0和TP !=0,然后我们手动平仓,不管是用猫头鹰,但不是在采取或停止价格....。

我们如何找到这些水平的SL和TP? 目前没有办法,然后向别人证明该位置被关闭,否则......

符合逻辑的是,看到一个订单/修改头寸 和交易,导致指定的SL和TP的头寸改变......。

 
Vladimir Pastushak:

我们有一个SL和TP为零的开仓,然后我们修改仓位,SL !=0和TP !=0,然后我们手动平仓,不管是用猫头鹰,但不是在采取或停止价格....。

我如何找到这些水平的SL和TP? 目前没有办法,然后向别人证明,该位置被关闭不同......

从终端或投资访问的屏幕截图。

符合逻辑的是,看到一个订单/修改头寸 和交易,导致指定的SL和TP的头寸改变......。

DEAL_SL/DEAL_TP字段。

 
fxsaber:

从终端或投资访问的屏幕截图。

DEAL_SL/DEAL_TP字段。

专家顾问关闭了头寸,它们有SL和TP,但不可能在交易和订单的历史中获得SL和TP。

DEAL_ENTRY_OUT 说那个交易是由EA完成的。

我已经检查了所有的东西,包括订单和交易,没有办法找到一个位置的SL和TP水平,如果位置被关闭,否则......。

 
Vladimir Pastushak:

我已经检查了所有的东西,包括订单和交易,没有办法找到一个仓位的SL和TP水平,如果仓位被关闭的话...。

DEAL_SL/DEAL_TP是一个未来的解决方案。

 

我不知道它是或不是。

结构和类可以包含自己作为一个静态字段。当一个类包含静态字段--指向需要在程序结束时删除的对象的指针时,就可以使用这个方法。例子。

class A
  {
   int               a;
  };

class CRecurs
  {
public:
   int               a;
   static A *        element;
   static CRecurs    s;
                     CRecurs(void) { Print(__FUNCSIG__, " ", EnumToString(CheckPointer(element))); }
                    ~CRecurs(void) { delete element; Print(__FUNCSIG__, " ", EnumToString(CheckPointer(element)));  }
  };
static A* CRecurs::element = new A;
static CRecurs CRecurs::s;

void OnStart() {}

结果。

CRecurs::CRecurs() POINTER_DYNAMIC
CRecurs::~CRecurs() POINTER_INVALID

(CRecurs可以被声明为结构体,结果相同)。

你也可以创建一个静态方法,返回对其自身类的引用(即这个静态字段)。

 
mktr8591:

我不知道它是或不是。

结构和类可以包含自己作为一个静态字段。当一个类包含静态字段--指向需要在程序结束时删除的对象的指针时,就可以使用这个方法。例子。

结果。

(CRecurs可以被声明为结构体,结果相同)。

你也可以创建一个静态方法,返回对其自身类的引用(即这个静态字段)。

静态字段/方法与全局(::)的区别仅在于范围。

 
fxsaber:

静态字段/方法与全局(::)的区别仅在于范围。

是的。


生活中的例子--在虚拟库VIRTUAL类中包含静态的const VIRTUAL_DELETE VirtualDelete。

它可以被静态常量VIRTUAL static_Virtual取代。

(当然也可以把析构器移到VIRTUAL).