任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 617

 

尝试了不同的选择。其结果是一样的。我不明白这怎么可能发生。在某个时刻,iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);突然开始计算一个更大的条形范围。请告知谁能理解,我的脑袋已经坏了。谢谢。


4:08:36 时间+iLowest测试开始

14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: i=18
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: i=19
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: i=20
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: i=21
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: i=31

14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: time_check_low_day=21:00

代码。


static int PrevTime=0;
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int start()
{
如果(Time[0]<=PrevTime)返回(0)。
PrevTime=Time[0];
//////////////
// CheckForLongTimeClose_Sell()。
double pBid=NormalizeDouble(Bid,Digits),Low_Now=Low[1];
////////////
int n_beg=1。// 一天的索引,在此情况下,1代表昨天
datetime DayTime_beg=iTime(NULL,PERIOD_D1,n_beg); //一天的开始时间 "n"(秒)。
intLastBar_beg=iBarShift(NULL,0,DayTime_beg)。

int n_end=0。// 当天的指数,在此情况下,1是昨天的日期。
datetime DayTime_end=iTime(NULL,PERIOD_D1,n_end); //一天的开始时间 "n"(秒)。
int NumberLastBar_end=iBarShift(NULL,0,DayTime_end)。
Print(" NumberLastBar_beg= " ,NumberLastBar_beg," NumberLastBar_end= " ,NumberLastBar_end);
//---------------------------------------------------------------------

datetime Time_Check_Low_Day=Time[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)]。
int=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end) 。
Print(" i=",i);
string time_check_low_day=TimeToStr(Time_Check_Low_Day,TIME_MINUTES) 。
/////////////
Print(" time_check_low_day=",time_check_low_day;)

datetime time_check_verify=StrToTime("H_check_beg:M_check_beg")。


return(0);
}

 
最令人费解的是,它发生在故事的这个特定部分,在其他部分则是正常的。
 
DiPach:

如果你只在真实账户或模拟账户中使用该代码,那么这就更方便了。 然而,在策略测试器中,使用时可能会出现问题


比如说,像什么?为什么我哪里都 没有问题,而你 "可能有"。
 

有一块我不明白。

double Delta =  NormalizeDouble(MathAbs(Bid-PriceOld),Digits);

我在打印机里得到的是一块像5e-005.0的垃圾。

价格旧值

PriceOld   = NormalizeDouble(Bid,Digits); 
当我把它加起来的时候,为什么减去的时候会变成这样?
 
001:
最令人困惑的是,它发生在故事的这个特定部分,在其他部分则是正常的。
仔细阅读iLowest() 的帮助。要搜索的项目数量是多少?而它在你那里等于什么。
 
001:

尝试了不同的变体。其结果是一样的。这怎么可能是这样的呢,绝对不清楚。在某个时刻,iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);突然开始计算一个更大的条形范围。请告知谁能理解,我的脑袋已经坏了。谢谢。


4:08:36 时间+iLowest测试开始

14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 24 NumberLastBar_end= 0
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: i=18
14:08:36 2004.09.29 00:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 25 NumberLastBar_end= 1
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: i=19
14:08:39 2004.09.29 01:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 26 NumberLastBar_end= 2
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: i=20
14:08:39 2004.09.29 02:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 27 NumberLastBar_end= 3
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: i=21
14:08:40 2004.09.29 03:00 Time+iLowest EURUSD,H1: time_check_low_day=06:00
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: NumberLastBar_beg= 28 NumberLastBar_end= 4
14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: i=31

14:08:41 2004.09.29 04:00 Time+iLowest EURUSD,H1: time_check_low_day=21:00

代码。

static int    PrevTime=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   if(Time[0]<=PrevTime) return(0);
   PrevTime=Time[0];
//////////////
 //  CheckForLongetivityClose_Sell();
   double pBid=NormalizeDouble(Bid,Digits),Low_Now=Low[1];
////////////
   int n_beg=1;                                           // индекс дня, в данном случае 1 - вчерашний день
   datetime DayTime_beg=iTime(NULL,PERIOD_D1,n_beg);             // Начало дня "n" в секундах
   int NumberLastBar_beg=iBarShift(NULL,0,DayTime_beg);

   int n_end=0;                                           // индекс дня, в данном случае 1 - вчерашний день
   datetime DayTime_end=iTime(NULL,PERIOD_D1,n_end);             // Начало дня "n" в секундах
   int NumberLastBar_end=iBarShift(NULL,0,DayTime_end);
   Print(" NumberLastBar_beg= ",NumberLastBar_beg," NumberLastBar_end= ",NumberLastBar_end);
//---------------------------------------------------------------------

   datetime Time_Check_Low_Day=Time[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];
   int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);
   Print(" i=",i);
   string time_check_low_day=TimeToStr(Time_Check_Low_Day,TIME_MINUTES);
/////////////
   Print(" time_check_low_day=",time_check_low_day);

   datetime time_check_verify=StrToTime("H_check_beg:M_check_beg");


   return(0);
  }


注意这些线条。

   datetime Time_Check_Low_Day=Time[iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end)];//iLowest раз
   int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end);                            //iLowest два

这些线应该被调换。

int i=iLowest(NULL,0,MODE_LOW,NumberLastBar_beg,NumberLastBar_end); // исправлять не стал
datetime Time_Check_Low_Day=Time[i];

2.NumberLastBar_beg是昨天的条数,而这个值可以用要 搜索的条数来代替。

3.当你粘贴代码时,在文本输入窗口的工具条上找到SRC按钮。

 
AlexeyVik:

比如说哪些人?为什么我在任何地方都 没有问题,而你却 "可能 "有问题呢?

我有点沉思。我不想把现有指标的代码放在可以清楚看到的地方(如果不为测试者应用一个单独的条件)。以及思考,在其基础上单独开出什么药方,以达到明确的目的。

然而,如果你坚持 - 当然,我很可能会开始考虑什么可以取代他的复杂 "馅料",以便在那里开出其他的东西。
 
我可以在我的EA中使用1个以上的定时器吗?EventSetTimer(5)。
 
pu6ka:
仔细阅读iLowest()的帮助。要搜索的元素数量是多少?那它等于什么呢?

出于某种原因,我以为是一个范围,但其实是元素的数量,谢谢!
 
AlexeyVik:

请注意这几句话

最好把这些线换掉。

2.NumberLastBar_beg是昨天的第一个条形的数字,你把这个值代替你想搜索 的条形的数量。


i变量在这里纯粹是为了控制的目的,用于打印。我在调整栏杆时犯了一个错误。谢谢你的提示!