错误、漏洞、问题 - 页 133

 
Interesting:
就我的理解,应计制,如在演示中或在测试器中...
那是什么? 重新计入或计入
 
Dmitriy2:

因此,当输出值到日志时,只有一次(第一次)抛物线函数,即CopyBuffer,返回0而不是-1,因为它应该在出错的情况下(虽然它也不应该,所有的数据都在那里,都被下载了,没有伟大的多维数 组,不应该发生错误!)而且这只发生在测试器中,只有一次。从这里开始,一切运作正常。

在基本代码中,我并不关心函数的返回,最终当涉及到交易请求时,收到的请求值由通用函数检查,如果一切正常,我们就发送请求,如果不正常--我们就等待它正常......。

请在你获取抛物线值的函数中尝试以下代码。

double Параболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   double ЗначениеParabolic[1];
   int Parabolic=iSAR(Symbol(),период,step,maximum);
   int cb=CopyBuffer(Parabolic,0,бар,1,ЗначениеParabolic);
   if(cb!=1) Print("BarsCalculated ",BarsCalculated(Parabolic),", CopyBuffer ", cb, ", ArrayValue ",ЗначениеParabolic[0]);
   return(ЗначениеParabolic[0]);
  }

你会在日志中得到类似这样的信息

2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1  2010.09.01 00:00:07   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
2010.09.15 14:53:53     Core 1    SLпоПервойТочкеПараболика=true

这将解释为什么你得到0而不是-1。

我再重复一遍,这是第三次了。数据是存在的,但那一刻的指标值可能还没有计算。在帮助中写到了这一点!

 
maryan.dirtyn:
是什么? 重新加密还是累积
Overcritching患有FC,MT一生都有应激反应。平日为单人,周三为三人(三人交换日 应予以说明)......
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
Interesting:
FC患有过度积累症,MT一生都有积累症。平时为单人,周三为三人(三人交换日 应予以说明)......
我不知道FC是什么......我只需要知道它在锦标赛中的表现如何。
 
alexvd:

在你的函数中试试这段代码,以获得抛物线的值。

你将在日志中得到大致这样的输出结果

这将解释为什么你得到0而不是-1。

我再重复一遍,这是第三次了。数据存在,但那一刻的指标值可能还没有计算出来。这是在帮助中写的!

没错,我们得到的是抛物线的值,而不是CopyBuffer的响应...

好吧...将抛物线函数改为你提供的函数(含打印件)。

我在for循环中添加了指纹(它没有零保护)。

if(НапрСигнала==ORDER_TYPE_BUY)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("бай, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iLow(PERIOD_CURRENT,i+1,1)<Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("бай, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД>ЗначениеSAR) //bay
         slтики=(int)NormalizeDouble((АСК-ЗначениеSAR)/ТИК,0);
     }
   if(НапрСигнала==ORDER_TYPE_SELL)
     {
      if(SLпоПервойТочкеПараболика==true)
         for(i=0;;i=i+1)
           {
            Print("селл, параболик до иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
            if(iHigh(PERIOD_CURRENT,i+1,1)>Параболик(PERIOD_CURRENT,0.02,0.2,i+1))// || Параболик(PERIOD_CURRENT,0.02,0.2,i+1)<=0
              {
               Print("селл, параболик после иф ",Параболик(PERIOD_CURRENT,0.02,0.2,i+1));
               break;
              }
           }
      ЗначениеSAR=NormalizeDouble(Параболик(PERIOD_CURRENT,0.02,0.2,i)/ТИК,0)*ТИК;
      if(БИД<ЗначениеSAR) //sell
         slтики=(int)NormalizeDouble((ЗначениеSAR-БИД)/ТИК,0);
     }

在测试器中运行它

JQ      0       Core 1  15:16:37        agent process started
NJ      0       Core 1  15:16:37        connecting to 127.0.0.1:3000
NJ      0       Core 1  15:16:39        connected
GP      0       Core 1  15:16:39        authorized (agent build 328)
LK      0       Tester  15:16:39        EURUSD,H1 (MetaQuotes-Demo): testing of Experts\Отладка.ex5 from 2010.01.01 00:00 to 2010.09.11 00:00 to be started
RH      0       Core 1  15:16:41        common synchronization completed
RS      0       Core 1  15:16:41        3124 bytes of account info loaded
RI      0       Core 1  15:16:41        3768 bytes of group info loaded
MN      0       Core 1  15:16:41        7170 bytes of tester parameters loaded
EL      0       Core 1  15:16:41        275 bytes of selected symbols loaded
IK      0       Core 1  15:16:41        expert file added: Experts\Отладка.ex5. 6597 bytes loaded
LE      0       Core 1  15:16:41        initial deposit 10000.00 USD, leverage 1:100
KO      0       Core 1  15:16:41        successfully initialized
RQ      0       Core 1  15:16:41        23 Kb of total initialization data received
KK      0       Core 1  15:16:41        performance: 72
HP      0       Core 1  15:16:41        EURUSD: symbol synchronized, 2904 bytes of symbol info received
RI      0       Core 1  15:16:43        EURUSD: load 27 bytes of history data to synchronize
MG      0       Core 1  15:16:43        EURUSD: history synchronized from 1993.05.13 to 2010.09.10
MP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CD      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ON      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
ER      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GP      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
MG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
CK      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
IN      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
OE      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EI      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KL      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
QS      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
GG      0       Core 1  15:16:45        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
KJ      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0
EN      0       Core 1  15:16:47        2010.01.04 00:00:02   BarsCalculated -1, CopyBuffer -1, ArrayValue 0

以此类推,直到你按下取消键

图表上的专家顾问

PJ      0       Experts 15:27:14        expert Отладка (EURUSD,M20) removed
MR      0       Trades  15:27:18        '677265' : instant buy 0.10 EURUSD at 1.29697
EH      0       Trades  15:27:19        '677265' : accepted instant buy 0.10 EURUSD at 1.29697
GL      0       Trades  15:27:21        '677265' : order #1350474 buy 0.10 EURUSD at 1.29697 done
LH      0       Trades  15:27:21        '677265' : deal #1426626 buy 0.10 EURUSD at 1.29697 done (based on order #1350474)
LI      0       Experts 15:27:56        expert Отладка (EURUSD,M20) loaded successfully
IR      0       Trades  15:28:07        '677265' : instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
IM      0       Trades  15:28:08        '677265' : accepted instant sell 0.10 EURUSD at 1.29690 sl: 1.30136 tp: 1.29502
RK      0       Trades  15:28:10        '677265' : order #1350477 sell 0.10 EURUSD at 1.29690 done
RO      0       Trades  15:28:10        '677265' : deal #1426629 sell 0.10 EURUSD at 1.29690 done (based on order #1350477)

日志中没有错误

看一下专家标签中的图片;也没有错误信息

你可以计算抛物线点,一切都很吻合,在第十二个点上,退出循环......

 

很久以前我就意识到,在MQL5中,在 "那个时刻 "或在那个...这里或那里的数据可能没有计算...但这是不对的,你必须解决它,而不是在代码中写拐杖。

顺便说一下,所有其他指标都是如此,不仅仅是抛物线 指标。

 
maryan.dirtyn:
我不知道FC是什么,我只想知道它在锦标赛中的表现如何。

FC - 外汇俱乐部,并说其终端Rumus2。

你有一个冠军的测试账户吗?试试吧,一切都会清楚的......。

 
Dmitriy2:

很久以前我就意识到,在MQL5中,在 "那个时刻 "或在那个...这里或那里的数据可能没有计算...但这是不对的,你必须解决它,而不是在代码中写拐杖。

顺便说一下,这对所有其他指标都是一样的,不仅仅是抛物线。

我们不要把讨论扩大化。

这个话题已经讨论过很多次了。不久前,人们重新审视了这个问题(https://www.mql5.com/ru/forum/1951)。

Тестер стратегий. Помогите разобраться с ошибкой.
Тестер стратегий. Помогите разобраться с ошибкой.
  • www.mql5.com
mq5) handle индикатора объявляется как глобальная переменная, индикатор инициализируется в OnInit() и передается в функцию.
 

坐在...看着...

我永远不会相信MQL5和MQL4是由同一个团队编写的。

MQ4-飞行...

MQ5是小孩子的游戏。无意冒犯 - 但是...()

 
alexvd:

我们不要讨论了。

这个话题已经讨论过不止一次了。不久前,人们重新审视了这个问题(https://www.mql5.com/ru/forum/1951)。

我还没有看到这个主题...同样的事情...

重点是,我不会愚蠢地在每一行上为所有场合做检查,使代码混乱和杂乱。如果这是不可能的,那么......拐杖被添加,一个足够大的项目终于完全重新做了,并且工作......。

而总的来说,我只是对这种做法感到惊讶...事实证明,这样的问题已经不是第一次出现了(而且我相信将来不止一次会出现在其他人身上),而且每次 "第一次 "都要花费你和别人大量的工作时间来解释你需要做什么来绕过这个错误......

唯一要做的是,在该主题中建议的测试仪中,在专家顾问开始时只添加一个睡眠(1000)。

绝不能让外壳隐含故障,而这些故障必须在代码中避免。而终端的工作是正常和正确的,没有错误(在这种情况下)。但测试仪的操作与终端的操作是不同的。

ps小方你好:)