アルゴリズムの最適化 - ページ 10

 
Igor Makanu:

あなたの例は、組み合わせではなく、繰り返しのない順列です。

そして私の例は、繰り返しのない接続詞です。

ああ、そういうことだったんですか。

0

1

01

11

001

101

011

...


そうすると、コードはそれほど複雑にはなりませんが、ループの数はそれほど必要ないことは確かです。

 
Andrey Dik:

ああ、そういう計画だったんですか。

はい

テスターでファイル名を生成する必要があり、各ファイルはストラテジーパラメーターとなる

そして、繰り返しのない組み合わせを生成することによって、すべてのTSの組み合わせが結合されます。


この問題は、"permutations without repetition recursion s++" でググればすぐにわかる。

 
Igor Makanu:

で、あなたの問題は、「再帰性のない順列再帰性C++」で簡単にググることができます。

ググってみても、ほとんどが万能ではない解決策が出てくる。

でも、自分でやって解明する方がずっと面白いし、ためになる)。

 
Andrey Dik:

コードを教えてください。

input int      StartN = 5;
input int      EndN   = 7;
input int      CountN = 4;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i1=0; i1<30; i1++)
     {
      Print(CombinationGenerator(i1,StartN,EndN,CountN));
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string CombinationGenerator(uint iteration_index,int startN, int endN, int countN)
  {
   string result;
   int base=endN-startN+1;
   uint ml=base;
   for(int i1=0; i1<countN; i1++)
     {
      uint md=iteration_index%base;
      result=result+string(md+startN);
      iteration_index=(iteration_index-md)/base;
     }
   return result;
  }

単純なことです。

2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7555
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7655
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7755
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7565
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7665
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7765
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7575
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7675
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7775
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       5556
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       6556
2020.07.13 16:45:27.456 test3 (EURUSD,M1)       7556
 
Aliaksandr Hryshyn:

単純なことです。

ありがとう、見てみるよ。

理由: