エラー、バグ、質問 - ページ 2310

 
ExpertRemoveがOptimizeモードで正しく動作しない。
input int Range = 0; // 1 .. 10

bool FuncInit()
{
  ExpertRemove();
  
  return(true);
}

int Count = 0;

void OnTick()
{
  static const bool Init = FuncInit();
  
  Count++;
}

double OnTester()
{
  return(Count);
}


ランの最適化。コードから、すべてのパスがExpertRemoveによって終了する必要があることがわかります。しかし、そうはいかない。

Core 5  pass 8 tested with error "expert removed itself in global initialization function" in 0:00:00.312
Core 5  pass 9 returned result 331851.00 in 0:00:00.125
Core 4  pass 6 tested with error "expert removed itself in global initialization function" in 0:00:00.265
Core 4  pass 7 returned result 331851.00 in 0:00:00.140
Core 1  pass 0 tested with error "expert removed itself in global initialization function" in 0:00:00.312
Core 1  pass 1 returned result 331851.00 in 0:00:00.125
Core 3  pass 4 tested with error "expert removed itself in global initialization function" in 0:00:00.296
Core 3  pass 5 returned result 331851.00 in 0:00:00.156
Core 8  pass 2 tested with error "expert removed itself in global initialization function" in 0:00:00.265
Core 8  pass 3 returned result 331851.00 in 0:00:00.140
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 01 seconds
Statistics      shortest pass 0:00:00.125, longest pass 0:00:00.156, average pass 0:00:00.137
Statistics      local 10 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

パスの半分がExpertRemoveを無視している。再現性があるか?


ZY シングルパスと最適化でズレが生じる。

 
fxsaber:
typedef void (*FUNC)();
void f1() {};

void f2()
{
   f1();
}

void f2( FUNC g) 
{
   g();
}

これは、デフォルトのパラメータを持つ単一の関数と本質的に同じです。これは通常、このように処理されるため、回避策や松葉杖ではなく、完全に正常な解決策となります。

 
TheXpert:

実際、デフォルトのパラメータを持つ1つの関数と同じです。 通常はそれで解決されるので、回避策や姥捨て山ではなく、至って普通の解決方法です。

オーバーロードという選択肢は理解できる。しかし、すべての機能に対してそのようなものを作るのは、まったく融通がききません。C++でも素敵に作れないの?

 
fxsaber:

オーバーロードという選択肢は理解できる。しかし、すべての機能に対してそのようなものを作るのは、まったく融通がききません。C++でもいい感じに作れないかな?

C++は定数でより柔軟に対応できますが、関数ポインタをデフォルトのパラメータとして扱ったことがないのでわかりません

UPD g++はあなたのコードを食べる
 
TheXpert:

hz, C++は定数に対してより柔軟ですが、デフォルトパラメータとしての関数ポインタを特別に扱ったことはありません。

UPD g++はあなたのコードを見事に食べます。

情報ありがとうございました

 
fxsaber:

関数の入力パラメータにデフォルト値を設定するにはどうしたらよいですか?

Python風のコードを使用することができます

typedef void (*FUNC)();

void f0() {Print(__FUNCSIG__);};
void f1() {Print(__FUNCSIG__);};

void f2( FUNC g = NULL ) {
   if (g == NULL){g = f1;}
   
   g();
}


void OnStart()
{
   f2();
   f2(f0);
}
 
Sergey Dzyublik:

Python風のコードを使用することができます

ありがとうございます、NULLは知りませんでした。

 

Testerレポートで、CloseByによって2つの崩れた位置の数学的な期待値を計算するとき、1ではなく2で割られています。そのため、レポートには間違った値が表示されます。


そして、そんなCloseByでの災難をレポートでは


 

Привет

私はこの[製品名 Market has been deleted by moderator]を一人分レンタルしましたが、設定を変更することができませんでした、ポジションナンバー3 3max。

複数の買いポジションと売りポジションを同時に変更する方法

フィリップ

 
foonet:

マーケット製品 に関する議論は、フォーラムでは禁止されています。
マーケット 製品に関する議論は、フォーラムでは禁止されています。