任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 415

 
Link_x:
你好! ,在 "金 "功能中是否有这样的功能,可以计算出最后一笔开仓订单的利润额? 我没有找到,现在我在琢磨一个自制的函数,计算最后一笔开仓订单的利润率。





订单利润()

如果您需要的是最后开出的订单,那么请浏览所有的订单,并选择一个最新的时间,然后使用上述函数,它将返回给您这个订单的净利润。

 
Ekburg:


订单利润()

如果您需要的是最后一个开仓的订单,那么请浏览所有的订单,选择一个最新开仓时间的订单,然后使用上述函数,它将返回给您这个订单的净利润。


我如何及时得到一个答案,就在我找到解决方案的那一刻。:)
Pips_Proffit_Last_Pos = p - PriceOpenLastPos;
但还是要感谢你!
 

Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))

你不是按历史搜索,而是按当前位置搜索,这里有一个逻辑链,在此基础上你可以尝试编写代码。

[与Muwings合作并下订单的街区]

1 .记住门票和所下订单的神奇号码

2 .监测订单数量,如果市场上没有订单(这意味着我们的订单已经被关闭),那么转到第3 点,或者监测这个特定的订单,直到其关闭时间超过零,在这种情况下,我们排除第3第4 点。

3 找到我们的订单

4 找出它是否已关闭

5 查出它是如何被关闭的

6 、如果它通过止损被平仓,则在方向上设置与之不同的另一个订单。


//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern double Lots = 0.1;
extern double TakeProfit = 100;
extern double StopLoss = 100;       
extern double TrailingStop = 50;
extern double Margincutoff = 100;   
extern double MagicNumber = 12345;
extern double TradeSizePercent = 5;
extern int Slippage = 10;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
  int Crossed (double line1, double line2)
  {
  static int last_direction=0;
  static int current_direction=0;
  
  if (line1>line2)current_direction=1;// пересечение вверх
  if (line1<line2)current_direction=2;// пересечение вниз
  
  if (current_direction!=last_direction)//изменения произошли
  {
  last_direction=current_direction;
  return(last_direction);
  }
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    int cnt, ticket, total, totalhistory, memoryticket;
    double shortEMA, longEMA;
    
    if(Bars<100) 
     {
     Print("Bars less than 100");
     return(0);
     }
     shortEMA=iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
     longEMA=iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
     int isCrossed=Crossed(shortEMA, longEMA);
//----
   total=OrdersTotal();
   if(total<1) 
     {
      // нет открытых ордеров
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // проверяем пересечение МА для открытия позиции на покупку
      if(isCrossed==1)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
        //проверяем пересечение МА для открытия позиции на продажу
        if(isCrossed==2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
         return(0); 
        }  
//----начинаем искать закрытые ордера

         //инициализация параметров
  
  int old_order_type;
 
   
  RefreshRates();
  
  //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
  for ( totalhistory = OrdersHistoryTotal() - 1; totalhistory >= 0; totalhistory-- ) 
  {
     if ( OrderSelect(totalhistory, SELECT_BY_TICKET, MODE_HISTORY) && OrderTicket() == memoryticket && OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
     {
         old_order_type = OrderType();
         if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                break; //прекращаем поиск
         }
     }
  }
  //если раньше покупали, то теперь продаем
  if ( old_order_type == OP_BUY )
  {
  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MA",12345,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
 //если раньше продавали, то теперь покупаем
  if ( old_order_type == OP_SELL )
  {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"МА",12345,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
            memoryticket= OrderTicket();// запомнили тикет
            Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
   return(0);
  }
//+------------------------------------------------------------------+
这就是我的情况。它真的打开了3个地段。我真的完蛋了。你能纠正代码吗?怎么了?
 
我已经厌倦了问这些问题(令人难以置信的神经质,pi****,对不起(他妈的变量我找不到(主要是烦人,我自己找不到的东西)))。

哪个变量对当前价格值负责?
我搜索了文档,除了Bid、Ask、POINT_HIGH、POINT_LOW,什么都没有。
这样的变量是否存在?
 
Link_x:
我已经厌倦了问这些问题(令人难以置信的神经质,pi****,对不起(他妈的变量我找不到(主要是烦人,我自己找不到的东西)))。 哪个变量对当前价格值负责? 我搜索了文档,除了Bid、Ask、POINT_HIGH、POINT_LOW,什么都没有。 这样的变量是否存在?




你是否注意到 "市场观察 "窗口中的价格是如何变化的?你可以在那里看到买入和卖出价格。第一个是用来卖的,第二个是用来买的。
 
Link_x:

我如何及时得到答案,就在我找到解决方案的时候。:)
解决办法是:"慢慢问吧"。而且,考虑到你并不总是能得到合格的答案...:)))
 
khorosh:
你是否注意到市场观察窗口中的价格如何变化?在那里你可以看到买入价和卖出价--这些是当前的价格。第一个是用来卖,第二个是用来买。

正是如此!
忘记了这样一件小事!
 
TarasBY:
解决办法是:"不要急着问问题"。而且,考虑到你并不总是能得到合格的答案...:)))
是的,是的。:)
 
Link_x:
这就对了!!!。
忘记了这样一件小事!!。

你回答正确,就像一个真正的学生在考试中一样:你不能说我不知道--你必须说我忘了)))。
 
Link_x:
是的,是的。:)

也许你应该试着回答别人的问题,而不是问自己的问题。效益要大得多(在一定程度上),当然对自己的好处也是如此
原因: