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

 
mario065:

你好。

当然不是。

如果有几只火鸡,你必须为每只火鸡做同样多的配对,因为它吃了。

一个处理程序可以使用所有的对。

一个一个地使用句柄,即复制指标缓冲区,然后将下一个指标的值分配给句柄。

但我不明白,既然手柄是基本的整数,对资源几乎没有影响,为什么还要保存?

 
Reshetov:

逐个使用句柄,即复制指标缓冲区,然后将下一个指标的值分配给句柄。

但我不明白,既然手柄是基本的整数,对资源几乎没有影响,为什么还要保存?

你们好。

去年我写了一个这样的外部函数

void CalculatePairs(string dSymbol) {

   atrHandle1=iATR(dSymbol, TimeFrame1, ATRPeriod);
   atrHandle2=iATR(dSymbol, TimeFrame5, ATRPeriod);
   atrHandle3=iATR(dSymbol, TimeFrame15, ATRPeriod);
   atrHandle4=iATR(dSymbol, TimeFrame30, ATRPeriod);
   atrHandle5=iATR(dSymbol, TimeFrame60, ATRPeriod);
   muvHandle1=iMA(dSymbol,TimeFrame1,MAPeriod,0,MAMethod,InpPr);
   muvHandle2=iMA(dSymbol,TimeFrame5,MAPeriod,0,MAMethod,InpPr);
   muvHandle3=iMA(dSymbol,TimeFrame15,MAPeriod,0,MAMethod,InpPr);
   muvHandle4=iMA(dSymbol,TimeFrame30,MAPeriod,0,MAMethod,InpPr);
   muvHandle5=iMA(dSymbol,TimeFrame60,MAPeriod,0,MAMethod,InpPr);
   if(atrHandle1<0 || atrHandle2<0 || atrHandle3<0 || atrHandle4<0 || atrHandle5<0 ||
   muvHandle1<0 || muvHandle2<0 || muvHandle3<0 || muvHandle4<0 || muvHandle5<0 )
     {
      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
     }

   double ma1[],ma2[],ma3[],ma4[],ma5[];
   double atr1[],atr2[],atr3[],atr4[],atr5[];

   ArraySetAsSeries(ma1, true);ArraySetAsSeries(ma2, true);ArraySetAsSeries(ma3, true);
   ArraySetAsSeries(ma4, true);ArraySetAsSeries(ma5, true);
   ArraySetAsSeries(atr1, true);ArraySetAsSeries(atr2, true);ArraySetAsSeries(atr3, true);
   ArraySetAsSeries(atr4, true);ArraySetAsSeries(atr5, true);

   if (NormalizeDouble(CopyBuffer(muvHandle1,0,0,1,ma1),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle2,0,0,1,ma2),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle3,0,0,1,ma3),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle4,0,0,1,ma4),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle5,0,0,1,ma5),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle1,0,0,1,atr1),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle2,0,0,1,atr2),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle3,0,0,1,atr3),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle4,0,0,1,atr4),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle5,0,0,1,atr5),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}

   Result = 0;
}
double FGroup(){
      CalculatePairs(Currency1);{
         Pair1 = Result;}

当然,在进行计算之前,它出现了4806的错误,但后来工作正常。

今天我打开这个代码,想知道是否有其他方法。

错误就是错误。

对于8个货币对和5个时间段,我应该得到多少个手数?

这不是一个关于资源的问题,我必须做得更好。

Документация по MQL5: Основы языка / Функции / Описание внешних функций
Документация по MQL5: Основы языка / Функции / Описание внешних функций
  • www.mql5.com
Основы языка / Функции / Описание внешних функций - Документация по MQL5
 
mario065:

你们好。

去年我写了一个这样的外部函数

当然,在它进行计算之前,它出现了4806的错误,但随后它就正常工作了。

我今天打开这个代码,想知道是否有其他方法。

  1. 什么的方式?
  2. 为什么我需要CalculatePairs()函数,如果它除了显示错误之外什么都没有?

从你的代码中删除这个功能,然后好好睡觉。

 
Reshetov:
  1. 什么的方式?
  2. 如果CalculatePairs()函数只产生错误,你为什么还要用它呢?

从你的代码中删除这个功能,然后好好睡觉。

有一些 "伟大 "的计算方法没有显示出来。

然后,其他函数将所选的对子拿出来,再做一些事情。

这个方法很简单。

比如说。

我们做一个指标的手柄,它没有符号,没有时间框架。

当我们创建一个CopyBuffer 我们表明时间框架和配对。

比如说。

int OnInit()

它看起来像这样: Handle = 指标名称

空白的OnTick()

它看起来像这样:CopyBuffer(指定符号,时间框架,复制自,复制多少,复制到哪里)

这只是与你的一次对话:)。

 
mario065:

有一些 "伟大 "的计算方法还没有被展示出来。

我明白了,你把ArraySetSeries()应用于没有数据的数组,即在信息加载到数组之前,而你需要在复制缓冲区后使用它。
 
Reshetov:
我明白了,你把ArraySetSeries()应用于没有数据的数组,即在信息加载到数组之前,而这应该是在复制缓冲区之后进行。

正是如此。

但我认为,如果在CopyBuffer 中完成,对每个人来说都会更容易,也就是说,你在那里指定哪一对和哪一帧。

该指标本身也进行同样的计算,只要它指定哪一对和哪一帧。

如果MT5的架构本身允许更容易做到这一点。

好主意 :) 。

 
Reshetov:
我明白了,你把ArraySetSeries()应用于没有数据的数组,即在信息加载到数组之前,而你希望它在复制缓冲区之后。
没有区别。
 
我已经配置了一切,签署了一切,在终端进行了设置,但我不想自动交易。当我试图下一个挂单 时,它安装并写给我关于同步和删除终端的所有订单,然后我看到供应商的订单。
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin:

如果专家顾问使用MFI,那么它的代码必须包含一个获取该指标手柄的行:"MQL5参考/ 技术指标/ iMFI"。因此,掌握移动平均线指标的方法在这里描述:"MQL5参考 指南/技术指标/ iMA"。

还可以尝试阅读"MQL5中的指标"一文。

我已经读了这篇文章。然而,它没有回答我的问题 "我如何删除位于MFI指标窗口和注册条形收盘价的iMA手柄?"。

你提到的iMA手柄并不适用于位于指标窗口的iMA。通过标准方法描述,顾问从图表中移除iMA手柄。
 
Leser: 阅读这篇文章。然而,它没有回答我的问题 "我如何删除位于MFI指标窗口中的iMA手柄,并注册条形收盘价?"

你最初对问题的概述如下。"专家顾问使用MFI;马云不在图表上(窗口#1),而是在有MFI指标的窗口(窗口#2)"。我回答说:"如果您的专家顾问使用MFI,那么它的代码中必须包含一行,并获得该指标的处理:"MQL5参考指南/技术指标/iMFI"

因此,我建议首先弄清楚你的专家顾问到底是如何从 "2号窗口 "获得指标处理的。我们会在那里想出一些办法。

Leser : 我已经读了这篇文章。然而,这并没有回答我的问题"。位于MFI指标窗口中的iMA,并注册酒吧收盘价"。
一个澄清的问题:你根据什么数据建立MA指标:根据MFI指标的值还是根据条形收盘价?以前没有人说过 "登记酒吧的收盘价"。这就是为什么我提供了一个 "从指标看指标 "的文章链接。
原因: