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

 
ああ、今は4秒先行されている。
 
トレンドラインの 位置が変わると、なぜ中点が消えてしまうのですか?
 

こんにちは。

ビジュアルテスト中に、ある変数の値が各バー上でどのように変化するかをグラフィカルに見る必要があります。つまり、サブウィンドウに別のグラフを作成する必要があります。例えば、チャートの下に別ウィンドウで各バーの持分変動グラフを表示させたい。

どうしたらいいのでしょうか?インジケータを書いてチャートに貼り付け、ターミナルのグローバル変数を通して EAから変数の値を渡すべきでしょうか?それとも「もっといい」方法があるのでしょうか?

よろしくお願いします。

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
Alex5757000:

こんにちは。

ビジュアルテスト中に、ある変数の値が各バー上でどのように変化するかをグラフィカルに見る必要があります。つまり、サブウィンドウに別のグラフを作成する必要があります。例えば、チャートの下に別ウィンドウで各バーの持分変動グラフを表示させたい。

どうしたらいいのでしょうか?インジケータを書いてチャートに貼り付け、ターミナルのグローバル変数を通して EAから変数の値を渡すべきでしょうか?それとも「もっといい」方法があるのでしょうか?

よろしくお願いします。

そんなことはありません。インジケーターで直接エクイティやバランスの値を取得することができます。

バーチャートとして描画するインジケーターバッファのパラメータを定義します。

そして、4つの値すべてを適切なバッファに書き込む。

バーのオープニング、ハイ・ロー、ダイナミック(最後のバー)で開きます。

添付ファイルでは次のようになります。

もちろん、絶対値(推奨オプション)でもいいのですが、初期の小さな増分は表示されないと思いますので、初期値と現在値の差の方がいいと思います。

ZSですが、いや、スケールがダイナミックなので、2番目の選択肢をやると、かなり読みやすくなりますよ。

ファイル:
 
Urain:

そんなことはありません、インジケーターで直接エクイティやバランスの値を取得することができます。

インジケーターバッファを バーチャートとして描画 するためのパラメータを設定します。

で、4つの値すべてを対応するバッファに書き込む。

バーオープン、ハイロー、クローズで動的に開く(最後のバー)。

エクイティとバランスの値 - はい、しかし、私はEAで計算された変数の値を見たい場合はどうすればよいですか?
 

OBJ_LABELを チャート上に表示します。

こちらでもお読みいただけます。

https://www.mql5.com/ru/forum/1111/40260#comment_40260

https://www.mql5.com/ru/forum/2963

 
Alex5757000:
エクイティとバランスの値 - はい、でもEAで計算された変数の値を見たい場合はどうすればいいのでしょうか?

カスタムイベントによって 行うことができます。ただ、イベント後にチャートを更新することを忘れないでください。

なぜなら、優先順位の高い順に、イベントが処理される前にティックが来るからです。

しかし、それはグローバルでそれを行うことが可能ですが、同じ問題があります - ダニはすでに来ており、変数はまだEAで処理されている(その変更が準備されている)、もちろん、データが受信されますが、1ティックで遅延が発生します、それはまだイベントでより正しいです、あなたはすでに変数が実際のデータを持っていることを確実に知るとき、実際には後にチャートを更新置くための場所があります。

 

このコードは、「CTest getCopy(void) {CTest res;return res;}」が停止しているため、「'return' - structure has objects and cannot be copied」のエラーでコンパイルできません。

これは、2つの方法で解決できます。

1)"クラス"を "構造体"に変更する。

2) オーバーロードされた代入演算 子でストップカをアンコメントする。

では、コピーコンストラクタの役割をオーバーロードされた代入演算子が担うようにすればいいのですね。では、なぜ参考書ではマトリックスクラスの一例を除いて言及されていないのでしょうか(ちなみに、このマトリックスクラスの詳細な解析により、私は自分のコードの誤りを発見することができました)。

class CTest
  {
public:
    CTest(void): cnt(0) {}
   ~CTest(void) {}
    CTest(const CTest& T) {cnt = T.cnt;} // copy constructor
    //------------------------
    CTest getCopy(void) {CTest res; return res;} 
    //------------------------
    //CTest* operator=(const CTest& T) {cnt = T.cnt; return GetPointer(this);}
private:
         int cnt;
  };
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
Документация по MQL5: Основы языка / Операторы / Оператор-выражение
  • www.mql5.com
Основы языка / Операторы / Оператор-выражение - Документация по MQL5
 
WWer:

このコードは、「CTest getCopy(void) {CTest res;return res;}」が停止しているため、「'return' - structure has objects and cannot be copied」のエラーでコンパイルできません。

もちろん、関数からオブジェクトを返すことはできない。(構造物と違って)文書化されている。


これは、2つの方法で解決できます。

1)"クラス"を "構造体"に変更する。

上記をご参照ください。

2) オーバーロードされた代入演算 子でstopkaをアンコメントする。

もちろん、オーバーロードされた演算子はハンドルポインタを返しますが、これは正常です。今度は、getCopy()関数から返されるオブジェクトではなく、ポインタ(関数からの返り値は暗黙の代入)であることが、このコードを正しくしています。

// 構文的に正しいもののみ。

// getCopy()関数から初期化されていない変数を返すのは、構文の問題を示すためだけで、合理的であることを装うものではありませんね。

では、コピーコンストラクタの役割をオーバーロードされた代入演算子が担うようにすればいいのですね。

あの...ロールと何の関係があるのでしょうか? 代入演算子はどのようにでもオーバーロードできますし、コピーコンストラクタも正しく書くことができます。 あなたの場合の間違いは別のところにあります。


なぜ、マトリックスクラスの一例を除いて、参考書では言及されていないのでしょうか(ちなみに、その詳細な分析により、私のコードの誤りを発見することができました)。

なぜなら、紀元前2096785年2月11日、恐竜ヴァシャが不注意でトカゲのクラバを踏んでしまったからだ。 それが長い原因と結果の連鎖を引き起こし、現在の状況に至った。 どうしようもないことなのだ。

;)

 
MetaDriver:// getCopy()関数から初期化されていない変数が返されるのは、うまくいけば構文上の問題を示すのに役立つだけで、合理的であるかのように装うことはないでしょう。

なぜ初期化する必要があるのですか?そのためのコンストラクタを持つクラスのインスタンスなのです。

MetaDriver
あの...ロールと何の関係があるのでしょうか?代入演算 子はどのようにでもオーバーロードできますし、コピーコンストラクタも正しく書くことができます。 あなたの間違いは全く別のところにあるのです。

そして、そのための正しいコピー用コンストラクタをどのように書けばよいのでしょうか。