自定义符号。误差、错误、问题、建议。 - 页 13 1...67891011121314151617181920...34 新评论 Slava 2019.06.07 05:54 #121 fxsaber:此外,如果是00:00:01,你就不能用CustomTicksAdd来重塑一个两秒钟前的柱子。当然你不能。因为在00:00:01到达的tick应该已经形成了下一个bar。在一个正常的情况下。 fxsaber 2019.06.07 06:04 #122 Slava:对于测试者来说,前天的刻度线就是今天的新刻度线。 我明白你的意思。你六个月前的自定义抽搐的练习具有明显的测试者性质。你的情况是不正常的(从普遍做法的意义上讲)。至于非标准地使用定制的。这就是讨论的目的,找出不同情况下的特殊性,并试图解决它们。 fxsaber 2019.06.07 06:07 #123 Slava:当然,这是不可能的。因为在00:00:01出现的嘀嗒声应该已经形成了下一个条形。在一个正常的情况下。想象一下,一个服务可以在一秒钟内计时完毕(也许更短,就像你通常在公式上做的那样--100ms)。然后在午夜时分,条形图往往会失去当天的最后一个刻度。 fxsaber 2019.06.07 06:19 #124 Bug 16. M1柱状图是存在的,但其他时间段没有显示。 如何讽刺地再现它--不知道。 Slava 2019.06.07 13:03 #125 fxsaber: Bug 16. M1柱状图是存在的,但其他时间段没有显示。 我不知道如何重现它。 那些条形图不是有非零秒的吗? fxsaber 2019.06.07 13:15 #126 Slava: 那些不是有时间的非零秒的条子吗?欧元兑美元有真正的刻度线,条形图是正常的(1分钟的倍数)。 该问题在M1以外的任何时期都很稳定。这就是为什么视频的录制没有任何问题。 但一段时间后,这个问题停止了播放。该符号是由 该分支的专家顾问创建的。 fxsaber 2019.06.11 18:48 #127 Bug 17. 蜱虫的故事 完全消失了。 #define PRINT(A) Print(#A + " = " + (string)(A)) #define SIZE 100 void OnStart() { MathSrand((uint)TimeLocal()); const string Name = _Symbol + (string)MathRand(); MqlTick Ticks[]; PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ. PRINT(SymbolSelect(Name, true)); // Поместили в Обзор рынка PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, D'2019.06.01' * 1000)); // Взяли тики PRINT(ArrayResize(Ticks, SIZE)); // Оставили только SIZE-тиков PRINT(CustomTicksAdd(Name, Ticks)); // Пробросили их все MqlTick NewTicks[]; PRINT(CopyTicksRange(Name, NewTicks)); // Взяли тики, что в истории // PRINT(CustomTicksReplace(Name, 0, LONG_MAX, NewTicks)); // И перезаписали их. PRINT(CopyTicksRange(Name, Ticks)); // Убедились, что тиков в истории ровно SIZE PRINT(CustomTicksDelete(Name, Ticks[SIZE - 1].time_msc - 60 * 1000, LONG_MAX)); // Удалили последнюю минуту PRINT(CopyTicksRange(Name, Ticks)); // Убедились, что тиков стало меньше на удаленное количество } 结果 CustomSymbolCreate(Name,NULL,_Symbol) = true SymbolSelect(Name,true) = true CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,D'2019.06.01'*1000) = 533797 ArrayResize(Ticks,100) = 100 CustomTicksAdd(Name,Ticks) = 100 CopyTicksRange(Name,Ticks) = 100 CustomTicksDelete(Name,Ticks[100-1].time_msc-60*1000,LONG_MAX) = 1 CopyTicksRange(Name,Ticks) = 0 如果你把下划线那一行的注释去掉,脚本就能正常工作。显然,旧的添加类型并不适合替换类型的地方。 fxsaber 2019.06.11 19:42 #128 Bug 18. 当刻度线被移除时,最后一个条形图就会丢失。 #define PRINT(A) Print(#A + " = " + (string)(A)) void OnStart() { MathSrand((uint)TimeLocal()); const string Name = _Symbol + (string)MathRand(); MqlTick Ticks[]; PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ. PRINT(SymbolSelect(Name, true)); // Поместили в Обзор рынка PRINT(CopyTicks(_Symbol, Ticks)); // Взяли тики PRINT(CustomTicksReplace(Name, 0, LONG_MAX, Ticks)); // Записали их. PRINT(CustomTicksDelete(Name, Ticks[ArraySize(Ticks) - 1].time_msc - 60 * 1000, LONG_MAX)); // Удалили последнюю минуту MqlTick LastTick[1]; PRINT(CopyTicks(Name, LastTick, COPY_TICKS_ALL, 0, 1)); // Распечатали последний тик ArrayPrint(LastTick); MqlRates LastBar[1]; PRINT(CopyRates(Name, PERIOD_M1, 0, 1, LastBar)); // Распечатали последний бар ArrayPrint(LastBar); } 结果 CustomSymbolCreate(Name,NULL,_Symbol) = true SymbolSelect(Name,true) = true CopyTicks(_Symbol,Ticks) = 2000 CustomTicksReplace(Name,0,LONG_MAX,Ticks) = 2000 CustomTicksDelete(Name,Ticks[ArraySize(Ticks)-1].time_msc-60*1000,LONG_MAX) = 25 CopyTicks(Name,LastTick,COPY_TICKS_ALL,0,1) = 1 [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] [0] 2019.06.11 22:37:42 1.13284 1.13288 0.0000 0 1560292662809 6 0.00000 CopyRates(Name,PERIOD_M1,0,1,LastBar) = 1 [time] [open] [high] [low] [close] [tick_volume] [spread] [real_volume] [0] 2019.06.11 22:36:00 1.13278 1.13284 1.13278 1.13279 13 3 0 fxsaber 2019.06.12 00:24 #129 Bug 19. 差价的计算不正确。 #define PRINT(A) Print(#A + " = " + (string)(A)) void OnStart() { MathSrand((uint)TimeLocal()); const string Name = _Symbol + (string)MathRand(); PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ. PRINT(SymbolSelect(Name, true)); // Поместили в Обзор рынка MqlTick Tick[1]; if (SymbolInfoTick(_Symbol, Tick[0])) { // Специально задаем отрицательный спред. Tick[0].bid = 1.11643; Tick[0].ask = 1.11632; PRINT(CustomTicksAdd(Name, Tick)); // Пробросили тик. PRINT(SymbolInfoInteger(Name, SYMBOL_SPREAD)); // Смотрим его спред. ArrayPrint(Tick); // Смотрим сам тик. } } 结果 CustomSymbolCreate(Name,NULL,_Symbol) = true SymbolSelect(Name,true) = true CustomTicksAdd(Name,Tick) = 1 SymbolInfoInteger(Name,SYMBOL_SPREAD) = -10 [time] [bid] [ask] [last] [volume] [time_msc] [flags] [volume_real] [0] 2019.06.03 00:32:11 1.11643 1.11632 0.0000 0 1559521931040 6 0.00000 Roman 2019.06.15 21:35 #130 错误20。从错误中删除。在下面的分支中找到了解决方案。 2085自定义符号 属性的设置不正确。 观察到了结果的转变。 属性是根据其中一个选项设置的 CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_FOK); Результат: Filling == None или CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_IOC); Результат: Filling == Fill or Kill или CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, ORDER_FILLING_RETURN); Результат: Filling == Immediate or Cancel 1...67891011121314151617181920...34 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
此外,如果是00:00:01,你就不能用CustomTicksAdd来重塑一个两秒钟前的柱子。
当然你不能。因为在00:00:01到达的tick应该已经形成了下一个bar。在一个正常的情况下。
对于测试者来说,前天的刻度线就是今天的新刻度线。
我明白你的意思。你六个月前的自定义抽搐的练习具有明显的测试者性质。你的情况是不正常的(从普遍做法的意义上讲)。
至于非标准地使用定制的。这就是讨论的目的,找出不同情况下的特殊性,并试图解决它们。
当然,这是不可能的。因为在00:00:01出现的嘀嗒声应该已经形成了下一个条形。在一个正常的情况下。
想象一下,一个服务可以在一秒钟内计时完毕(也许更短,就像你通常在公式上做的那样--100ms)。然后在午夜时分,条形图往往会失去当天的最后一个刻度。
Bug 16.
M1柱状图是存在的,但其他时间段没有显示。
如何讽刺地再现它--不知道。Bug 16.
M1柱状图是存在的,但其他时间段没有显示。
我不知道如何重现它。那些不是有时间的非零秒的条子吗?
欧元兑美元有真正的刻度线,条形图是正常的(1分钟的倍数)。
该问题在M1以外的任何时期都很稳定。这就是为什么视频的录制没有任何问题。
但一段时间后,这个问题停止了播放。该符号是由 该分支的专家顾问创建的。
Bug 17.
蜱虫的故事 完全消失了。
结果
如果你把下划线那一行的注释去掉,脚本就能正常工作。显然,旧的添加类型并不适合替换类型的地方。
Bug 18.
当刻度线被移除时,最后一个条形图就会丢失。
结果
Bug 19.
差价的计算不正确。
结果
错误20。从错误中删除。在下面的分支中找到了解决方案。
2085
自定义符号 属性的设置不正确。
观察到了结果的转变。
属性是根据其中一个选项设置的