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

 
A100:
なぜ?
論理を見るために
 
Karputov Vladimir:
論理を見るために
プリントアウトしたものです。
 
A100:
プリントアウトした結果、上記のようになりました。
どこでプリントアウトしたのですか?その結果はどこにあるのでしょうか?見えませんね。前後のプリントアウトを添付するのを忘れています。
 
Karputov Vladimir:
プリントアウトはどこにあった?その結果はどこにあるのでしょうか?見えませんね。前後のプリントアウトを添付するのを忘れています。

リセット前

リセット後

 

フォーラムで画像を追加する際、ヘッダーが表示されない

Headerフィールドに入力しています。画像は表示されるが、ヘッダーが表示されない

 
A100:

プロファイル内のグラフの順序が異なる

プロファイル内の複数のグラフに新しいグラフを追加して、真ん中に移動させた場合、例えば

を使用したスクリプトで、その後のチャートのリストでは

にもかかわらず、最後の1枚に移動してしまいます。

そして、MTを再読み込みすると、図のように、新しい列挙の途中で

リロード前と後では異なる挙動が判明。論理はどこにあるのか?

EURAUD", "EURCAD", "EURUSD", "NZDUSD "を追加し、最初のチャートである "EURAUD "を起動しました。

ステップ1

"NZDUSD "は "EURAUD "の後に配置し、最初のチャート-"EURAUD "をアクティブにする。

ステップ2

再読み込み後(最初のチャートは有効のまま - "EURAUD)

ステップ3

すべてが理にかなっている。スクリプトが呼び出される前のみ。

//+------------------------------------------------------------------+
//|                                                    ChartNext.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- переменные для идентификаторов графиков
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   Print("ChartFirst = ",ChartSymbol(prevChart)," ID = ",prevChart);
   while(i<limit)// у нас наверняка не больше 100 открытых графиков
     {
      currChart=ChartNext(prevChart); // на основании предыдущего получим новый график
      if(currChart<0) break;          // достигли конца списка графиков
      Print(i,ChartSymbol(currChart)," ID =",currChart);
      prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
      i++;// не забудем увеличить счетчик
     }
  }
//+------------------------------------------------------------------+

アクティブなグラフを慎重に選択する必要があります。次のグラフは、アクティブなものからカウントされます。
 
Karputov Vladimir:

すべてが理にかなっている。

その理屈は何ですか?再起動前に2-3-4-5というシーケンスがあり、再起動後に別の2-5-3-4がある場合?
 
A100:
そして、その理屈はどうなっているのでしょうか。再起動前に2-3-4-5という1つのシーケンスがあり、再起動後に別の2-5-3-4があった場合?

再読み込みの前に、グラフは作成された順番 にプロファイルに書き込まれます(例:1-2-3-4)。リロードする前に、プロファイルを書き換えます(グラフの動きの最後のリビジョンが書き込まれます、つまり、1-4-2-3-3です)。再起動後、グラフの動きは1-4-2-3-3というように、最後のリビジョンに従って再描画(作成) されます。

で、再起動後は、1-4-2-3の順でチャートが作成されたので、ChartNext() はまさにその順で返ってくるということです。

 
Karputov Vladimir:

再読み込みの前に、グラフは作成された順番 にプロファイルに書き込まれます(例:1-2-3-4)。リロードする前に、プロファイルを書き換えます(グラフの動きの最後のリビジョン、つまり1-4-2-3-3がプロファイルに書き込まれます)。再読み込み後は、グラフの動きの最終改訂版、すなわち1-4-2-3-3に従ってグラフが再描画(作成) されます。

問題は、現在どのように実装されているかではなく(別の実装も可能)、リロードの前と後(他の条件がすべて同じ)で結果が異なること、つまり論理が破綻していることです。
 
A100:
問題は、現在どのように実装されているかではなく(別の実装も可能)、リロードの前と後(他の条件がすべて同じ)で結果が異なること、つまりロジックが破綻していることです。
ターミナルをリロードした後にチャートが再作成されるため、ChartNext()が正しく動作するため、ロジックに違反はないと考えています。しかし、servicedeskにリクエストを 作成することができます - その後に回答を共有してください。