アルゴリズム、解法、性能比較 - ページ 13

 
Реter Konow:

2.EAへの統合が ポイントです。もし、その解決策が超難解だとしたら(Sergey Dzyublikの 解決策がどのように機能するか説明することさえできないでしょう)、トレーダーにとってその実用的 価値は何でしょうか?超複雑なソリューションから普通のEAを作ることはできない。

提案された解決策は、すぐに声が上がりました。

しかし、それが何であるかさえも聞かなかった人がいた。実装はもっと「わかりやすく」できたはずです。でも、考え方の基本は変わらないでしょう。

 
Реter Konow:

1.実践の面では、事実と戦うための空虚な言葉です。マジシャンを見つけるための時間計測を示しました。EAにソリューションを組み込むことの利便性を示しました。あなたが示しているのは、私のソリューションに対する誹謗中傷だけです。他にはありません。

2.EAへの統合が ポイントです。もし、その解決策が超複雑なものであった場合(Sergey Dzyublikの 解決策がどのように機能するか説明することさえできないでしょう)、トレーダーにとってその実用的 価値は何でしょうか?超複雑なソリューションから普通のEAを作ることはできない。

Sergey Dzyublikの 解答を批判しているわけではありません。まだ説明してないんですよ。彼が説明すれば、誰が「この騒動を始めた」のかが明らかになる。


ここで、私はあなたに返答したかったのですが、司会者が先回りして、同じことを言ったのです。そこで、もう一度、彼の言葉を紹介します。

アルチョム・トリシキン

いや、他人のソリューションスタイルを提案するわけではないんです。自分のスタイルで書く - 誰も何かを押し付けることはありません。

しかし、私は、あなた特有の粘り強さで、最初は最善の方法で問題を解決することを提案しているのです。何してるんですか?

1.最初は、すべての可能な解の中から最も劣悪な解を選び、それを使って遊び始めるのです。この課題では、解決策を考える段階でも、自分のバージョンを否定するだけでなく、その方向で考えてはいけないということさえありましたね。また、テキストを扱う機能はそのためのものではありません。

2.Expert Advisorへの統合や提案されたソリューションの利点については、提案者に答えてもらいましょう。


P.S. あなたはとても悪い生徒なのでしょうね :)

 
Реter Konow:

自分の間違いは、納得した時点ですぐに気づく。今 のところ、私の判断が間違っていることを証明 できる人はいません。待ちます。

学習能力がないのか!?

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

アルゴリズム、解法、性能比較

セルゲイ・デジブリク さん 2017.12.10 20:58


1.あなたのコードは動作しません。
不正なパターン"_index_magic "です。考えられる解決策「|index_magic」。


足し算の結果、 _1_3_2_4_3_5_4_6_
ストの3番目を 探してください。
結果2が 得られます。

string All_magics = "_1_3_2_4_3_5_4_6_";

int Get_magic(int deal_number)
{
 int stringlen = StringLen((string)deal_number); //добавлено
 //--------------------------------------------
 //Получаем начало строки магика.
 //--------------------------------------------
 int Magic_position_start =  StringFind(All_magics,"_" + (string)deal_number + "_",0) + stringlen + 2;
 //--------------------------------------------
 //Получаем конец строки магика.
 //--------------------------------------------
 int Magic_position_end   =  StringFind(All_magics,"_" + (string)(deal_number + 1) + "_",0);
 //--------------------------------------------
 //Получаем количество цифр из которых состоит магик.
 //--------------------------------------------
 int Magic_lenght         =  Magic_position_end - Magic_position_start;
 //--------------------------------------------
 //Извлекаем магик из общей строки.
 //--------------------------------------------
 string Magic             =  StringSubstr(All_magics,Magic_position_start,Magic_lenght);
 //--------------------------------------------
 //Возвращаем цифровое значение магика.
 //--------------------------------------------
 return((int)Magic);
}
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
  Print(All_magics);
  Print(Get_magic(3));   
}


結果

_1_3_2_4_3_5_4_6_
2
 
Artyom Trishkin:

今のところ、私がここで目にするのは、勇気を出してここに解決策を投稿した人に対する嘲笑だけです。

明らかに、それは...控えめに言って、まったくゴミのようなものです。でも、彼はそれを表に出したんです。あとは、笑って指をさす勇気しかない。

アーテム、私は40分の時間と数百万個の神経細胞を使って、あの男に「サブストリングは...」と説明したんだ。25_...3文字ではなく、4文字です。さて、彼にもっと概念的に価値のある強力なものを説明するのに何人年かかると思ってるんだ?たくさん、たくさん人年していると思います。だから誰も説明しようとしないし、何かを咀嚼しようとしない。説明する側が沈むことのできない最低ラインがあるだけで、ピーターのレベルはそのバーを下回っているのです。

 
fxsaber:



結果

マジックの番号は、ユーザーが決めるものだと、すでに言っています。文字列内の衝突を避けるために、マジックで一定の数値範囲を割り当てる必要があります。例えば100,000から999,000まで。それなら問題ないでしょう。

とはいえ、もちろん、ソリューションの微調整は可能です。これはあくまで「プロトタイプ」です。体験版です。

 
Vasiliy Sokolov:

アーテム、私は40分の時間と数百万個の神経細胞を使って、この男に「...の部分文字列は...」と説明したんだ。25_...3文字ではなく、4文字です。さて、彼にもっと概念的に価値のある強力なものを説明するのに何人年かかると思ってるんだ?たくさん、たくさん人年していると思います。だから誰も説明しようとしないし、何かを咀嚼しようとしない。説明する側が沈むことのできない最低ラインがあるだけで、ピーターのレベルはそのバーを下回っているのです。

ワシリー、君が言ったとたんに全部わかったよ。その間違いを見つけていただき、ありがとうございます。

 
fxsaber:

くそったれ

さあ、どうぞ...))

そして、なぜそのような反応をするのか。

 

この課題を解決するために、ライブラリの標準コンテナであるCArrayListが選択されました。
ほとんどすべてのコードは、テストに「便利な」インターフェイスを提供するためのラッパーである。すべての味と色のために......と言わんばかりに。

ソリューションをテストするために必要です。
1.ITestRandomAccessCollectionを継承し、必要なメソッドを実装したクラスを作成します。(TestRandomAccessCollectionCArrayList に似ています。)
2.ある種のデータはテストに使われる。例ではintであった。
選択されたデータ型の ためのジェネレーターがあることを確認する必要があり、それはCreateGeneratorに 追加されます(IntGeneratorに似て います)。
3.いくつかのソリューションについて同じデータでテストを実行し、結果を比較する(必要であれば、平均値を得るために循環させることもできる)。

{
     printf ("TestRandomAccessCollectionAfterAdding: Started.", result);
     TestRandomAccessCollectionCArrayList<int> testCollection();
     result = TestRandomAccessCollectionAfterAdding(testCollection, 10000, 1);
     printf ("TestRandomAccessCollectionAfterAdding: Fineshed. Total result: %I64i\n", result);
}


現在、テスト用の機能であり、類推により新しいものが追加される可能性があります。

template<typename T>
ulong TestRandomAccessCollectionAfterAdding(ITestRandomAccessCollection<T> &testCollection, const int iterationCount = 1000, int srandValue = 0)

パラメータ

testCollection -ITestRandomAccessCollection<T> を実装したテストコンテナ;
iterationCount - テストにおける反復サイクルの数。
srandValue - 0がランダムサンプリングである場合,ジェネレータからのサンプリングに影響を与えます.

 
Реter Konow:
1.解答の中からマジシャンを見つけるのに、平均で何マイクロ秒かかるか?

2.御社のソリューションをEAに組み込むのは簡単だと思いますか?


1.意味がない。アルゴリズム全体としての相対的な結果で比較しています。
2.解決策はすでに統合されており、標準ライブラリ<GenericArrayList.mqh>として 提供されます。

 
Реter Konow:

先ほども言ったように、マジシャン番号はユーザーが決めるものです。文字列内の衝突を避けるため、マジックで一定の数値範囲を割り当てる必要があります。例えば100,000から999,000まで。それなら、何の問題もないでしょう。

とはいえ、もちろん解決策を練り直すことは可能です。これはあくまで「プロトタイプ」です。体験版です。


私の愛する人、あなたが望むものは子供じみた仕事です。小学生が解くような問題ですね。

インターネット上に何十個もある。そして、文字列データのことは忘れてください。