【问题标题】:How to get a profit of Nth open position MQL4 / MT4?如何获得第 N 个未平仓 MQL4 / MT4 的利润?
【发布时间】:2021-02-21 16:28:03
【问题描述】:

我想创建一个可以获取随机利润的函数。
例如:

  • 总头寸最后2个未平仓头寸的利润

  • 总仓位前 3 个未平仓头寸的利润

下面的函数似乎只获得第一个未平仓头寸利润:

double BuyProfit()
{
   Price = 0;
   datetime EarliestOrder = TimeCurrent();

   for(int i = 0; i < OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS))
      {
         if(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
            if(EarliestOrder > OrderOpenTime())
            {
               EarliestOrder = OrderOpenTime();
               Price = OrderProfit()+OrderSwap()+OrderCommission();
            }
         }
      }
   }
   return Price;
}

【问题讨论】:

    标签: mql4 trading algorithmic-trading metatrader4 forex


    【解决方案1】:

    Q : “如何从 MQL4/MT4 中获得第 N 个未平仓头寸的利润?
    我想创建一个可以随机获得未平仓头寸的函数。"

    您可以使用这个快速原型来完成您的实际逻辑代码:

    double nthNetPROFIT( const int Nth ) {
           
           if ( Nth > OrdersTotal() ) return( EMPTY );
           
           int    softCount    = 0;
           double nthNetProfit = EMPTY;,
    
           for( int ii = 0; ii < OrdersTotal(); ii++ ) {
                if (        OrderSelect( ii, SELECT_BY_POS ) ) {
                      if (  OrderType()        == OP_BUY          // DEPENDS ON ACTUAL LOGIC
                         && OrderSymbol()      == Symbol()        // DEPENDS ON ACTUAL LOGIC
                         && OrderMagicNumber() == MagicNumber     // DEPENDS ON ACTUAL LOGIC
                            ) {
                            ...                                   // DEPENDS ON ACTUAL LOGIC
                            if ( ++softCount == Nth ){
                            nthNetProfit = OrderProfit()
                                         + OrderSwap()
                                         + OrderCommission();
                            break;
                      }
                }
           }
           return( NormalizeDouble( nthNetProfit, 2 ) );
    }
    

    【讨论】:

    • 总是欢迎,@Roller - 很高兴看到你认为答案很有帮助 - StackOverflow 鼓励社区成员说这些感谢,而不是通过点击 UpVote (分数上方的一个小三角形 - 如果你 hoover鼠标光标在这个 UpVote 三角形上方的一小段时间,就会出现图例,说 “这个答案很有用” )因为这也有助于其他社区成员寻求和导航到已经对其他成员有帮助的答案 - 所以不要犹豫以 StackOverflow 方式进行
    猜你喜欢
    • 2023-02-12
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多