算法、解决方法、其性能的比较 - 页 16 1...91011121314151617181920212223 新评论 Alexandr Andreev 2017.12.11 10:11 #151 Реter Konow:这是一个有趣和有用的建议。保持平行记录。在我的其他解决方案中做到了这一点。 我们唯一不知道的是专家顾问将下的订单数量。我们应该为int数组设置什么大小?这就是为什么我决定接受这根绳子。你设定一个100个元素的保证金,然后每次添加100个元素...字符串有相同的实现 fxsaber 2017.12.11 10:12 #152 Alexandr Andreev: 我找不到通用 文件,它似乎是一个旧版本。那么,将如何提供导航原则 - 源代码是什么?https://www.mql5.com/ru/forum/221917 Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения 2017.12.07www.mql5.com С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен... Реter Konow 2017.12.11 10:14 #153 Vasiliy Sokolov:彼得,有一个很好的函数叫ArrayResize()。它允许你在运行时增加一个数组的大小。作为一种选择,我正在考虑这个问题。 1.从速度的角度来看,我对它表示怀疑。 2.从代码的角度来看--更多的行和更多的混乱。当数组被调整大小时,数据会从中消失(如果我没记错的话)。因此,它们必须被存储在另一个数组中,这个数组也必须被递增。 这就造成了我前面提到的来回改写的情况。 Alexandr Andreev 2017.12.11 10:15 #154 Реter Konow:作为一种选择--想到了这一点。 1.在速度方面--受到质疑。 2.从代码的角度来看--更多的行和更多的混乱。当数组被调整大小时,数据会从中消失(如果我没记错的话)。所以它们必须保留在另一个数组中,这个数组也必须增加。 你会得到我之前所说的来回改写的情况。不,他们没有。 Реter Konow 2017.12.11 10:17 #155 Alexandr Andreev: 不,他们没有。 你确定吗? Vasiliy Sokolov 2017.12.11 10:22 #156 Реter Konow: 你确定吗?是的,数据并没有消失。 Alexandr Andreev 2017.12.11 10:24 #157 Реter Konow: 你确定吗?template<typename T> void ArrayAdd(T &m[], T& a) {m[ArrayResize(m,ArraySize(m)+1,100)-1)]=a;}事实上,是line.... 引起了所有的骚动。将一个元素添加到数组的末尾,其他都是微不足道的。 原理在片子里是一样的,但打包成一个类。 Sergey Dzyublik 2017.12.11 10:31 #158 Реter Konow:2.在代码方面--更多的行和更多的混乱。 #include <Generic\ArrayList.mqh> CArrayList<int> collection; int value_set = 1; collection.Add(value_set); int index = 0; int value_get = -1; collection.TryGetValue(index,value_get); 多么令人困惑,要花多少精力去阅读...... 你的解决方案是100%的更漂亮、更优雅和更快。 Vasiliy Sokolov 2017.12.11 10:34 #159 一个关于CHashMap的近似解决方案。//+------------------------------------------------------------------+ //| RandomTickets.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #include <Generic\HashMap.mqh> input int RandomDeals = 24000; CHashMap<int, int> MagicsByDeals; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(int i = 0; i < RandomDeals; i++) MagicsByDeals.Add(MathRand(), MathRand()); MagicsByDeals.Add(1337, MathRand()); ulong msec = GetMicrosecondCount(); bool res = MagicsByDeals.ContainsKey(1337); string t = (string)(GetMicrosecondCount()-msec); printf("Время выполнения запроса: " + t + " микросекунд"); if(res) printf("Сдлека с номером 1337 была удачно найдена"); else printf("Сдлека с номером 1337 не найдено"); } //+------------------------------------------------------------------+ Реter Konow 2017.12.11 10:40 #160 Alexandr Andreev: 事实上,是line.... 引起了所有的骚动。将一个元素添加到数组的末尾,其他都是微不足道的。 在表单中,添加的原则是相同的,只是打包成了一个类。似乎已经找到了完美的变体。我请大家检查一下。如果我确定数据在调整大小时不会从数组中消失,解决方案就是这样。//+------------------------------------------------------------------+ //| Magic 2.mq5 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ int All_magics[]; int order_number; int Random_orders_of_strategy; //+------------------------------------------------------------------+ void Save_magic(int magic) { order_number++; //--------------------------------- //Записываем каждый магик вместе с порядковым номером ордера. //--------------------------------- ArrayResize(All_magics,order_number); All_magics[order_number - 1] = magic; //--------------------------------- } //+------------------------------------------------------------------+ void Trading() { Random_orders_of_strategy = MathRand(); //---------------------------------------- //Имитируем открытие неопределенного количества ордеров стратегии. //---------------------------------------- for(int a1 = 0; a1 < Random_orders_of_strategy; a1++) { int this_magic = MathRand(); //---------------------------- Save_magic(this_magic); //---------------------------- } //---------------------------------------- } //+------------------------------------------------------------------+ int Get_magic(int deal_number) { return(All_magics[deal_number - 1]); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Trading(); //-------------------------- ulong t1 = GetMicrosecondCount(); Get_magic(1000); ulong t2 = GetMicrosecondCount(); //-------------------------- Print("Время исполнения функции Get_magic() при количестве ордеров ",Random_orders_of_strategy," равно ",t2 - t1); //-------------------------- Print("Random_orders_of_strategy ",Random_orders_of_strategy); Print("magic 1: ",Get_magic(1)," magic 2: ",Get_magic(2)," magic 3: ",Get_magic(3)); } //+------------------------------------------------------------------+ 1...91011121314151617181920212223 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是一个有趣和有用的建议。保持平行记录。在我的其他解决方案中做到了这一点。
我们唯一不知道的是专家顾问将下的订单数量。我们应该为int数组设置什么大小?
这就是为什么我决定接受这根绳子。
你设定一个100个元素的保证金,然后每次添加100个元素...字符串有相同的实现
我找不到通用 文件,它似乎是一个旧版本。那么,将如何提供导航原则 - 源代码是什么?
https://www.mql5.com/ru/forum/221917
彼得,有一个很好的函数叫ArrayResize()。它允许你在运行时增加一个数组的大小。
作为一种选择,我正在考虑这个问题。
1.从速度的角度来看,我对它表示怀疑。
2.从代码的角度来看--更多的行和更多的混乱。
当数组被调整大小时,数据会从中消失(如果我没记错的话)。
因此,它们必须被存储在另一个数组中,这个数组也必须被递增。
这就造成了我前面提到的来回改写的情况。
作为一种选择--想到了这一点。
1.在速度方面--受到质疑。
2.从代码的角度来看--更多的行和更多的混乱。
当数组被调整大小时,数据会从中消失(如果我没记错的话)。
所以它们必须保留在另一个数组中,这个数组也必须增加。
你会得到我之前所说的来回改写的情况。
不,他们没有。
不,他们没有。
你确定吗?
是的,数据并没有消失。
你确定吗?
事实上,是line.... 引起了所有的骚动。将一个元素添加到数组的末尾,其他都是微不足道的。
原理在片子里是一样的,但打包成一个类。2.在代码方面--更多的行和更多的混乱。
多么令人困惑,要花多少精力去阅读......
你的解决方案是100%的更漂亮、更优雅和更快。
一个关于CHashMap的近似解决方案。
事实上,是line.... 引起了所有的骚动。将一个元素添加到数组的末尾,其他都是微不足道的。
在表单中,添加的原则是相同的,只是打包成了一个类。似乎已经找到了完美的变体。我请大家检查一下。
如果我确定数据在调整大小时不会从数组中消失,解决方案就是这样。