一种趋势跟踪策略。 - 页 12

 
JLY:

还有,如果这条线路不再存在,我如何删除这些图标?

ObjectDelete(0,"имя значка"+name);
если у значка нет имени, то в данном случае
ObjectDelete(0,name);

你需要在酒吧里计算时间

在酒吧里做。

你知道时间,即Time[9]是9条。

我只写了开头。

然后做你想做的事。

 
pako:

在酒吧中需要进行时间计算

在酒吧里做。

你有已知的时间,即Time[9]是9条。

我只写了开头。

然后做你想做的事。

谢谢你,只是没有必要创建一个行(只是设置参数),所以一切都能正常工作。

在4中,通过iBarShift 计算了以条为单位的时间。我使用了这个公式。

datetime time01=time1NEW;datetime time02=time2NEW;
int shift01=iBarShift(0,0,time01);int shift02=iBarShift(0,0,time02);//перевод из скунд в бары
int timeCHANGE=shift01-shift02;//разница между 1-й и 2-й точкой линии
int timeBAR=(shift02-timeCHANGE);//прибавить разницу ко 2-й точке
int timeBARc=Time[timeBAR];//Перевод из баров в секунды

第五版没有这个功能,我也不知道如何使用Copy*...

 
JLY:

谢谢,但没有必要创建一个行(只是设置参数),但它是有效的。

在第四章中,通过iBarShift来计算小节的时间。这是个公式。

第五版没有这个功能,而且我还不知道如何使用Copy*功能......

iBarShift 模拟在5

int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
在MQL5中,周期的常数已经改变(新的周期M2、M3、M4、M6、M10、M12、H2、H3、H6、H8、H12已经被添加),你可以使用以下函数来转换MQL4周期。
ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }
 
JLY:

我是按秒画的,周末有空隙,这意味着你仍然需要按条数计算。

int  PeriodSeconds(
   ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // период графика
   );
返回周期内的秒数。
 
pako:

非常感谢你。杠铃式计数。

剩下要做的就是将得出的条形图翻译成秒。在4中,它是时间[bar]。

在5中,我是按照规则这样做的,但却没有效果。

datetime Time[];
int count=1; 
ArraySetAsSeries(Time,true);
int timeBARsec=CopyTime(_Symbol,_Period,timeBAR,count,Time);//Перевод из баров в секунды
 
JLY:

非常感谢你。杠铃式计数。

剩下要做的就是将得出的条形图翻译成秒。在4中,它是时间[bar]。

在第5条中,我是按规则做的,但我无法让它发挥作用。

如果我对这个问题的理解正确的话。

    datetime Time[]; 
    ArraySetAsSeries(Time,true);
    CopyTime(Symbol(),PERIOD_CURRENT,0,100,Time);
    long timeBARsec = Time[2];//Перевод из баров в секунды, в данном случае Time[бар] бар = 2

    Comment("timeBARsec = ",StringToTime(Time[2]));
 
pako:

如果我对问题理解正确的话

是的,它在工作)非常感谢你)。

如果没有 "终点",它就是零,不能被看到。

附加的文件:
TimeEnd.mq5  5 kb
 

1.在图标描述中为指标和时间做了小时精度(包括图表属性 中的描述)。

2.把图标放在一个缓冲区里会不会更好?只是如何做到这一点,如何将时间和价格结合在同一个缓冲区?

3.如果画好了线,但还没有图标(栏没有出现),就会出现错误(在 "专家 "选项卡中),其他图标的工作也会停止。

2013.09.22 00:10:36 FlatExecution (EURUSD,D1) array out of range in 'FlatExecution.mq5' (124,30)

即阵列超出了范围......错误就在这一行。

long timeBARsec=Time[timeBAR];

如何才能使我的指标不被这个错误所麻痹?如何改变指标,使之不至于瘫痪这个错误的操作?

交易算法:通过时间图标进入,通过进入线停止,通过进入线图标退出。

5.画线的规则:从每个分形到所有后续分形,从上到下,从下到上。移除被价格触及的线条,不要再画。


附加的文件:
 

该错误的问题已经解决。

图标现在被画在信号栏的开口处。

如果该线被执行,它就会有不同的外观,一条线被画在它上面,它就会失去光束。如果该行未被执行,则为黄色。

如果停止的线将减少到第2点之外,你可以在第2点之后做一个停止。事实上,如果以不同的方式计算的话,也可以沿着这条线路移动停止。

根据分形图,画法保持不变。

算法。这个标志并不总是意味着毫不含糊的买入或卖出。然而,我认为新闻以某种方式影响了它。事实上,测试并没有进行,因为没有通过分形的自动绘制和对这种绘制的修正(去除受影响的线条)。

附加的文件: