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

 
Aleksey Vyazmikin:

まだよくわからないのですが、もっと深い計算が必要なプレディクターはあるのでしょうか?本当に必要なんだ - MA on the days :)1年早くテストを実行しているだけで、その前の取引は禁止されることも...。

はい - 歴史の深さは、1年以上必要です。その解決策はすでに見つかっている。あとは、3年前倒しで発売して、飛ばします。
 
KBはコードを通さない。このようなエラーが発生します。
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\Deal.mqh(10,34) : error 279: 'ToNull' - call non-const method for constant object
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(202,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(214,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,32) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(225,34) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(416,35) : error 351: 'ToNull' - access to non-static member or function
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,33) : error 239: '::' - syntax error
MQL5\Include\fxsaber\BestInterval\BestInterval.mqh(435,35) : error 351: 'ToNull' - access to non-static member or function

KBコンパイラのアップデートをお願いします。

 
Vladimir Simakov:
休暇から戻ったら、面倒でなければ、この問題を勉強します。しかし、論理的には、バグはあなたのコードにあり、mqlにあるのではないのかもしれません。ところで、ちょっと面白いのですが、どんなコーディングで動くライブラリがあったらどうでしょう?utf-16で間違いないのか、でもutf-8だったらどうしよう、結局一番多いのは。

まだ確認してませんでした、ありがとうございます。その方向で掘っていきます。
ライブラリはOcean用で、私が扱っているクラスはW、つまりUnicodeで選択されています。

エンコードを理解するように。

const char *Utf8;
const char *Ansi;
const wchar_t *Utf16;
const wchar_t *Utf32;

utf-16 は wchar_t 型を意味するので、文字列を読み込むライブラリ関数は const wchar_t*
このことから、この関数は utf-16 エンコーディングの文字列へのポインタを返している ことがわかります
プロジェクトの プロパティでは、Unicode 文字サポートも選択されています。
mqlのドキュメントによると、文字列はUnicodeで動作するそうです。

 

私は再び最適化しています、私はこのコードの実行速度をテストすることができるかどうかはわかりません。

void OnStart()
{  datetime m_stoptime = 0;
//1.
   if(m_stoptime < TimeCurrent())
   {
      //расчеты   
   }


//2.
   MqlTick last_tick;
   if(SymbolInfoTick(_Symbol, last_tick))
   {  if(m_stoptime < last_tick.time) 
      {
         //расчеты
      }
   }

}

バリアント2の方が高速に動作するのでは?

もしそうなら、どこに落とし穴することができます - 私はOnTick()で使用する - コードを最適化する方法を探して、オプティマイザの貿易時間で見つけることができます。


SZZ:私はスピードオプション番号1と番号2を確認する方法を求めることができる、それはコンパイラが実行可能なコードを最適化し、テストが正しく行われないことが非常に高いです - ので、私は尋ねる

 
Igor Makanu:

私は速度の面でバリアント1と2を確認する方法を尋ねることができ、コンパイラは実行可能なコードを最適化し、テストが正しく行われない可能性が高いです - ので、私は尋ねる

通常のテストを1と2で別々に実行し、時間を比較する?)

時間が無視できる場合は、variant 1とvariant 2で同じ最適化を実行します。

 
Igor Makanu:

HH: 1と2のバリエーションをどうやってスピードで確認するかということですが、コンパイラが実行コードを最適化し、テストが正しく行われない可能性が高いので、そのために質問しているのです。

https://www.mql5.com/ru/code/18804

TesterBenchmark
TesterBenchmark
  • www.mql5.com
При написании разных версий кода может возникнуть необходимость измерения влияния их на общую производительность советника в тестере. Это позволяет не только понять, насколько оптимален написанный код по сравнению с другим, но и дает предпосылки к будущей быстрой оптимизации советника. Такой подход позволяет выявить "бутылочное горлышко" в...
 
Igor Makanu:

私は再び最適化しています、私はこのコードの実行速度をテストすることができるかどうかはわかりません。

バリアント2の方が高速に動作するのでは?

もしそうなら、どこに落とし穴することができます - 私はOnTick()で使用する - コードを最適化する方法を探して、オプティマイザの貿易時間で見つけることができます。


ZS:私はスピードオプション番号1と番号2を確認する方法を求めることができる、それはコンパイラが実行可能なコードを最適化し、テストが正しく行われない可能性が非常に高いです - ので、私は尋ねる。

デバッグモードで確認する。コンパイラはそこを最適化しないことになっている、現実にはどうなのかは知らないが。
 

ArrayResizeについて 質問です。数ギガバイト分を一度にリザーブしておく。そして、初期Reserveより少ないSizeを徐々に増やしていく。

サイズアップ時にTaskManagerにメモリ消費量の増加が表示されるのはなぜですか?

 
fxsaber:

ArrayResizeについて質問です。数ギガバイト分を一度にリザーブしておく。そして、初期Reserveより少ないSizeを徐々に増やしていく。

サイズアップ時にTaskManagerにメモリ消費量の増加が表示されるのはなぜですか?

なぜなら、メタトレーダーの他にWindows OSがあり、最終的には何十ものプロセス(ちなみに、それぞれのプロセスにはデフォルトで4GBのアドレス空間があります)のうち、どのプロセスに本当にRAMを割り当てるべきかを決定するからです(あなたのRAMはどれくらいありますか)。
 
Andrey Khatimlianskii:

1と2を別々に通常テストを実行し、時間を比較する?)

時間が無視できる場合は、variant 1とvariant 2で同じ最適化を実行します。

私は何かを間違えているようだ、それでも違いはわからない、一回の実行で結果は0.1秒前後浮く