程序库: 交易品种 - 页 9 123456789101112 新评论 Andrey Khatimlianskii 2020.03.28 12:00 #81 Stanislav Korotky:一个有趣的问题出现了--在堆栈中没有观察到同样的问题--那么堆栈 中的价格 是否与图表中的不同?一位用户向我抱怨基于 BookEvent 的诱导器和图表不同步。 堆栈应与市场观察相对应。因此,它可能与图表不同。 fxsaber 2020.04.07 21:15 #82 fxsaber:因此,在 Tester 中,您无法在原始符号上重现终端中看到的内容。 以下是您在终端中看到的情况。 交易在 "空中 "进行。指标进入森林。只有勾选历史 的分界线。 Igor Makanu 2020.07.04 22:01 #83 我不知道出了什么问题,可能是新的 2515 版本做错了什么。 这是脚本: #property copyright "IgorM" #property link "https://www.mql5.com/zh/users/igorm" #property version "1.00" #property script_show_inputs input int History = 1 e5; input double Weierstrass_A = 0.33; input double Weierstrass_B = 1.5; input int Weierstrass_N = 10; input double Weierstrass_Koeff = 0.45; #include <fxsaber\Symbol.mqh> // https://www.mql5.com/zh/code/18855 //+------------------------------------------------------------------+ //| 脚本程序启动功能| //+------------------------------------------------------------------+ void OnStart() { const SYMBOL SymbDB("W" + _Symbol); datetime dt_end = TimeCurrent(); if(!SymbDB.IsExist()) // 如果未创建符号,则退出 { Alert("Error create Weierstrass func, symbol = ", "W" + _Symbol); return; } SymbDB.Off(); SymbDB.CloneProperties(); // 复制属性 if(CustomRatesDelete(SymbDB.Name, 0, dt_end) == -1) { Alert("Error CustomRatesDelete , GetLastError = ", GetLastError()); return; } // 找到用于归一化的系数 int fw_MAX = INT_MIN, fw_MIN = INT_MAX; for(int i = 4 * History; i >= 0; i--) { int wtmp = FuncWeierstrass(Weierstrass_A, Weierstrass_B, Weierstrass_N, i); if(wtmp > fw_MAX) fw_MAX = wtmp; if(wtmp < fw_MIN) fw_MIN = wtmp; } const int fw_knorm = fw_MAX - fw_MIN; // 通过记录刻度线创建图表 MqlTick ticks[]; ArrayResize(ticks, History * 4); for(int i = 4 * History - 1; i >= 0; i--) { int wtmp = FuncWeierstrass(Weierstrass_A, Weierstrass_B, Weierstrass_N, i); ticks[i].last = ticks[i].bid = ticks[i].ask = NormalizeDouble(1.0 + Weierstrass_Koeff * (2.0 * (wtmp - fw_MIN) / fw_knorm - 1), _Digits); ticks[i].bid -= _Point; ticks[i].time_msc = ticks[i].time = dt_end--; ticks[i].time_msc *= 1000; ticks[i].volume = 1; ticks[i].volume_real = 1.0; ticks[i].flags = TICK_FLAG_ASK | TICK_FLAG_BID; } CustomTicksAdd(SymbDB.Name, ticks); if(SymbDB.On()) // 包括在市场观察中 ChartOpen(SymbDB.Name, PERIOD_M1); // 打开一个新的符号图表 } //+------------------------------------------------------------------+ int FuncWeierstrass(const double Wa, const double Wb, const int WN, const int cnt) { int result = 0; for(int i = 0; i <= WN; i++) { result += (int)(MathPow(Wb, i) * MathCos(MathPow(Wa, i) * M_PI * cnt)); } return(result); } //+------------------------------------------------------------------+ 一切正常,但只能运行一次。 重启时会出现黑屏 "等待更新",手动删除自定义符号 后即可解决 是程序库还是终端的新版本出了问题? fxsaber 2020.07.04 22:10 #84 Igor Makanu:是程序库还是新版终端无法正常工作? 我不知道。我不使用 TicksAdd。 Igor Makanu 2020.07.04 22:52 #85 fxsaber:我不知道。我不用 TicksAdd。 我想我明白了,所以我在代码中将其替换为 CustomTicksAdd(SymbDB.Name, ticks); 用 CustomTicksReplace(SymbDB.Name,0,TimeCurrent()*1000,ticks); 重新启动脚本后,它现在似乎可以工作了,唯一的问题是市场概览窗口中没有 Ask/Bid 符号值,但这并不重要。 更新: 应仔细阅读帮助,一切正常,但CustomTicksAdd 在将符号添加到市场概览时才能正常工作,即应这样使用 if(SymbDB.On()) // 包括在市场观察中 { CustomTicksAdd(SymbDB.Name, ticks); ChartOpen(SymbDB.Name, PERIOD_M1); // 打开一个新的符号图表 } Stanislav Korotky 2021.01.28 17:23 #86 我在 MT 中发现了一个令人不快的错误--由于某些原因,它没有设置SYMBOL_TRADE_TICK_SIZE。调试显示,正确的值被写入该属性(例如,欧元兑美元的值为 0.00001),但创建一个符号后,该值为 0。 有人解决过这个问题吗?这是 MT 的错误还是符号库的特殊性? Vladimir Karputov 2021.01.28 17:25 #87 Stanislav Korotky:我在 MT 中发现了一个令人不快的错误--由于某些原因,它没有设置SYMBOL_TRADE_TICK_SIZE。调试显示,正确的值被写入该属性(例如,欧元兑美元的值为 0.00001),但创建符号后,该值为 0。有人解决过这个问题吗?这是 MT 的错误还是符号库的特殊性? 是只看到 "0",还是轮询属性后得到 "0"? fxsaber 2021.01.28 18:31 #88 Stanislav Korotky:我在 MT 中发现了一个令人不快的错误--由于某些原因,它没有设置SYMBOL_TRADE_TICK_SIZE。调试显示,正确的值被写入该属性(例如,欧元兑美元的值为 0.00001),但创建符号后,该值为 0。有人解决过这个问题吗?这是 MT 的错误还是符号库的特殊性? 可能取决于设置字段的顺序。我是这样设置的 this.SetProperty(SYMBOL_DIGITS, this.Ticks.GetDigits()); this.SetProperty(SYMBOL_TRADE_CONTRACT_SIZE, 1 e5); // https://www.mql5.com/ru/forum/330333#comment_14608694 this.SetProperty(SYMBOL_TRADE_TICK_VALUE, 1); this.SetProperty(SYMBOL_TRADE_TICK_SIZE, this.GetProperty(SYMBOL_POINT)); Stanislav Korotky 2021.01.28 18:56 #89 fxsaber:这可能取决于实地任务分配的顺序。我是这样做的 我使用的是 CloneProperties 调用,其中有这么几行(在当前公开版本中): ... CLONE(SYMBOL_TRADE_CONTRACT_SIZE) && CLONE(SYMBOL_TRADE_FACE_VALUE) && CLONE(SYMBOL_TRADE_LIQUIDITY_RATE) && CLONE(SYMBOL_TRADE_TICK_SIZE) && CLONE(SYMBOL_TRADE_TICK_VALUE) && ... 这里的顺序略有不同,但正确的值都转移到了合约和其他属性上,唯一的问题是刻度线大小。 Stanislav Korotky 2021.01.28 19:13 #90 在调用 CloneProperties 之后,我写了这些废话: Symb.CloneProperties(_Symbol); if(SymbolInfoDouble(_SymbolName, SYMBOL_TRADE_TICK_SIZE) == 0) { CustomSymbolSetDouble(_SymbolName, SYMBOL_TRADE_TICK_SIZE, SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE)); } 正常情况下是这样应用的。但这是某种拐杖。 123456789101112 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
一个有趣的问题出现了--在堆栈中没有观察到同样的问题--那么堆栈 中的价格 是否与图表中的不同?
一位用户向我抱怨基于 BookEvent 的诱导器和图表不同步。
堆栈应与市场观察相对应。因此,它可能与图表不同。
因此,在 Tester 中,您无法在原始符号上重现终端中看到的内容。
以下是您在终端中看到的情况。
交易在 "空中 "进行。指标进入森林。只有勾选历史 的分界线。
我不知道出了什么问题,可能是新的 2515 版本做错了什么。
这是脚本:
一切正常,但只能运行一次。
重启时会出现黑屏 "等待更新",手动删除自定义符号 后即可解决
是程序库还是终端的新版本出了问题?
是程序库还是新版终端无法正常工作?
我不知道。我不使用 TicksAdd。
我不知道。我不用 TicksAdd。
我想我明白了,所以我在代码中将其替换为
CustomTicksAdd(SymbDB.Name, ticks);用
重新启动脚本后,它现在似乎可以工作了,唯一的问题是市场概览窗口中没有 Ask/Bid 符号值,但这并不重要。
更新:
应仔细阅读帮助,一切正常,但CustomTicksAdd 在将符号添加到市场概览时才能正常工作,即应这样使用
我在 MT 中发现了一个令人不快的错误--由于某些原因,它没有设置SYMBOL_TRADE_TICK_SIZE。调试显示,正确的值被写入该属性(例如,欧元兑美元的值为 0.00001),但创建一个符号后,该值为 0。
有人解决过这个问题吗?这是 MT 的错误还是符号库的特殊性?
我在 MT 中发现了一个令人不快的错误--由于某些原因,它没有设置SYMBOL_TRADE_TICK_SIZE。调试显示,正确的值被写入该属性(例如,欧元兑美元的值为 0.00001),但创建符号后,该值为 0。
有人解决过这个问题吗?这是 MT 的错误还是符号库的特殊性?
是只看到 "0",还是轮询属性后得到 "0"?
我在 MT 中发现了一个令人不快的错误--由于某些原因,它没有设置SYMBOL_TRADE_TICK_SIZE。调试显示,正确的值被写入该属性(例如,欧元兑美元的值为 0.00001),但创建符号后,该值为 0。
有人解决过这个问题吗?这是 MT 的错误还是符号库的特殊性?
可能取决于设置字段的顺序。我是这样设置的
这可能取决于实地任务分配的顺序。我是这样做的
我使用的是 CloneProperties 调用,其中有这么几行(在当前公开版本中):
这里的顺序略有不同,但正确的值都转移到了合约和其他属性上,唯一的问题是刻度线大小。
在调用 CloneProperties 之后,我写了这些废话:
正常情况下是这样应用的。但这是某种拐杖。