mql5言語の特徴、微妙なニュアンスとテクニック - ページ 37

 

HistorySelectは非常に高価な機能です。しかし、HistorySelectByPositionはさらに高価である。

例えば、クローズドポジションの最初のディールを求める必要がある場合、次の2つの方法で行うことができます。

  1. HistorySelectByPositionを行い、得られた小リストの中から必要な案件を探し出す。しかし、このリストは次のように形成される。 まず、すべての履歴が形成される(「無限」のHistorySelectの呼び出しと同等)。次に、このリストに対して完全なforループを行い、適切なPOSITION_IDENTIFIERを持つ案件のみを選択する。
  2. HistorySelectを行い("infinite "でも良いが、既知の場合は間隔を使用する方が良い)、forループで、対応するDEAL_ENTRYに到達したらブレークするようにする。

2つ目の項目は、もっと安くてもいいのでは?しかし、確かに値段は高くはない。

テスターでHistorySelect*-functionsを呼び出すのは、ほとんど計算資源の 無駄遣いです。そのため、常にその数を最小限に抑えるようにする必要があります。特にHistorySelectByPosition。

 
テスターのHedgeアカウントについて
次のティックで通常のリミッターの有効化チェック。
つまり、テスターの結果は、アカウントの種類に大きく左右されるのです。
 
fxsaber
テスターのヘッジ口座の場合これは、テスターの結果が口座の種類に大きく左右されることを意味します。


あるスレッドで判明したように、テスターの結果は、テストがローカルエージェントで行われるか、分散ネットワーク上のエージェントの一つで行われるかにさえ依存します。

https://www.mql5.com/ru/forum/1111/page1880#comment_4904481

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
ユーリー・キリロフ


あるスレッドで判明したように、テスターの結果は、テストがローカルエージェントで行われるか、分散ネットワーク上のエージェントの一つで行われるかにさえ依存するのです。

https://www.mql5.com/ru/forum/1111/page1880#comment_4904481

このスレッドの文脈とは違うBAGを説明されていますね。リミット実行差異が公式見解です。
 
fxsaber
このスレッドの文脈にないBAGについて説明されていますね。リミッターの実行が違うのは、公式見解です。

同意見です。ただ、テスターがますます予測不可能なツールになりつつあることを指摘したかったのです。
 
ユーリー・キリロフ

私もそう思います。ただ、テスターがますます予測不可能なツールになってきていることを指摘したかったのです。
残念ながら予測できたことは ありません。
 
fxsaber
つまり、テスターの結果は、アカウントの種類に大きく左右されるのです。
これは、取引所取引される商品にのみ適用されます。
 
すべての標準タイプでマッチングが取れている
void OnStart()
{
  string Str = "1.23qwedfg";
  
  Print((int)Str);
  Print((double)Str);
}

結果

1
1.23
 

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

バグ、バグ、質問

fxsaber さん 2017.04.10 16:53

開発者の皆様、このような状況でWarningを消すにはどうしたらよいでしょうか?
template <typename T>
T GetValue()
{
  T Res; // possible use of uninitialized variable 'Res'
  
  return(Res);
}

void OnStart()
{
  MqlTick Tick = GetValue<MqlTick>();
  int i = GetValue<int>();
}
ライフハック
template <typename T>
const T GetDefaultValue( void )
{
  struct STRUCT_TYPE
  {
    const T Value;
  };
  
  const STRUCT_TYPE Res = {0};
  
  return(Res.Value);
}

void OnStart()
{
  int i = GetDefaultValue<int>();
  MqlTick Tick = GetDefaultValue<MqlTick>();
  string Str = GetDefaultValue<string>();
}
 

ルーディメンツ機能(必須ではありません)

理由: