Objectgetとobjectgetvaluebyshiftに関する質問 - ページ 2

 
honest_knave:

こんにちは、コードを投稿するときはSRC ボタンを使ってください。

黄色で 示したコードはすべて「for」ループの外側にあります。

そのため、'name'の値は常に最終的なオブジェクトの名前になります。


おそらく、これを試してみてください(price1 と price2 はすでにどこかで宣言されていると仮定します)。

ご協力ありがとうございました。どのように印刷すると、それが動作することを確認するためにジャーナルでprice1...を見ることができます。
 
Rajakumar1:
ご協力ありがとうございました。ジャーナルでprice1...を確認するための印刷方法についてです。
同じように印刷すると、名前...
int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
         Print("price1: ", price1);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
         Print("price2: ", price2);
        }
     }
 
honest_knave:
同じように名前を印刷すると・・・。
ありがとうございます。EAで印刷コマンドはあるのですがジャーナルに印刷 されないのです。どこに出力されるのでしょうか?
 
Rajakumar1:
ありがとうございます。EAで印刷コマンドはあるのですがジャーナルに印刷されないのです。どこに出力されるのでしょうか?

エキスパート(Journalの左のタブ)
 
honest_knave:

専門家(Journalの左のタブ)
トレンド ラインを引くインジケーターを持っています。EAはそのインジケータが引いたトレンドラインに基づいています。なぜ値が表示されないのか、確認する方法はありますか? ファイルを添付します。お手数をおかけして申し訳ありません。よろしくお願いします。
 
Rajakumar1:
トレンド ラインを引くインジケータを持っています。そのインジケータが描くトレンドラインを元にEAを作成しています。ファイルを添付します。お手数をおかけして申し訳ありません。お力添えありがとうございます。


Printステートメントを様々なポイントで追加していく必要があります。

そうすれば、問題を突き止めることができます。

関数が呼び出されなかったり、変数に予期せぬ値が設定されていないかなどを調べる必要があります。

時間はかかりますが、自分でできることです。

例えば、あるEAで、ティックごとに1ずつ増加する変数があるとします。

変数が0にリセットされることがあるのはなぜでしょうか?


#property strict

int myVariable;

int OnInit()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
   EventSetTimer(5);
   return(INIT_SUCCEEDED);
  }

void OnTimer()
  {
   myVariable = 0;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }

void OnTick()
  {
   myVariable++;
   Print(__FUNCTION__, " // myVariable = ", myVariable);
  }


そして出力です。




myVariableが1ティックごとに1ずつ増えているのがわかりますが、OnTimer()はそれをゼロにリセットしています。

私は今問題がどこにあるか知っています。

----

あるいは、MetaEditorに内蔵されているデバッグ機能を使ってみることもできますが、一部のユーザーからは問題が報告されています。YMMV

 
honest_knave:


あなたのコードにPrintステートメントを追加する必要があります。

そうすれば、問題を突き止めることができます。

関数が呼び出されなかったり、変数が予期せぬ値をとったりしていないかどうか、調べる必要があります。

時間はかかりますが、自分でできることです。

例えば、私は毎ティック1ずつ増加する変数を持つEAを持っています。

私はなぜ時々変数が0にリセットされるのかわかりません。



そして出力。

ありがとうございます。ファイルを削除しましょうか?



私はmyVariableが毎ティック1ずつ増加していることを見ることができますが、OnTimer()はそれをゼロにリセットしています。

問題がどこにあるのかわかりました。

----

あるいは、MetaEditorに内蔵されているデバッグ機能を使ってみることもできますが、一部のユーザーからは問題が報告されています。YMMV

 
Rajakumar1:
ありがとうございます。ファイルを削除しましょうか。
 
Rajakumar1:
ありがとうございます。ファイルを削除しましょうか。


その2つのインジケータの間には800行近いコードがあります。

でも、まずは自分で問題を絞り込んでいったほうが、早く解決できるかもしれません。

幸運を祈ります。


 
honest_knave:


それはあなたの決定です - それらの2つの指標の間にコードの約800行があります... 誰かがあなたのためにそれを通過する時間を持っているかもしれません。

しかし、まず自分で問題を絞り込むことで、より早く解決することができるかもしれません。

幸運を祈ります。


ありがとうございました。どこを最初に見ればいいのか、教えてください。Metaエディタには警告しか表示されません。エラーはありません。