新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 132

 
人。请帮助。我的问题是这样的。我正在做一个基于MACD指标 的EA。实际上,有两个条件是开放的,有两个条件是关闭的。买入的第一个条件是:信号大于0,MACD大于0,第一条小于第二条,第二条大于第三条。第二个条件:信号小于0,MACD小于0,第一个柱子小于第二个,第二个小于第一个。但有一个但....这些条件完全复制了交易的条件,以完成销售。如何将它们分开?请告知。我有一个想法,那就是直方图上的峰值是重复的,但是,我又该如何描述这个峰值已经出现了?如何在EA中创造这样的记忆?
 

大家好,我正在写一个EA。实质是这样的--打开两个不同方向的止损单,当其中一个触发时,第二个被删除,但在测试者中只删除了买入单,当试图删除sellstop时,出现了4108错误的票据。请帮助我理解这一点。插入了一个删除订单的函数。

提前感谢!!。

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

问候。请告知如何从该指标中获取数据。

需要红色和蓝色图标的数据。在没有画图的时候,各自的缓冲区里有一些天文数字的数值。我把它们限制在10000的数量上。似乎是在工作,但有跳过的信号。如何解决这个问题?下面是我如何搞砸的。

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0) 。
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0) 。
如果(PriceHigh1<10000)PriceHigh=PriceHigh1;否则PriceHigh=0。
如果(PriceLow1<10000)PriceLow=PriceLow1;否则PriceLow=0。
附加的文件:
 
Andrey Sokolov:

问候。你能告诉我如何从指标中获得正确的数据吗?

我需要红色和蓝色图标的数据。在没有绘图的时候,各自的缓冲区里有一些天文数字。我把它们限制在10000的数量上。它似乎在工作,但有跳过的信号。如何解决这个问题?以下是我如何搞砸的。

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0) 。
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0) 。
如果(PriceHigh1<10000)PriceHigh=PriceHigh1;否则PriceHigh=0。
如果(PriceLow1<10000)PriceLow=PriceLow1;否则PriceLow=0。

我没有研究过代码,但我可以假设这将有所帮助。我可能是错的。

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

没有研究代码,但我可以假设它将会有帮助。我可能是错的。

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
谢谢你没有通过,但这并没有帮助。
 
Andrey Sokolov:
谢谢你没有通过,但这并没有帮助。
也可以尝试与EMPTY_VALUE 进行比较,因为有 "天文数字 "的值。
 
ArraySearchDouble()和EquationDirect()在旧版本的mql 4.X中的应用。新版本是否有任何类似的东西。
 
27311065:
ArraySearchDouble()和EquationDirect()在旧版本的mql 4.X中的应用。而新版本有任何类似的东西。
你在哪里看到过他们在旧版本中的表现?这些都是自行编写的函数。不是吗?
 
谢谢你的提示
 

请告知如何最好地处理数据--给定一个数字系列,它将根据计算结果被分成若干子组,这些子组应存储在一个数组中,此外,每组将有两个或更多的指标(一组数字分别属于计算的数字)。数据应如下所示

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

以此类推

原因: