アルゴリズム最適化選手権。 - ページ 4

 
Dmitry Fedoseev:
上に並べたユニバーサルメソッドを見てください。また、仲介者を介した一回限りの呼び出しであれば、ルックアップ機能を非常にシビアに適応させる必要があるため、それこそ誰もやらないでしょう。
大げさに考えないでください。解決策はあります。アルゴリズムライブラリから内部FFの呼び出しをなくすにはどうしたらいいか考えてみましょう。
 
Andrey Dik:
大げさに考えないでください。解決策はあります。アルゴリズムライブラリから内部FFの呼び出しをなくすにはどうしたらいいか考えてみてください。
考えても仕方ない、無駄な労力を使う必要はない。
 
Dmitry Fedoseev:

...

それ以外の選択肢はない。可能であれば、関数へのポインタを渡すことができれば別ですが(しかし、今のところ誰もヘルプのどこを見ればよいかを示唆していません)。メンバーはff関数を呼び出す本格的な能力を持っている必要があります。

MetaTrader 5 プラットフォームの新バージョン(ビルド1325):ヘッジ付き取引とリアルティクによるテスト >> で例として挙げられたものです。

MQL5: イベントモデルの構成を容易にするために、関数へのポインターのサポートが追加されました。

関数へのポインタを宣言するには、例えば "pointer to function "型を定義します。

typedef int (*TFunc)(int,int);

TFuncが型になり、関数ポインタ変数を宣言できるようになりました。

TFunc func_ptr;

関数のアドレスをfunc_ptr変数に格納しておくと、後で呼び出すことができます。

int sub(int x,int y) { return(x-y); }
int add(int x,int y) { return(x+y); }
int neg(int x)       { return(~x);  }

func_ptr=sub;
Print(func_ptr(10,5));

func_ptr=add;
Print(func_ptr(10,5));

func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
Print(func_ptr(10));    // ошибка: должно быть два параметра

関数へのポインタを格納し、パラメータとして渡すことができる。クラスの非静的メソッドへのポインタを取得することはできません。

 

例えば、このクラスから私のメソッドを紹介します。

      void Evolution(){ 
         

         for(int c=0;c<GenerationsCount;c++){
         
            f0(); // расчет значений фф для каждого индивида
            f1();         
            f2();
            f3();
            f4();
            
         }
         
         f5();
         f6();

      }

さて、どうすればいいのでしょうか。そして何より、現実には決して必要ではないのに、なぜそれを考えるのか。最適化アルゴリズムの選手権が、お尻から使える関数に適応する選手権に変わる。

関数は何回呼び出されたかを数えることができます。出題者がインポートを 行った場合、その番号をファイルに書き込んで、実行前にゼロにすることができます。

クラスで使うのがベストで、そうすればちょうど数量が揃う。ここでは不正は排除されます。

 
Dmitry Fedoseev:
考えるまでもなく、無駄な労力を使う必要はない。

OKです。特に問題はありません。それから、アルゴリズムを運用するチャンピオンシップには2つの選択肢があります。

1.アルゴリズム内部からFFを呼び出すことで、(結局、アルゴリズムはFFのある閉じたバイブルの内部でFFが何であるかを知ることはないでしょう)

2.アルゴリズム内からFFを呼び出すことなく、単に結果をアルゴリズムに渡す。

この2つのオプションで、最適化アルゴリズムの使用に関するあらゆるバリエーションをカバーできるのではないでしょうか。参加者に会う必要があります。誰もが高度なプログラミングの知識を持っているわけではありません(例えば私はプロではありません、普遍性のためにアルゴリズムをパーツに分割するのに数ヶ月かかりました)))

 

ありがとうございます。

クラスと同じように簡単にはいかない。クラスがあればもっと簡単だと言ってもいいくらいです。

 
Andrey Dik:

OKです。問題ありません。それから、チャンピオンシップのアルゴリズムの運用には、2つの選択肢があります。

1.アルゴリズム内部からFFを呼び出すことで、(結局、アルゴリズムはFFのある閉じたバイブルの内部でFFが何であるかを知ることはないでしょう)

2.アルゴリズム内からFFを呼び出すことなく、単に結果をアルゴリズムに渡す。

この2つのオプションで、最適化アルゴリズムの使用に関するあらゆるバリエーションをカバーできるのではないでしょうか。参加者に会う必要があります。誰もが高度なプログラミングの知識を持っているわけではありません(例えば私はプロではありません、普遍性のためにアルゴリズムをパーツに分割するのに数ヶ月かかりました)))

時間が余っている方も大歓迎です。のみです。2は需要がないでしょう。
 
Dmitry Fedoseev:
時間が余ったら、ぜひ。のみです。2は需要がないでしょう。
まあ、それは私たちが判断することではありません。あなたにはオプション1があり、私にはオプション2がある。 そして、他の参加者がどうするかは誰にもわからない。そして、その時の様子は?- 上の例のスクリプトは5分で書きました、確立された2つのバリエーションに来るんでしょうね。
 
Andrey Dik:
まあ、それを判断することは許されませんが。そして、他の参加者がどうするかは誰にもわからない。そして、その時の様子は?- の例は、5分で上に書かれたスクリプトなので、確立された2つの選択肢に来るのでしょう。
オプション2の可能性があるため、どのように推測するかを考えることさえできない?当たり前じゃないんです。
 
Dmitry Fedoseev:
Variant 2がどのように起こるのか、推測することすら思いつかないのですが?それは自然なことではありません。

簡単な例です。最適化アルゴリズムは、どこかのチャートにぶら下がっている。Expert Advisorは、内蔵のテスターでフルサーチにより最適化 されています。そのため、通常の最適化アルゴリズムではなく、独自の最適化アルゴリズムを使用することができます。

もう一つの例。Expert Advisorは、チャートの中で動作し、取引を行います。取引結果をアルゴリズム(Expert Advisor の内部または外部)にパラメータと一緒に保存し、新しいパラメータを受信して取引を継続します(あなたのケースでは履歴を実行する必要がありますが、私のケースでは「ライブ」最適化を使用することができます)。

といった具合に。つまり、これらの例では、アルゴリズムはタスクから完全に独立しているのである。

これらの例を、あえてトレードに当てはめてみたのです。私たちはトレーダーです。