mql5言語の特徴、微妙なニュアンスとテクニック - ページ 223 1...216217218219220221222223224225226227228229230...247 新しいコメント Koldun Zloy 2022.06.20 05:53 #2221 fxsaber #:数値フィールドがソートに使われる特殊なケース(最も一般的な状況)のために、私は以前のものより数桁高速な変種を書いた。しかし、メモリを2倍消費する。これは大きな配列に関係する。アプリケーション(実行時間の測定付き)。結果 このオプションをどう思いますか? #include <QuickSort.mqh> #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 #define _BV2(A) _BV(A, 100) // Алертим все, что исполняется дольше 100 микросекунд. struct STRUCT : public MqlTick { double Num; }; typedef bool (*FuncLess)( const STRUCT&, const STRUCT& ); bool Less( const STRUCT& struct1, const STRUCT& struct2 ) { return struct1.Num < struct2.Num; } void function1( STRUCT& array[] ) { QuickSort< STRUCT, FuncLess >( array, Less ); } void OnStart() { STRUCT Array[]; const int Size = ArrayResize(Array, 1 e5); for (int i = Size - 1; i >= 0; i--) Array[i].Num = Size - i; // _BV2(ArraySortStruct(Array, Num)); // _BV2(ArraySortStruct2(Array, Num)); _BV2( function1( Array ) ); } fxsaber 2022.06.20 06:21 #2222 Koldun Zloy #:これはどうだ? テストできないんだ。 Koldun Zloy 2022.06.20 06:38 #2223 fxsaber #:チェックしない。 クイックソートのライブラリはこちら Быстрая сортировка. www.mql5.com Функции для сортировки массивов. Позволяют сортировать строки и структуры по любому условию. fxsaber 2022.06.20 08:11 #2224 Koldun Zloy #:クイックソートのライブラリはこちら ありがとう!私もQuickSortを持って いるようだが、なぜかものすごく遅い。 あなたのオプションは、より速く使用するために、何らかの方法でマクロに包むことができるかもしれません... Koldun Zloy 2022.06.20 11:17 #2225 fxsaber #:ありがとう!QuickSortも持って いるようですが、なぜかブレーキが乱暴です。あなたのオプションはマクロで包んで、より速く使えるようにできるかもしれない...。 マクロが必要な理由がわからない。そのままで非常にシンプルだ。 Maxim Kuznetsov 2022.06.20 18:19 #2226 C言語でこのような書式を作成するにはどうすればよいでしょうか: int sort(void *arr,size_t isize,size_t size, int (*cmp)(void *item1,void *item2)); /// типовой прототип sort с функцией сравнения ??? テンプレートをソートしようとしている: template <typename T> int sort(T &arr[],int (*cmp)(const T &,const T&)){. } 引数に関数ポインタを入れることはできません。引数に関数ポインタを入れることはできません。 しかし、typedefはテンプレートにはなりえない。 macromsはこのような問題を解決してくれる :-) mktr8591 2022.06.21 11:02 #2227 Maxim Kuznetsov #:C言語でこのような書式を作成する場合、どのようにすればよいのだろうか: int sort(void *arr,size_t isize,size_t size, int (*cmp)(void *item1,void *item2)); /// типовой прототип sort с функцией сравнения ???テンプレートを使おうとしています:引数に関数ポインターを入れることはできません。引数に関数ポインターを入れることはできません。しかし、typedefをテンプレートにすることはできない。macromsはこのような問題を解決してくれる :-) template <typename T> struct SORT { typedef int (*cmp)(const T &, const T&); static int Do(T &arr[], cmp) {return 0;} }; int SortInt(const int &, const int &) {return 0;} void OnStart() { int arr[]; SORT<int>::Do(arr, SortInt); } mktr8591 2022.06.21 16:57 #2228 私はMQL(およびC++)の明白ではない機能を発見した。 class C1 { public: virtual void f1(int p = 1) {Print(p);} }; class C2: public C1 { public: virtual void f1(int p = 2) {Print(p);} }; void OnStart() { C2 obj; C1 *p = &obj; p.f1(); //Prints "1" } つまり、メソッド呼び出し(p.f1())の時点でパラメータ(p)にデフォルト値が代入され、この値はクラスC1のメソッド記述から取得される(オブジェクトobjの実際の型ではなく、変数ptrの宣言された型である。 (一般的には論理的である)。 Andrey Dik 2022.06.24 10:44 #2229 取引、自動取引システム、取引戦略のテストに関するフォーラム エラー、バグ、質問 Andrey Dik, 2022.06.24 08:38 MQL_VISUAL_MODEは MQL_TESTERの特殊なケースですか? MQL_OPTIMIZATIONはMQL_TESTERの特殊なケース ですか? つまり、MQL_TESTERは MQL_VISUAL_ MODEとMQL_OPTIMIZATIONの両方を含みますか? MQLInfoInteger()をチェックする際に、このケースに適したフラグを選択する方法がわかりません。 例えば、このように非常に単純に行うことができます: if (MQLInfoInteger(MQL_VISUAL_MODE) || MQLInfoInteger(MQL_CHART_MODE)) { //выполняем некоторые действия } しかし、MQL_CHART_MODE フラグは mql5では提供されて いません。 どなたかお考えがありますか? Features of the mql5 Maxim Kuznetsov 2022.06.24 11:47 #2230 Andrey Dik #: どう思う? if (ChartID()!=0) { // Graphical chart presents // draws on it } 1...216217218219220221222223224225226227228229230...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
数値フィールドがソートに使われる特殊なケース(最も一般的な状況)のために、私は以前のものより数桁高速な変種を書いた。しかし、メモリを2倍消費する。これは大きな配列に関係する。
アプリケーション(実行時間の測定付き)。
結果
このオプションをどう思いますか?
これはどうだ?
テストできないんだ。
チェックしない。
クイックソートのライブラリはこちら
クイックソートのライブラリはこちら
ありがとう!私もQuickSortを持って いるようだが、なぜかものすごく遅い。
あなたのオプションは、より速く使用するために、何らかの方法でマクロに包むことができるかもしれません...
ありがとう!QuickSortも持って いるようですが、なぜかブレーキが乱暴です。
あなたのオプションはマクロで包んで、より速く使えるようにできるかもしれない...。
マクロが必要な理由がわからない。そのままで非常にシンプルだ。
C言語でこのような書式を作成するにはどうすればよいでしょうか:
int sort(void *arr,size_t isize,size_t size, int (*cmp)(void *item1,void *item2)); /// типовой прототип sort с функцией сравнения
???
テンプレートをソートしようとしている:
template <typename T>
int sort(T &arr[],int (*cmp)(const T &,const T&))
{.
}
引数に関数ポインタを入れることはできません。引数に関数ポインタを入れることはできません。
しかし、typedefはテンプレートにはなりえない。
macromsはこのような問題を解決してくれる :-)
C言語でこのような書式を作成する場合、どのようにすればよいのだろうか:
int sort(void *arr,size_t isize,size_t size, int (*cmp)(void *item1,void *item2)); /// типовой прототип sort с функцией сравнения
???
テンプレートを使おうとしています:
引数に関数ポインターを入れることはできません。引数に関数ポインターを入れることはできません。
しかし、typedefをテンプレートにすることはできない。
macromsはこのような問題を解決してくれる :-)
私はMQL(およびC++)の明白ではない機能を発見した。
つまり、メソッド呼び出し(p.f1())の時点でパラメータ(p)にデフォルト値が代入され、この値はクラスC1のメソッド記述から取得される(オブジェクトobjの実際の型ではなく、変数ptrの宣言された型である。
(一般的には論理的である)。
取引、自動取引システム、取引戦略のテストに関するフォーラム
エラー、バグ、質問
Andrey Dik, 2022.06.24 08:38
MQL_VISUAL_MODEは MQL_TESTERの特殊なケースですか?
MQL_OPTIMIZATIONはMQL_TESTERの特殊なケース ですか?
つまり、MQL_TESTERは MQL_VISUAL_ MODEとMQL_OPTIMIZATIONの両方を含みますか?
MQLInfoInteger()をチェックする際に、このケースに適したフラグを選択する方法がわかりません。
例えば、このように非常に単純に行うことができます:
if (MQLInfoInteger(MQL_VISUAL_MODE) || MQLInfoInteger(MQL_CHART_MODE))
{
//выполняем некоторые действия
}
しかし、MQL_CHART_MODE フラグは mql5では提供されて いません。
どなたかお考えがありますか?
どう思う?
if (ChartID()!=0) {
// Graphical chart presents
// draws on it
}