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

 
Vladislav Andruschenko:

と返信しようとしたら、あなた自身が自分の質問に答えていました。

確認ありがとうございました)

 

こんにちは。

ストラテジーテストでこれらの関数呼び出しが 動作するようにしてもらえませんか?ありがとうございます。

bool scaleFix=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ChartSetInteger(ChartID(),CHART_SCALEFIX,true);
   scaleFix=ChartGetInteger(ChartID(),CHART_SCALEFIX);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   if(rates_total!=prev_calculated)  
     {
      double max=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,Period)); 
      double min=iLow (_Symbol,_Period, iLowest(_Symbol,_Period,MODE_LOW, Period));
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MAX,max))
         printf("Chart fixed max is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MAX),max); 
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MIN,min))
         printf("Chart fixed min is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MIN),min); 
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
2018.09.06 12:54:55.757 2018.09.04 12:00:00   Chart fixed max is 1.171770, should be 1.162740
2018.09.06 12:54:55.758 2018.09.04 12:00:00   Chart fixed min is 1.158410, should be 1.155760
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed max is 1.171770, should be 1.162670
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed min is 1.158410, should be 1.155590
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed max is 1.171770, should be 1.162280
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed max is 1.171770, should be 1.162070
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed max is 1.171770, should be 1.162020
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.799 2018.09.04 17:00:00   Chart fixed max is 1.171770, should be 1.161980
2018.09.06 12:54:55.800 2018.09.04 17:00:00   Chart fixed min is 1.158410, should be 1.153890

 
InstaForex-Serverでは、なぜかすべての成行注文が1秒以上執行されます。
2018.09.06 14:08:22.754 Trades  '9424479': instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:22.936 Trades  '9424479': accepted instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:23.944 Trades  '9424479': deal #9539619 buy 0.01 CADCHF at 0.7360 done (based on order #10514041)
2018.09.06 14:08:23.944 Trades  '9424479': order #10514041 buy 0.01 / 0.01 CADCHF at 0.7360 done in 1195.200 ms
2018.09.06 14:08:23.944 Trades  '9424479': modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': accepted modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': modify #10514041 buy 0.01 CADCHF -> sl: 0.0000, tp: 0.8350 done in 184.895 ms
2018.09.06 14:08:24.134 Trades  '9424479': instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:24.314 Trades  '9424479': accepted instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:25.323 Trades  '9424479': deal #9539620 sell 0.01 CADCHF at 0.7350 done (based on order #10514042)
2018.09.06 14:08:25.323 Trades  '9424479': order #10514042 sell 0.01 / 0.01 CADCHF at 0.7350 done in 1193.896 ms
2018.09.06 14:08:25.323 Trades  '9424479': buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.509 Trades  '9424479': accepted buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.510 Trades  '9424479': order #10514043 buy limit 0.01 / 0.01 CADCHF at market done in 181.861 ms
2018.09.06 14:08:25.510 Trades  '9424479': cancel order #10514043 buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.691 Trades  '9424479': accepted cancel order #10514043 buy 0.00  at market
2018.09.06 14:08:25.691 Trades  '9424479': cancel #10514043 buy limit 0.01 CADCHF at market done in 181.474 ms
2018.09.06 14:08:25.692 Trades  '9424479': buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.878 Trades  '9424479': accepted buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.882 Trades  '9424479': order #10514044 buy stop 0.01 / 0.01 CADCHF at market done in 190.823 ms
2018.09.06 14:08:25.883 Trades  '9424479': cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': accepted cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': cancel #10514044 buy stop 0.01 CADCHF at market done in 183.056 ms

同時に、保留されているものはPingに近い状態です。このデモの歪みの原因は何でしょうか?

 

マーケットプレイスで商品を更新した際、英語/ロシア語のページに変更した内容を記入し、新しいバージョンを公開しましたが、私の説明文からは何も出てきません。

最新版に対する資料が全くないので、この説明文を編集することもできない。

変更点はどこにあるのでしょうか?

 
Tetyana Shcherba:

マーケットプレイスで商品を更新した際、英語/ロシア語のページに変更した内容を記入し、新しいバージョンを公開しましたが、私の説明文からは何も出てきません。

最終バージョンに対する文書がないため、この記述を編集する可能性もない。


同じく、不具合かと思いました。

 

メニューの "Run single test "を選択した後

は、適切な単一テストが進行中であり、実行されたことを示すものがない。一回の実行が成功した場合は「グラフ」タブに、失敗した場合は「ログ」タブに切り替えるとよいでしょう。


それは、化粧品としての些細なニガテに思えるかもしれません。

 
Nikolai Semko:

大きな配列の一部を1つのZ値で埋める必要がある場合、私はコンストラクションを使用します。


多くの人は、「なんでこんなに複雑なんだ、もっとシンプルにできるだろう」と言うでしょう。

しかし、理由は不明ですが、中間配列を使った最初の変形は、2番目のものよりはるかに高速に動作します。

この質問については、すでに数年前にSDに書いている。問題を発見して修正したので、次のビルドでは大丈夫だとの返信がありました。

しかし、問題は解決しない。

MT4で同じテストをしています。

Windows

ArrayResize add直後のメモリ操作に不具合が発生しました。

ArrayFill(arr,0,size,0);
これは、テスト中にこのようなことが起こらないように、実際の物理メモリの割り当てを開始します。


以下は、私のパソコンでの結果です。

2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill = 94
2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 147
 
Ilyas:

Windows

でメモリに関する問題が発生しました。

これは、テスト中にこのようなことが起こらないように、実際の物理メモリの割り当てを開始します。

では、ME内蔵のプロファイラが ArrayResizeで測定した結果はどうでしょうか。

 
fxsaber:

では、ME内蔵のプロファイラが ArrayResizeで測定した結果はどうでしょうか。

ArrayResize関数の実行時間を測定する。

TestArrayFillのテストコードは、配列に対して「冷たい」メモリが割り当てられ、「熱い」メモリを取得する機会がないように作られています。


はっきり言って、ArrayResizeは仮想メモリ(またはプロセスメモリ)を割り当てますが、仮想メモリがすぐに物理ページを取得する(またはすでに持っている)保証はありません。

Windowsでは、仮想メモリページに最初にアクセスしたときに、必要に応じて物理メモリを割り当てます。
ページのサイズは4KBです。つまり、「ウォームアップ」のために、(私が書いたように)ArrayFillを介してすべての要素をゼロにすることはできず、ゼロから始まる4096 / sizeof(配列要素タイプ)ごとにのみゼロにすることができました。


MQL4では変数のゼロ化が保証されているため、MT4のArrayResizeは配列をゼロ化して実行するので、そこに「コールド」メモリの効果はありません。

 
Ilyas:

しかし、微妙なところ。ありがとうございました。ドキュメンテーションは、「微妙」なネタバレをするのは、もうずいぶん先の話でしょう。