错误、漏洞、问题 - 页 1030 1...102310241025102610271028102910301031103210331034103510361037...3184 新评论 Vladimir Gomonov 2013.08.03 20:18 #10291 Al_key:而且我也一直在使用堆积器库获得条形转变。Metatrader中没有任何内置工具吗? 事实上,MT4中的iBarShift() 可能与编译器库中的工作方式相同,但最好是内置的--它的工作速度会更快(因为它是C++语言)。 Andrew Petras 2013.08.04 08:52 #10292 MetaDriver:你的案件在处理时有一个小的滑动。 我的更糟糕。(顺便说一下,你的没有Slip的箱子曾经工作过,几周前停止了。)同样的方案在其他(非当前)图表上停止工作,没有令人毛骨悚然的滑动。 代码来自这里:https://www.mql5.com/ru/code/224安装的猫头鹰,见。在当前的一个项目上,我扔了标准。AMA在图表上,捅破了重新计算(在睡眠从0到2350)--我下降到M1,再也没有回来。几秒钟后。AMA出现了,就这样了。我尝试使用标志(我是否应该存储两个标志,当前和m1? 如果我已经使用了当前的一个(标志),现在我使用m1(标志2),那么......)。但我怀疑它...周一的蜱虫会在我回到当前的蜱虫之前出现 :)更新是的,我在图表上有一百个对象,再加上AMA,也就是说,它是如此沉重。 Al_key 2013.08.04 09:57 #10293 MetaDriver:"我们必须这样做,费迪亚。我们必须这样做。"(c) 舒立克。--例如,如果动态缓冲区的内存没有被分配,就会发生这样的错误(在这种情况下,在ActualBuffer 下)。 这个代码片段并没有说清楚。在这里。以及如何为动态缓冲区分配内存?我想,当我发现的时候,这个问题就会消失。以下是所有的代码#include <TimeSeries.mqh> #property indicator_separate_window #property indicator_buffers 3 #property indicator_plots 3 //--- plot Actual #property indicator_label1 "Actual" #property indicator_type1 DRAW_LINE #property indicator_color1 clrLime #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot Consensus #property indicator_label2 "Consensus" #property indicator_type2 DRAW_LINE #property indicator_color2 clrPeachPuff #property indicator_style2 STYLE_SOLID #property indicator_width2 1 //--- plot Previous #property indicator_label3 "Previous" #property indicator_type3 DRAW_LINE #property indicator_color3 clrLightCyan #property indicator_style3 STYLE_SOLID #property indicator_width3 1 //--- indicator buffers double ActualBuffer[]; double ConsensusBuffer[]; double PreviousBuffer[]; //--- indicator vars string sDatetime; string sActual; string sConsensus; string sPrevious; int file_handle; int barshift; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,ActualBuffer,INDICATOR_DATA); SetIndexBuffer(1,ConsensusBuffer,INDICATOR_DATA); SetIndexBuffer(2,PreviousBuffer,INDICATOR_DATA); file_handle = FileOpen("CSV - макроэкономика и госкорпстат/Existing Home Sales Change.csv",FILE_READ|FILE_CSV|FILE_ANSI,','); while(!FileIsEnding(file_handle)) { sDatetime = FileReadString(file_handle); sActual = FileReadString(file_handle); sConsensus = FileReadString(file_handle); sPrevious = FileReadString(file_handle); barshift = iBarShift(Symbol(), Period(), datetime(formatdatetime(sDatetime)), false); if(StringToDouble(formatstring(sActual)) > 0 && StringToDouble(formatstring(sActual)) < 10000) ActualBuffer[barshift] = StringToDouble(formatstring(sActual)); Print(formatdatetime(sDatetime)); Print("iBarShift = ", barshift, " Datetime = ", formatstring(sDatetime), " sActual = ", sActual, " sConsensus = ", sConsensus, " sPrevious = ", sPrevious); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { //--- } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- } //+------------------------------------------------------------------+ //--- Функции форматирования string formatstring(string strparam) { string result = StringSubstr(strparam,1, StringLen(strparam) - 2); return(result); } string formatdatetime(string strparam) { string result = StringSubstr(strparam, 1, 4) + "." + StringSubstr(strparam, 5, 2) + "." + StringSubstr(strparam, 7, 11); return(result); } Al_key 2013.08.04 10:04 #10294 Al_key:在这里。你如何为动态缓冲区分配内存?我想一旦我发现了,这个问题就会消失。这里是所有的代码诗。我在那里读到了关于阵列调整的内容......这里有一个副本"在链接后,动态数组 缓冲区[]将像普通数组那样被索引,即使要链接的数组被预先设定为像时间序列 那样被索引。如果你想改变对指标数组元素的访问顺序,你应该在使用SetIndexBuffer()函数绑定数组后应用ArraySetAsSeries() 函数。人们应该记住,被SetIndexBuffer()函数指定为指标缓冲区的动态数组不应该被调整大小。 对于指示器缓冲区,所有调整大小的操作都由终端的执行子系统执行"。我很迷惑。 Al_key 2013.08.04 10:07 #10295 Silent: 将配置的配置文件保存为默认值 文件 - 配置文件 - 默认值 算是默认吧,还是没有数据可以加载。在几个小时内第一次全部倒下了。 Andrew Petras 2013.08.04 10:42 #10296 Al_key:在这里。你如何为动态缓冲区分配内存?我想一旦我发现了,这个问题就会消失。以下是整个代码INDICATOR_DATA是要绘制的数据。这个缓冲区(大小)是由终端监控的(按我的理解,是由rate_total监控的)。增加中间计算的缓冲区(INDICATOR_CALCULATIONS)。为他们设定尺寸。PS 我有#include <TimeSeries.mqh>由于某种原因不能打开,不能编译。上星期一必须等待,这里有问题。 Al_key 2013.08.04 12:55 #10297 Silent:INDICATOR_DATA是要绘制的数据。这个缓冲区(大小)是由终端监控的(据我所知,是由rate_total监控的)。增加中间计算的缓冲区(INDICATOR_CALCULATIONS)。为他们设定尺寸。PS 我有#include <TimeSeries.mqh>由于某种原因不能打开,不能编译。上星期一必须等待,这里有问题。 已经试着改变了,还是同样的错误。我将尝试至少把数值放在一个普通的数组中,也许有些东西会成功。 Andrew Petras 2013.08.04 14:45 #10298 Al_key: 我试着改了一下,还是得到同样的错误。我至少会试着把数值放到一个普通的数组中,也许会有办法。这里有一个简单的方法,很有效。在INDICATOR_DATA中,我们从INDICATOR_CALCULATIONS写起。#property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrOrangeRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input string s="EURUSD"; input ENUM_TIMEFRAMES tf; // D1 input int countBars=100; // count //--- put parameters int copied,i; //--- indicator buffers double Label1Buffer[]; //--- buffers double p_Symbol[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA); SetIndexBuffer(1,p_Symbol,INDICATOR_CALCULATIONS); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- if(prev_calculated==0) { ArrayInitialize(Label1Buffer,EMPTY_VALUE); ArrayInitialize(p_Symbol,EMPTY_VALUE); ArraySetAsSeries(Label1Buffer,true); ArraySetAsSeries(p_Symbol,true); ArraySetAsSeries(price,true); }; ArrayCopy(p_Symbol,price,0,0,countBars); if(_LastError!=0) {Print(_LastError); return(prev_calculated);}; if(_LastError==0) { for(i=countBars;i>0;i--) { Label1Buffer[i]=p_Symbol[i]; Print("limitBars i = "+IntegerToString(i)); }; }; //--- return value of prev_calculated for next call return(rates_total); } Vladimir Gomonov 2013.08.04 16:16 #10299 Silent:INDICATOR_DATA是要绘制的数据。这个缓冲区(大小)是由终端监控的(据我所知,是由rate_total监控的)。增加中间计算的缓冲区(INDICATOR_CALCULATIONS)。为他们设定尺寸。PS 我有#include <TimeSeries.mqh>由于某种原因不能打开,不能编译。上星期一必须等待,这里有些不对劲。在此采取 :https://www.mql5.com/ru/code/1008我刚刚发现,这就是为什么我还没有摸到代码。 而且还不能用--这里的公众正驱使我去购物。我认为,如果把问题代码从OnInit()移到OnCalculate(),一切都会正常。 很久以来,我就知道Five的特点--OnInit中的任何代码都不能正常工作。 很可能通过SetIndexBuffer() 注册的缓冲区的真正自动分配只有在退出OnInit()后才能保证结束,因为它必须在后台发生(它是自动的,对吗?) TimeSeries - Библиотека функций для работы с таймсериями 投票: 122012.08.24Andrey Khatimlianskiiwww.mql5.com Библиотека функций для работы с таймсериями: iBars, iTime, iOpen, iHigh, iLow, iClose, iVolume, iHighest, iLowest, iBarshift. Для всех функций доступен краткий вариант вызова (с символом и периодом текущего графика). Dmitriy Parfenovich 2013.08.04 17:50 #10300 我注意到,从云端接收任务时,8个代理中只有3个可以同时运行。 尽管如果你并行地运行你的测试,其他代理也会被启用。这是它应该有的样子吗? 1...102310241025102610271028102910301031103210331034103510361037...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
而且我也一直在使用堆积器库获得条形转变。Metatrader中没有任何内置工具吗?
你的案件在处理时有一个小的滑动。
我的更糟糕。(顺便说一下,你的没有Slip的箱子曾经工作过,几周前停止了。)
同样的方案在其他(非当前)图表上停止工作,没有令人毛骨悚然的滑动。
代码来自这里:https://www.mql5.com/ru/code/224安装的猫头鹰,见。
在当前的一个项目上,我扔了标准。AMA在图表上,捅破了重新计算(在睡眠从0到2350)--我下降到M1,再也没有回来。几秒钟后。AMA出现了,就这样了。
我尝试使用标志(我是否应该存储两个标志,当前和m1? 如果我已经使用了当前的一个(标志),现在我使用m1(标志2),那么......)。
但我怀疑它...周一的蜱虫会在我回到当前的蜱虫之前出现 :)
更新是的,我在图表上有一百个对象,再加上AMA,也就是说,它是如此沉重。
"我们必须这样做,费迪亚。我们必须这样做。"
(c) 舒立克。
--
例如,如果动态缓冲区的内存没有被分配,就会发生这样的错误(在这种情况下,在ActualBuffer 下)。 这个代码片段并没有说清楚。
在这里。
以及如何为动态缓冲区分配内存?
我想,当我发现的时候,这个问题就会消失。
以下是所有的代码
在这里。
你如何为动态缓冲区分配内存?
我想一旦我发现了,这个问题就会消失。
这里是所有的代码
诗。
我在那里读到了关于阵列调整的内容......这里有一个副本
"在链接后,动态数组 缓冲区[]将像普通数组那样被索引,即使要链接的数组被预先设定为像时间序列 那样被索引。如果你想改变对指标数组元素的访问顺序,你应该在使用SetIndexBuffer()函数绑定数组后应用ArraySetAsSeries() 函数。人们应该记住,被SetIndexBuffer()函数指定为指标缓冲区的动态数组不应该被调整大小。 对于指示器缓冲区,所有调整大小的操作都由终端的执行子系统执行"。
我很迷惑。
将配置的配置文件保存为默认值 文件 - 配置文件 - 默认值
在这里。
你如何为动态缓冲区分配内存?
我想一旦我发现了,这个问题就会消失。
以下是整个代码
INDICATOR_DATA是要绘制的数据。这个缓冲区(大小)是由终端监控的(按我的理解,是由rate_total监控的)。
增加中间计算的缓冲区(INDICATOR_CALCULATIONS)。为他们设定尺寸。
PS 我有#include <TimeSeries.mqh>由于某种原因不能打开,不能编译。
上星期一必须等待,这里有问题。
INDICATOR_DATA是要绘制的数据。这个缓冲区(大小)是由终端监控的(据我所知,是由rate_total监控的)。
增加中间计算的缓冲区(INDICATOR_CALCULATIONS)。为他们设定尺寸。
PS 我有#include <TimeSeries.mqh>由于某种原因不能打开,不能编译。
上星期一必须等待,这里有问题。
我试着改了一下,还是得到同样的错误。我至少会试着把数值放到一个普通的数组中,也许会有办法。
这里有一个简单的方法,很有效。在INDICATOR_DATA中,我们从INDICATOR_CALCULATIONS写起。
INDICATOR_DATA是要绘制的数据。这个缓冲区(大小)是由终端监控的(据我所知,是由rate_total监控的)。
增加中间计算的缓冲区(INDICATOR_CALCULATIONS)。为他们设定尺寸。
PS 我有#include <TimeSeries.mqh>由于某种原因不能打开,不能编译。
上星期一必须等待,这里有些不对劲。
在此采取 :https://www.mql5.com/ru/code/1008
我刚刚发现,这就是为什么我还没有摸到代码。 而且还不能用--这里的公众正驱使我去购物。
我认为,如果把问题代码从OnInit()移到OnCalculate(),一切都会正常。 很久以来,我就知道Five的特点--OnInit中的任何代码都不能正常工作。 很可能通过SetIndexBuffer() 注册的缓冲区的真正自动分配只有在退出OnInit()后才能保证结束,因为它必须在后台发生(它是自动的,对吗?)
我注意到,从云端接收任务时,8个代理中只有3个可以同时运行。
尽管如果你并行地运行你的测试,其他代理也会被启用。
这是它应该有的样子吗?