アルゴリズム、解法、性能比較 - ページ 16 1...91011121314151617181920212223 新しいコメント Alexandr Andreev 2017.12.11 09:11 #151 Реter Konow:これは興味深く、有用な提案です。並行記録の維持私の他のソリューションで行いました。 ただ、Expert Advisorが発注 する注文の数は不明です。int配列のサイズはどのように設定すればよいのでしょうか?だから、紐を取ることにしたんです。100要素のマージンを設定し、100要素ずつ追加していく...。文字列は同じ実装 fxsaber 2017.12.11 09:12 #152 Alexandr Andreev: Genericファイルが見つからず、古いビルドのよう です。では、ナビゲーションの原理はどのように提供されるのでしょうか。ソースコードはどうなっているのでしょうか。https://www.mql5.com/ru/forum/221917 Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения 2017.12.07www.mql5.com С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен... Реter Konow 2017.12.11 09:14 #153 Vasiliy Sokolov:Peterさん、ArrayResize()という素晴らしい関数があるんですよ。これにより、実行時に配列のサイズを大きくすることができます。オプションとして、考えていました。 1.スピードという観点から疑った。 2.コードの観点からは、行数が増え、混乱が生じます。配列のサイズを 変更すると、そこからデータが消えてしまう(私の勘違いでなければ)。そのため、別の配列に格納する必要があり、その配列もインクリメントされる必要があります。 その結果、先ほどのような何度も書き直しをすることになるのです。 Alexandr Andreev 2017.12.11 09:15 #154 Реter Konow:オプションとして-考えた。 1.スピードの面では......疑問が残る。 2.コードの観点からは、行数が増え、混乱が生じます。配列のサイズを変更すると、そこからデータが消えてしまう(私の勘違いでなければ)。そのため、別の配列に確保する必要があり、それも増やさなければならない。 先ほどの話のように、何度も書き直しをすることになるのです。いいえ、そうではありません。 Реter Konow 2017.12.11 09:17 #155 Alexandr Andreev: いいえ、そうではありません。 本当ですか? Vasiliy Sokolov 2017.12.11 09:22 #156 Реter Konow: 本当ですか?はい、データは消えません。 Alexandr Andreev 2017.12.11 09:24 #157 Реter Konow: 本当ですか?template<typename T> void ArrayAdd(T &m[], T& a) {m[ArrayResize(m,ArraySize(m)+1,100)-1)]=a;}実は、その線が......騒がれているんです。は配列の末尾に要素を追加します。 それ以外はすべて些細なことです。 シートでも原理は同じですが、クラスに詰め込んでいます。 Sergey Dzyublik 2017.12.11 09: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 09: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 09:40 #160 Alexandr Andreev: 実は、このライン......大騒ぎになるんです。は配列の末尾に要素を追加します。 それ以外はすべて些細なことです。 シートの中で、追加する原理は同じですが、クラスにパックされた完璧なバリエーションが見つかったようだ。皆さんもぜひチェックしてみてください。もし、サイズが変わっても配列からデータが消えないことが確認できたら、解決策はこうなります。//+------------------------------------------------------------------+ //| 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千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これは興味深く、有用な提案です。並行記録の維持私の他のソリューションで行いました。
ただ、Expert Advisorが発注 する注文の数は不明です。int配列のサイズはどのように設定すればよいのでしょうか?
だから、紐を取ることにしたんです。
100要素のマージンを設定し、100要素ずつ追加していく...。文字列は同じ実装
Genericファイルが見つからず、古いビルドのよう です。では、ナビゲーションの原理はどのように提供されるのでしょうか。ソースコードはどうなっているのでしょうか。
https://www.mql5.com/ru/forum/221917
Peterさん、ArrayResize()という素晴らしい関数があるんですよ。これにより、実行時に配列のサイズを大きくすることができます。
オプションとして、考えていました。
1.スピードという観点から疑った。
2.コードの観点からは、行数が増え、混乱が生じます。
配列のサイズを 変更すると、そこからデータが消えてしまう(私の勘違いでなければ)。
そのため、別の配列に格納する必要があり、その配列もインクリメントされる必要があります。
その結果、先ほどのような何度も書き直しをすることになるのです。
オプションとして-考えた。
1.スピードの面では......疑問が残る。
2.コードの観点からは、行数が増え、混乱が生じます。
配列のサイズを変更すると、そこからデータが消えてしまう(私の勘違いでなければ)。
そのため、別の配列に確保する必要があり、それも増やさなければならない。
先ほどの話のように、何度も書き直しをすることになるのです。
いいえ、そうではありません。
いいえ、そうではありません。
本当ですか?
はい、データは消えません。
本当ですか?
実は、その線が......騒がれているんです。は配列の末尾に要素を追加します。 それ以外はすべて些細なことです。
シートでも原理は同じですが、クラスに詰め込んでいます。2.コードという点では、行数が増え、混乱が生じます。
なんて分かりにくいんだ、読むのにどれだけ労力がいるんだ......。
あなたのソリューションは、100%より美しく、よりエレガントで、より高速です。
CHashMap上での近似解。
実は、このライン......大騒ぎになるんです。は配列の末尾に要素を追加します。 それ以外はすべて些細なことです。
シートの中で、追加する原理は同じですが、クラスにパックされた完璧なバリエーションが見つかったようだ。皆さんもぜひチェックしてみてください。
もし、サイズが変わっても配列からデータが消えないことが確認できたら、解決策はこうなります。