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

 
在mt4中找不到CopyBuffer,只在mt5中找到 在mt4中没有吗? 在mt4中是否有简单的缓冲区数组数字来获取数据?
 
Valeriy Yastremskiy:
在mt4中找不到CopyBuffer,只在mt5中找到 在mt4中没有?

在MT4中,它是iCustom()https://docs.mql4.com/ru/indicators/icustom

我去年检查过,从EA调用iCustom()是可以缓存的,也就是说,如果你在同一个tick上对不同的缓冲区或索引 从EA调用iCustom() 几次,指标本身将为这个tick重新计算一次,也就是说,性能上没有问题。

ZS:为什么是MT4--如果MT5已经 "想通 "了,生产率更高,测试器更准确......。总的来说,对研究来说是件好事,我认为

 
Igor Makanu:

在MT4中,它是iCustom()https://docs.mql4.com/ru/indicators/icustom

我去年检查过,从EA调用iCustom()是可以缓存的,也就是说,如果你在同一个tick上对不同的缓冲区或索引 从EA调用iCustom() 几次,指标本身将为这个tick重新计算一次,也就是说,性能上没有问题。

ZS:为什么是MT4--如果MT5已经 "想通 "了,生产率更高,测试器更准确......。总而言之,这对研究来说是件好事,我认为。

在MT4平台上,更容易进行思想工作。壳更容易))))))))))没有,所以没有。让我们以老式的方式在数组的一个循环中写入))))我还没有达到这些阶段)))) 在MT5中,当MT4停止工作时,扩展是有意义的))),这不是太慢就是数据太多。

补充说。而当这个想法被研究出一个可接受的错误时。
 

大家下午好。grail机器几乎完成了,但是当我编译它时,我得到了大约50-60个关于'OrderSend'的返回值应被检查的警告 TREND+ _V_1,1.mq4 1626 11

根据我的理解,因为我写的是没有任何检查的订单开头,就像这样

//--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
     OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep:

大家下午好。grail机器几乎完成了,但是当我编译它时,我得到了大约50-60个关于'OrderSend'的返回值应被检查的警告 TREND+ _V_1,1.mq4 1626 11

根据我的理解,因为我写的是没有任何检查的订单开头 - 像这样

这样写

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX:

这样写

这一行代码不起作用:(一次弹出2个这样的错误。

'买入' - 未申报的标识符TREND+_1,1.mq4 860 98


'打开'--预期的一些操作者 TREND+_V_1,1.mq4 860 102

而代码本身是这样的

if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


我按照建议写了一切,唯一不同的是,我改变了评论的变量名称,将市场和挂单 的评论分开。我做错了什么?
 
Print("Buy Open");
 
DanilaMactep:

这行代码不起作用:( 一次性出现2个这样的错误。

'买入' - 未申报的标识符TREND+_1,1.mq4 860 98


'打开'--预期的一些操作者 TREND+_V_1,1.mq4 860 102

而代码本身是这样的


我按照建议写了一切,唯一不同的是,我改变了评论的变量名称,将市场和挂单 的评论分开。我做错了什么?

我错过了""

弗拉迪斯拉夫-安德鲁申科

Print("Buy Open");


 
OnCalculate 方法中第一次启动指标时,CopyRates不起作用。
                MqlRates rates[];
                if (CopyRates(_Symbol, _Period, (datetime)SeriesInfoInteger(Symbol(), Period(), SERIES_SERVER_FIRSTDATE), 1, rates) == -1)
                {
                        return(0);
                }

点子来了,在打印上是可见的,但它没有复制,就像终端中没有指标一样,只有用指标改变周期才有帮助,然后在第一次启动后,指标工作正常。

 
BillionerClub:
在OnCalculate方法中第一次启动指标时,CopyRates不起作用。

滴答声来了,在打印上是可见的,但没有复制,就像终端中没有指标一样,只有用指标改变周期才有帮助,然后在第一次启动后指标正常工作。

帮助:CopyRates

注意事项

如果请求的数据的间隔完全超出了服务器的范围,函数返回-1。如果TERMINAL_MAXBARS(图表中的最大条数)之外 请求数据,该函数也将返回-1。

当向指标请求数据时,如果请求的时间序列尚未建立,或需要从服务器下载,该函数将立即返回-1,但将启动下载/建立的过程。

当从专家顾问或脚本请求数据时,如果终端在本地没有这些数据,将开始从服务器加载,或者如果数据可以从本地历史建立,但它们还没有准备好,将开始建立所需的时间序列。该函数将返回在超时时间前准备好的数据量,但历史数据的加载将继续进行,下一次类似的请求将返回更多的数据。

当按开始日期和所需的项目数请求数据时,只有日期小于(在)或等于指定日期的数据才会被返回。同时,间隔时间被指定并考虑到最近的秒数。这意味着任何一个条形图的开盘日期,对其返回的数值(成交量、价差、指标缓冲区中的数值、价格开盘、最高价、最低价、收盘价或开盘时间),总是等于或小于指定的数值。

当请求指定日期范围内的数据时,只返回落在所请求的间隔内的数据,间隔被指定并考虑到最近的秒数。这意味着任何返回数值(成交量、价差、指标缓冲区中的数值、价格开盘、高点、低点、收盘或开盘时间)的条形图的开盘时间,总是在要求的区间内。

因此,如果当前的工作日是星期六,那么当试图在周时间框架上复制数据时,指定start_time=最后一个星期二stop_time=最后一个星期五该函数将返回0,因为周时间框架的开盘时间总是在星期天,但没有周柱落入指定范围

如果你想获得当前未完成的条形图所对应的值,你可以使用第一种形式的调用,指定start_pos=0count=1

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
原因: