错误、漏洞、问题 - 页 2728

 
Askr:

谢谢你。

我发现这个其他的东西,也许1)是一个封锁的经纪人。

https://www.mql5.com/ru/forum/38456/page127

https://www.mql5.com/ru/forum/304679

2)不知何故,百分比跳动得很厉害,我以前一直得到110%和70%的跳动,而且很多,我自己还没算过。也许这与负载有关,但我不这么认为。我打开小东西,规格中的杠杆是一样的,余额也几乎一样。

关于信号的一个共同点是这样的
https://www.mql5.com/ru/forum/10603/page394
供参考。

FAQ по сервису Сигналы
FAQ по сервису Сигналы
  • 2020.04.18
  • www.mql5.com
Узнать за 15 минут: смотри обучающие видео по торговым сигналам в MetaTrader 4 и MetaTrader 5 Здесь будут собраны и обработаны наиболее частые вопр...
 
Sergey Dzyublik:

Bug MT5(build 2390)在类结构 描述中错误地计算了大括号。

谢谢你的帖子,已修复

 

这就是它的作用。

   ObjectSetDouble (0,name,OBJPROP_ANGLE,direction==0?0:direction>0?30:-30);

所以没有(总是0)。

   ObjectSetDouble (0,name,OBJPROP_ANGLE,direction*30);

方向-1;+1;0

 
Igor Zakharov:

这就是它的作用。

所以没有(总是0)。

方向-1;+1;0

就这样

ObjectSetDouble (0,name,OBJPROP_ANGLE,( direction==0?0:direction>0?30:-30));
 
Alexey Viktorov:

还有这种方式。

也可以,第二个选项不起作用

 
   ObjectSetDouble (0,name,OBJPROP_ANGLE,direction*30.0);
的方向,你已经声明为int。这就是你得到的东西。最近,许多函数对数值变得相当挑剔。最好是用转换的方式来保证。
我自己最近也面临这样的问题。我以前没有任何问题。但我被要求纠正代码,它不想正常工作,直到我把它投到双倍。
 
Konstantin Nikitin:
你所拥有的方向被声明为int。这就是你得到的东西。最近,许多函数对值变得相当挑剔。最好是处理好转换的问题。
我自己最近也面临这样的问题。我以前没有任何问题。但我被要求纠正代码,直到我把它带到双倍的时候,它才想正常工作。

是的,int,但它是乘法--在整数中也是30*1=30。我百分之百确定,在几个构建之前,它在第二个变体中也工作得很好,因为这30个是通过挑选...

似乎是MT5的另一个 "功能"...至少这块是装饰性的,但如果在某个地方像autolot或stoploss - 悲伤可能会发生 - 我经常通过乘以-1来扭转...

谢谢,我将使用另一个拐杖...

 
Igor Zakharov:

也可以,第二个选项不起作用。

啊,我无意中复制了错误的代码。

Konstantin是对的,为什么要把int放在应该是double的地方......这不是mql5的特点,这只是一些尝试,以适应秩序。

 

请帮助。

该指标出现了数组超出范围的错误。

在代码中,我已经定义了缓冲区

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_width1 1

#property indicator_plots  1 // количество графических построений

#property indicator_type1   DRAW_ARROW


宣告的全局变量

double Buf1[];

double Buf2[];

在Init()中,我定义了属性

    PlotIndexSetInteger(0,PLOT_ARROW,code); 

//--- установим пустое значение 

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

   SetIndexBuffer(0,Buf1,INDICATOR_DATA);

   PlotIndexSetString(0, PLOT_LABEL, "Break");



//----

   PlotIndexSetInteger(1,PLOT_ARROW,code);  

//--- установим пустое значение 

   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);

   SetIndexBuffer(1,Buf2,INDICATOR_CALCULATIONS);

   PlotIndexSetString(1, PLOT_LABEL, "Break");


在OnCalculate()中,代码定义了一个条件--up变量。

如果是真的,那么将执行以下代码

  i=nPoint1; BreakUp=false; BreakDn=false;
  
while(i>=0 && BreakUp==false && BreakDn==false)
  {              Print("i  ",i);                 tmp=iHigh(NULL,0,nPoint1)-Speed*(nPoint1-i);        tmp1=iHigh(NULL,0,nPoint1)-Speed*(nPoint1-i)-resultL;        if(NormalizeDouble(iLow(NULL,0,i),Digits())<NormalizeDouble(tmp1,Digits()) && NormalizeDouble(iHigh(NULL,0,i),Digits())>NormalizeDouble(tmp,Digits()))         {          size=ArraySize(Buf1);          Print("size ",size);                   BreakUp=true;          if(channelbreak) Buf1[i]=tmp;          Comm="\nПробой вверх на уровне " + DoubleToString(tmp,Digits());         }        else        if(NormalizeDouble(iLow(NULL,0,i),Digits())<NormalizeDouble(tmp1,Digits()))         {          size=ArraySize(Buf1);          Print("size ",size);                          BreakDn=true;          if(channelbreak) Buf1[i]=tmp1;          Comm="\nПробой вниз на уровне "+DoubleToString(tmp1,Digits());         }        else        if(NormalizeDouble(iHigh(NULL,0,i),Digits())>NormalizeDouble(tmp,Digits()))         {          size=ArraySize(Buf1);          Print("size ",size);                   BreakUp=true;          if(channelbreak) Buf1[i]=tmp;          Comm="\nПробой вверх на уровне "+DoubleToString(tmp,Digits());         }        else Comm="\nПробоя канала нет";        //i--;       }     } Ошибка происходит при входе в цикл while при присвоении значения переменной значению буфера. Проверка на размер массива буфера выдает ноль. Т.е. буфер не инициализируется. Всю голову сломал, не могу понять почему. В чем затык?
nPoint1 - это индекс бара (сдвиг от нулевого).
 
Ilyas:

请澄清,在指标调试期间,该指标的数值在打开的图表 上不可见,这是否正常?即,例如,我们在调试器中打开MACD。我们在向缓冲区写值的周期中设置一个断点。写完ChartRedraw()的值后。我期望在写完值后能在图表上马上看到这个值,但我只看到一个空窗口。

Build 2380 x64。

原因: