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

 
Alexey Kozitsyn:
通过一个文件,例如...

如果不是太麻烦的话,再详细一点。

 
виталик:

如果你不介意的话,再详细一点。

为了调出报价,请使用复制功能。

https://www.mql5.com/ru/docs/series

然后https://www.mql5.com/ru/docs/files,是文件操作的一个链接。

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
晚上好,我正在制作一个 "铁轨 "图案,但我不能让它发挥作用....,你能看出什么问题吗?提前感谢。
附加的文件:
jzogyr2.mq4  6 kb
 
sviter-pro:
晚上好,我正在制作一个 "铁轨 "图案,但我不能让它发挥作用....,你能看出什么问题吗?提前感谢。

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

而这些条件将永远不会被满足

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

下午好!任务是这样的--我需要确定在下一个01.00点之前会有多少条。到目前为止,我已经用一个循环做了,但也许用iBarShift 做更正确?也许根本上以不同的方式来做更正确?

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

下午好!任务是这样的--我需要确定在下一个01.00点之前会有多少条。到目前为止,我已经用一个循环做了,但也许用iBarShift做更正确?也许完全用不同的方式做更正确?

为了将来能更顺利地过渡到mql5,最好使用两种语言都使用的函数。对于搜索酒吧的数量,最好使用

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

实际上,iBarShift()会比cycle更好地完成工作。

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

为了将来能更顺利地过渡到mql5,最好使用两种语言中使用的函数。对于搜索酒吧的数量,最好使用

iBarShift()可以比cycle更好地处理这个任务。

是的,但问题是要找到最接近的01.00小时。你将如何找到它?
int iBarShift(
string symbol,// 符号
intTimeframe, // period
datetime时间,//时间?????????
bool exact=false // 模式
)。
 
Nauris Zukas:
是的,但问题是要找到最接近的01.00小时。你如何确定这一点?
int iBarShift(
string symbol,// 符号
intTimeframe, // period
datetime时间,//时间?????????
bool exact=false // 模式
)。

关于交易、自动交易系统和策略测试的论坛

关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论

Alexey Viktorov, 2017.07.27 13:54

如果你想让将来迁移到mql5时尽可能不受影响,请使用两种语言中的功能。要搜索酒吧的数量,最好使用

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

原则上,iBarShift()可以比周期更好地处理这个任务。

返回指定时间当前 时间之间的条数,如果你指定当前条数时间作为停止时间。

唯一的问题是,我从来没有用这种不必要的东西填满我的内存单元,比如考虑到指定时间或少1的条形图,获得的值将等于什么。我只是每次都检查。

 
Alexey Viktorov:

返回指定时间当前 时间之间的条数,如果当前条数时间被指定为stop_time。

唯一的问题是,我从来没有用不必要的东西堵塞我的内存单元,比如值将等于什么,包括指定时间或小于1的酒吧。我只是每次都检查。

这一点我都明白,但要尝试进入问题。你如何找到指定的时间- 在我的例子中,你需要找到最接近的01.00小时。你是怎么写下来的呢?
datetime start_time, // from what date ?

 
Nauris Zukas:

这一点我都明白,但要尝试进入问题。你如何找到指定的时间- 在我的情况下,你必须找到最接近的01.00小时。你是怎么写下来的呢?
datetime start_time, // from what date ?

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
当前时间 17:08,它显示33。例如,时间为01:00的酒吧号码将是32。