初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1066

 
yiduwi:

谢谢你。

伊戈尔-马卡 努:...应该只把箭头放在满足条件的地方...

然而,它把它放在第二条上。


检查指示器缓冲器 的分度方向。

 
Artyom Trishkin:

检查指示器缓冲器 的分度方向。

要检查什么,这段代码应该把箭头放在哪个栏上?

 {
//---
   int limit=rates_total-prev_calculated;
   if(limit>1 || prev_calculated==0)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      if(fabs(high[i+1]-high[i])<=_Point*(double)Pips) BufferDN[i]=high[i]; else BufferDN[i]=EMPTY_VALUE;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 
yiduwi:

我应该检查什么,这段代码应该把箭头放在哪个栏上?

BufferUP和BufferDN的索引是什么?

Документация по MQL5: Операции с массивами / ArraySetAsSeries
Документация по MQL5: Операции с массивами / ArraySetAsSeries
  • www.mql5.com
//| Custom indicator initialization function                         | //| Custom indicator iteration function                              |
 
Artyom Trishkin:

BufferUP和BufferDN的索引是什么?

反过来做了。

 for(int i=0;i<limit;i++) 

仍然把它放在第二条杠上。

 
yiduwi:

反过来做了。

仍然把它放在第二条杠上。

所有数组必须在同一方向上

 
Artyom Trishkin:

所有数组必须在同一方向上

那么第一个选项是正确的,有什么问题?

 
yiduwi:

那么第一个选项是正确的,有什么问题?

问题是,你无法看到指标的完整列表

 
yiduwi:

这样就把它像这样放在了第一根柱子上,但箭头并没有实时出现,只是在切换f后才出现。有什么问题吗?

在OnInit()中,BufferUP和BufferDN的ArraySetAsSeries(),在OnCalculate()中,High和low的ArraySetAsSeries()。

如果(limit>1)

{

}

不需要prev_calculated==0

 
Artyom Trishkin:

在OnInit()中,BufferUP和BufferDN的ArraySetAsSeries(),在OnCalculate()中,High和Low的ArraySetAsSeries()

谢谢。

 

代码有什么问题?试图抓住测试的终点

void MyHistory()
  {
//--- select history for access
//HistorySelect(0,TimeCurrent());
   HistorySelect(0,TimeTradeServer());
//---
   int    orders=HistoryDealsTotal();  // total history deals
   int    losses=0;                    // number of losses orders without a break

   for(int i=orders-1;i>=0;i--)
     {
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
        {
         Print("HistoryDealGetTicket failed, no trade history");
         break;
        }
      //--- check symbol
      if(HistoryDealGetString(ticket,DEAL_SYMBOL)==_Symbol)
         continue;
      //--- check profit
      string   deal_comment=HistoryDealGetString(ticket,DEAL_COMMENT);

      if(deal_comment=="end of test")
        {
         Print("!!!!!!!!!!!!!!!  END TEST !!!!!!!!!!!!!!!!");
         break;
        }
/*
         if(deal_comment!="end of test")
            {
            return;
            }
            */
     }
//---

   return;

  }