从一个文件中自动初始化和重新初始化EA - 页 7

 
Fry_Антон:

我明白了。

具体内容:明天我将思考如何在FORTS上飞快地抓住一个位置。事实上,我最需要的是知道一个已经清仓(以清仓价重新开仓)的头寸的真实开仓价。

FORTS的头寸是由一个(或多个)订单的交易总和获得的。清算时有一个没有票据的技术性交易,我们需要想办法确定清算前的POSITION_PRICE_OPEN价格。

它可以被存储。只决定于一生。例如,要忘记EA是否退出市场(没有头寸)。
 
Dmitry Fedoseev:

很明显,如果。

你必须继续凿开。但至少不要阻止专家。也许不那么明目张胆地凿,随着错误数量的增加,增加尝试之间的停顿。最简单的解决方案是尝试几次,然后暂停,直到下一栏打开。

交易所对超过2,000笔交易的处罚情况如何?假设我有50个EA,2,000个交易已经过去。接下来我应该怎么做,收到交易所的货币处罚?
 
Fry_Антон:

我明白了。

具体内容:明天我将思考如何在FORTS上飞快地抓住一个位置。事实上,我最需要的是知道已经清仓(以清仓价重新开仓)的实际开仓价格。

FORTS的头寸是由一个(或多个)订单的交易总和获得的。清算时有一个没有票据的技术性交易,我们需要想办法确定清算前的POSITION_PRICE_OPEN价格。

//+------------------------------------------------------------------+
//| Expert Get position price function                               |
//+------------------------------------------------------------------+
double GetPositionPrice( const string aSymbol )
{
  double price_in = 0;
  double volume_in = 0;
  
  if ( PositionSelect( aSymbol ) )
  {
    ulong pos_id = ulong( PositionGetInteger( POSITION_IDENTIFIER ) );
    
    if ( pos_id > 0 )
    {
      if ( HistorySelectByPosition( pos_id ) )
      {
        int deals = HistoryDealsTotal();
      
        for( int i = 0; i < deals; i++ )
        {
          ulong deal_ticket = HistoryDealGetTicket( i );
          ulong order_ticket = ulong( HistoryDealGetInteger( deal_ticket, DEAL_ORDER ) );
        
          if ( order_ticket > 0 )
          {
            ENUM_DEAL_ENTRY deal_entry = ENUM_DEAL_ENTRY( HistoryDealGetInteger( deal_ticket, DEAL_ENTRY ) );
              
            if ( deal_entry == DEAL_ENTRY_IN )
            {
              double price = HistoryDealGetDouble( deal_ticket, DEAL_PRICE );
              double volume = HistoryDealGetDouble( deal_ticket, DEAL_VOLUME );
                                
              price_in += price * volume;
              volume_in += volume;  
            }
          }
        }
        if ( volume_in > 0 ) return( NormalizeDouble( price_in / volume_in, _Digits ) );
      }
      else
      {
        Print( "GetPositionPrice: Невозможно получить историю позиции по символу ", aSymbol );
      }
    }
    else
    {
      Print( "GetPositionPrice: Невозможно определить идентификатор позиции по символу ", aSymbol );
    }
  }
  return( 0 );
}
 
Михаил:

很好!我明天就把它栓上。

你为我节省了大量的时间。谢谢。(笑)。

 
Fry_Антон:

很好!我明天会把它附上。

你为我节省了大量的时间。谢谢你。

备忘录。

此功能仅适用于进场交易!

(即没有减少职位)。

如果你需要这两样东西,那么就添加到DEAL_ENTRY_OUT 函数中。

 
Михаил:

备忘录。

此功能仅适用于进场交易!

(即职位不减少)

如果你需要这两样东西,那么在DEAL_ENTRY_OUT 函数中加入

我马上就明白了。这里重要的是原则本身:它是通过历史中的ID进行搜索,它基本上是对上述问题的完整答案。


坦率地说,我不明白开发者的逻辑,为什么他们决定以如此 "笨拙 "的方式设计一个清晰的技术交易。

无论是图表上的图形对象,还是历史上的头寸属性,以及未平仓头寸的属性(盈利能力)--一切都在误导,不仅是对EA中的简单代码,而且对任何一般的交易者。

 
kond777:
那么交易所对超过2,000笔交易的罚款又是怎么回事呢?假设我有50个EA,2 000个交易已经过去。我接下来该怎么做,收到交易所的货币罚款?

你不会知道你问题的答案。

为了不收到罚款,有必要停止专家的工作(你和我很早就讨论过这个问题)。

如果我们创造奇迹的人说有必要停止,他就承认自己是

承认自己是.....,他对编程一窍不通

股票交易 专家....

 
Михаил:

你不会知道你问题的答案。

为了不收到罚款,有必要停止专家的工作(你和我很早就讨论过这个问题)。

如果我们创造奇迹的人说有必要停止,他就承认自己是

承认自己是.....,他对编程一窍不通

股票交易 的专家顾问....

在我看来,德米特里-费多谢夫 给人的印象是一个知识渊博的人,我相信他可能会提供一个解决这个问题的办法。
 
Михаил:

是的,因为你在建议一个人什么是对MT4有好处的,而在MT5中完全是 "徒劳的"!你的建议是什么?

从你的信息中可以看出,你不知道MT5是如何工作的。

而且,专家编程原则是否可耻,也不是由你来判断的!

我根本不认为你是一个权威,而是一个厚脸皮的、狂妄的男孩!

你吃醋了吗?这也是对的,做一只年轻的小狗比做一只老的天堂鸟更好。
 
Алексей Тарабанов:
妒忌?你是对的--做一只年轻的小狗比做一只老的天堂鸟更好。
水坑里有更多的气体...