mql5语言的特点、微妙之处以及技巧 - 页 83 1...767778798081828384858687888990...247 新评论 Aleksey Vyazmikin 2018.04.13 11:05 #821 fxsaber:再读一下我的答案。打开简短的源代码,弄清楚它,然后...利润!当然,我打开了源代码,当然。虽然我没有表示我需要MT5的全部内容,但我在寻找一个想法... 你能告诉我,在函数GetBarSize()中,哪一行解决了这个问题(隐藏的想法)? #property show_inputs extern int Width = 1280; extern int Height = 800; #import "user32.dll" int GetClientRect( int hWnd, int lpRect[] ); #import #define BORDER_SIZE 44 int GetBarSize() { int Rect[4], PrevBars, PrevRect, Res = 1; int hwnd = WindowHandle(Symbol(), Period()); GetClientRect(hwnd, Rect); PrevRect = Rect[2] - BORDER_SIZE; PrevBars = WindowBarsPerChart(); PrevBars += PrevBars; while(PrevBars <= PrevRect) { Res += Res; PrevBars += PrevBars; } return(Res); } string StrNumToLen( string Num, int Len ) { Len -= StringLen(Num); while (Len > 0) { Num = "0" + Num; Len--; } return(Num); } void start() { int Pos = WindowFirstVisibleBar(), Step, i = 1; string Directory = Width + "x" + Height + "_" + Symbol() + Period() + " (" + TimeToStr(Time[Pos], TIME_DATE) + "-" + TimeToStr(Time[0], TIME_DATE) + ")/"; Pos += 2; Step = 1 + (Width - BORDER_SIZE) / GetBarSize(); while (Pos >= 0) { WindowScreenShot(Directory + StrNumToLen(i, 5) + ".gif", Width, Height, Pos); i++; Pos -= Step; } return; } fxsaber 2018.04.13 11:14 #822 阿列克谢-维亚兹米 金。当然,我打开了源代码,当然。虽然我没有说明我需要的是MT5的全部,但我想找一个想法... 你能告诉我,在函数GetBarSize()中,哪一行解决了这个问题(隐藏的想法)? int GetBarSize( const ulong Chart = 0 ) { return(1 << (int)ChartGetInteger(Chart, CHART_SCALE)); } Aleksey Vyazmikin 2018.04.13 11:33 #823 fxsaber:我觉得自己像个傻瓜,你说的"<<"是什么意思?而这与图表的比例 有什么关系呢? Ihor Herasko 2018.04.13 11:43 #824 阿列克谢-维亚兹米 金。我觉得自己像个傻瓜,"<<"是什么意思? 这是一个向左移动 的位数。一个1(用二进制表示为0000 0001)将被移到左边,其次数与ChartGetInteger返回的值相同。基本上,它是2的幂。 其结果将是每1条的像素数。 Aleksey Vyazmikin 2018.04.13 11:47 #825 伊霍尔-赫拉斯科。 这是一个向左移动 的位数。1(用二进制表示为0000 0001)将被移到左边,其次数与ChartGetInteger返回的值相同。基本上,它是2的幂。 其结果将是每1条的像素数。谢谢你的澄清,我将尝试实施它! fxsaber:谢谢你! fxsaber 2018.04.13 14:11 #826 Rosh,非常感谢你的帮助,让我们找到了它。 关于交易、自动交易系统和策略测试的论坛 虫子,虫子,问题 伊利亚斯, 2016.08.24 11:08 数组("internal")存储了该数组 被分配到多少个元素。 与分配的工作逻辑(条件代码)。ArrayResize(arr,int size,int reserve) { if(arr.allocated<size) if(!ArrayAllocateMemory(arr,size+reserve)) // -> arr.allocated=size+reserve; return(-1); //--- CallConstructorsOrDestructors(arr,size); //--- arr.size=size; return(size); } 太糟糕了,它根本就不能用(数组包装器不是一个选项)。也许我们仍然可以增加功能? int ArrayAllocated( const void& array[] );毕竟有StringBufferLen用于字符串。 Artyom Trishkin 2018.04.14 19:14 #827 与本主题无关的评论已被移至"错误、错误、问题"。 Artyom Trishkin 2018.04.14 19:18 #828 与本主题无关的评论已被移至"错误、错误、问题"。 fxsaber 2018.04.16 13:23 #829 string Str = "123.456"; double Num1 = StringToDouble(Str); double Num2 = (double)Str; // Быстрее 这样做要快得多(发布,而不是调试)。 double StringToDouble2( const string Str, const uint StartPos = 0 ) { const uint Size = StringLen(Str); bool Sign = false; uint i = StartPos; while (i < Size) { const int Digit = Str[i]; if ((Digit != ' ') && (Digit != '\t') && (Digit != '\n') && (Digit != '\r')) { if ((Sign = (Digit == '-')) || (Digit == '+')) i++; break; } i++; } long Res = 0; int point = 0; while (i < Size) { const int Digit = Str[i]; if (!point && (Digit == '.')) point = 1; else if (((Digit >= '0') && (Digit <= '9'))) { Res = Res * 10 + Digit - '0'; if (point) point *= 10; } else break; i++; } if (Sign) Res = -Res; return((point > 1) ? Res / (double)point : Res); // Возможна потеря точности при делении } 在解析大量的数据时,可以获得显著的速度提升。 Alain Verleyen 2018.04.16 13:38 #830 fxsaber: 这样做要快得多(发布,而不是调试)。 在解析大量的数据时,可以获得显著的速度提升。你能提供基准代码来证明这一点吗? 1...767778798081828384858687888990...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
再读一下我的答案。打开简短的源代码,弄清楚它,然后...利润!
当然,我打开了源代码,当然。虽然我没有表示我需要MT5的全部内容,但我在寻找一个想法...
你能告诉我,在函数GetBarSize()中,哪一行解决了这个问题(隐藏的想法)?
当然,我打开了源代码,当然。虽然我没有说明我需要的是MT5的全部,但我想找一个想法...
你能告诉我,在函数GetBarSize()中,哪一行解决了这个问题(隐藏的想法)?
我觉得自己像个傻瓜,你说的"<<"是什么意思?而这与图表的比例 有什么关系呢?
我觉得自己像个傻瓜,"<<"是什么意思?
这是一个向左移动 的位数。一个1(用二进制表示为0000 0001)将被移到左边,其次数与ChartGetInteger返回的值相同。基本上,它是2的幂。
其结果将是每1条的像素数。
这是一个向左移动 的位数。1(用二进制表示为0000 0001)将被移到左边,其次数与ChartGetInteger返回的值相同。基本上,它是2的幂。
其结果将是每1条的像素数。
谢谢你的澄清,我将尝试实施它!
谢谢你!
Rosh,非常感谢你的帮助,让我们找到了它。
关于交易、自动交易系统和策略测试的论坛
虫子,虫子,问题
伊利亚斯, 2016.08.24 11:08
数组("internal")存储了该数组 被分配到多少个元素。与分配的工作逻辑(条件代码)。
太糟糕了,它根本就不能用(数组包装器不是一个选项)。也许我们仍然可以增加功能?
毕竟有StringBufferLen用于字符串。
这样做要快得多(发布,而不是调试)。
在解析大量的数据时,可以获得显著的速度提升。
这样做要快得多(发布,而不是调试)。
在解析大量的数据时,可以获得显著的速度提升。
你能提供基准代码来证明这一点吗?