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

 
Vladimir Baskakov:

谢谢你,它起作用了,只有一个条件得到满足。

而我需要

由于某种原因,它没有打开一个位置。

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
int barfrdn_1 = GetLastFractals(1,MODE_LOWER);
int barfrdn_2 = GetLastFractals(barfrdn_1+1,MODE_LOWER);

if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] < Low[barfrdn_2] )
if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] > Low[barfrdn_2] )
 
Igor Makanu:

它是有效的,但它开仓,不受条件限制,想在哪里开就在哪里开,好吧

 
Vladimir Baskakov:

它可以工作,但开仓,不按条件,想在哪里开就在哪里开,好的。

不可能,我的代码很简单,像ZigZag一样,分形只在循环中带有箭头的条上有数值,在箭头出现之前寻找指标值,然后退出循环,返回分形条数。

我刚刚做了一个分形的专家顾问--代码已经检查过了,在测试过程中发现第1条的分形可能会过度绘制--打开测试器的可视化模式,添加一个分形的指标。

 
Igor Makanu:

不可能,我的代码很简单,分形,像ZigZag一样,只在有箭头的条形上有值,在循环中,通过指标值,直到箭头出现并退出循环,返回分形所在条形的数量。

我刚刚做了一个分形的专家顾问--代码已经检查过了,在测试过程中发现第1条的分形可能会过度绘制--打开测试器的可视化模式,添加一个分形的指标。

也许结果应该被检查为0或空值
 
Aleksei Beliakov:
也许结果应该被检查为0或空值

空值中有0,这不是与_Point比较的最好方法。

它是有效的,我不想证明这一点,但分形指标值 在这部分代码中应该是有效的

SZY: 再一次,由于某种原因,我讨论了我的代码....代码越多越好,我没有看到其他参与者的代码,我不明白到底谁需要它?))))


PS:检查了,因为我知道这个问题不会休息,一切正常,代码很快。

#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   SetIndexArrow(0,SYMBOL_ARROWUP);
   SetIndexArrow(1,SYMBOL_ARROWDOWN);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--
   static int limit=0;   
   if(limit>=10) return(rates_total);
   int b_up = 0, b_dn = 0;
   while(limit<=10)
     {
      b_up = GetLastFractals(b_up,MODE_UPPER);
      Label1Buffer[b_up] = high[b_up];
      b_up++;
      b_dn = GetLastFractals(b_dn,MODE_LOWER);
      Label2Buffer[b_dn] = low[b_dn];
      b_dn++;
      limit++;
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

结果


 
Artyom Trishkin:

ArraySetAsSeries(true)用于指标缓冲区。

做了。我是根据手册做的
 
Igor Makanu:

不可能,我的代码很简单,分形,像ZigZag一样,只在有箭头的条形上有值,在循环中,通过指标值,直到箭头出现并退出循环,返回分形所在条形的数量。

我刚刚做了一个由分形组成的专家顾问--代码已经检查过了,在测试过程中发现,第1条上的分形可能会过度绘制--打开测试器的可视化模式,添加一个分形指标。

不,我的位置打开了。就像它应该的那样,在第三个小节,一个分形。但再往前走,情况就更糟了。根据我的条件(fr1_up<fr_2 && fr1_down>fr2_down),没有找到。其本质是价格的压缩,我们通过两个分形发现了这一点
 

我想我做到了 !

999

附加的文件:
IgorM.mq5  17 kb
 
Aleksandr Klapatyuk:

我想我做到了 !

它是什么?
 
Vladimir Baskakov:
哪一个?

对象名称在iFractals上移动

原因: