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

 
ascerdfg:
是否有可能。

用来代替。

为什么不呢?当然,你可以。

 
double Open[3];

int Ind_Handle;

int OnInit()
  {
      Ind_Handle=iCustom(_Symbol,_Period,"Pop"); // Pop.ex5
      if(Ind_Handle==INVALID_HANDLE)
        {
         Print(" Не удалось получить хендл индикатора");
         return(INIT_FAILED);
        }
   
   return(INIT_SUCCEEDED);
  }


void OnTick()
  {
 
      CopyBuffer(Ind_Handle,0,1,1,Open);
      Print("Open0 ",Open[0]);
  }

打印:"Open0 1.797693134862316e+308"。

虽然我已经改变了指标缓冲区 单元号和索引。

我可以肯定的是,指标中有一个整数。为什么会打印成这样?

 
ascerdfg:

打印:"Open0 1.797693134862316e+308"。

虽然我已经改变了指标缓冲区 单元号和索引。

我可以肯定的是,指标中有一个整数。为什么会打印成这样?

要么在数组声明后使ArraySetAsSeries为真,要么声明数组的大小为1
 
void OnTick()
  {
     int i;
     double price=.5;
     double Open[];
      ArraySetAsSeries(Open,true);

      Print("Кол-во ",BarsCalculated(Ind_Handle));
      Print("хэндл ",Ind_Handle);
      CopyBuffer(Ind_Handle,0,0,100,Open);
                 
      
    for(i=0; i<100; i++)
    {
        if(Open[i]!=EMPTY_VALUE)
        {
            price=Open[i];
            break;
        }
    }
           
      Print(price);
  }
不起作用,一直在写0.5。它一直在得到一个最大数量的缓冲区。
 
ascerdfg:
没有帮助,一直在写0.5。事实证明,缓冲区一直是最大的数字。

如果你想得到准确的答案,请正确地提出问题:提供指标的代码和专家顾问的代码。现在还不清楚是什么,是谁,在哪里 :)

 

鲁尔--指标

rrr - 顾问

附加的文件:
Pop.mq5  38 kb
ppp.mq5  4 kb
 
ascerdfg:

Ror - 指标

rrr - EA

重写指标--首先,检查是否有STOP字样,其次,尽可能简化指标--例如,在指标缓冲区 中输入与当前条形图数量相等的数字。

我们得到了什么。array[0]=0.0, array[1]=1.0,以此类推。这将极大地简化理解指标的数据接收过程。第三 - 只留下一个指标缓冲区。

 

你能告诉我如何在这个函数中明确指定更新的符号吗?例如EURUSD.m

//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
 

下午好!

你知道如何为市场建立一个指标吗?

我有一个扩展名为.mq5的文件和一些扩展名为.mqh的包含文件。

据我所知,你不能通过资源把.mqh附加到.mqh文件上,我真的应该把所有东西都手动转换为一个文件吗?

如果有一个新的版本怎么办 :?这很疯狂+)))

谢谢。

 
EgorKim:

你能告诉我如何在这个函数中明确指定更新的符号吗?例如EURUSD.m

一个后续问题:"为什么你需要在这里明确指定符号?

如果你使用这个函数,你必须在OnInit中给m_symbol分配一个符号。

   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();

在这种情况下,如果你在符号 "EURUSD.m "上运行专家顾问,m_symbol将被自动设置为 "EURUSD.m"。