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

 
Andreas Hoogendoorn # :

CGraphicと CCurveというクラスを使っているのですが、不思議なことが起こります。同じEAのインスタンスを2つ、異なる通貨ペアで動かしています。チャートをスクロールすると、もう一方のチャートが一瞬だけ表示されます。どうやら2つのチャートの間でメモリが混乱しているようです。ターミナルを再起動しても変わりません。(画像はアニメーションGIFです。)


最小限の例を載せていただけますか?それと、端末とOSのデータを指定して、こんな感じでお願いします。

取引、自動取引システム、取引戦略のテストに関するフォーラム

MetaTraderの不具合

ウラジミール・カルプトフ, 2021.03.16 04:20

質問がある場合は、まず「ジャーナル」タブの最初の3行を表示します。


(これらの行を選択し、クリップボードにコピーして、ボタンコード を使ってメッセージに貼り付けてください)。以下のような感じです。

2021.03.16 05:13:07.133 Terminal        MetaTrader 5 x64 build 3003 started for MetaQuotes Software Corp.
2021.03.16 05:13:07.134 Terminal        Windows 10 build 19042, Intel Core i7-9750 H  @ 2.60 GHz, 26 / 31 Gb memory, 842 / 947 Gb disk, IE 11, UAC, GMT+2
2021.03.16 05:13:07.134 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

 
Andreas Hoogendoorn #:

CGraphicと CCurveというクラスを使っているのですが、不思議なことが起こります。同じEAのインスタンスを2つ、異なる通貨ペアで動かしています。チャートをスクロールすると、もう一方のチャートが一瞬だけ表示されます。どうやら2つのチャートの間でメモリが混乱しているようです。ターミナルを再起動しても変わりません。(画像はアニメーションGIFです)


まだバグが残っていますが、問題は解決しました。

CGraphicクラスを使用するとき、グラフィカルなリソースを作成するとき、ユニークな名前を使用することが義務付けられて います。

リソースは、それがあるべきように分離されていません。 あるチャートからのEAが別のチャートのリソースにアクセスできる


2022.04.17 12:44:13.049 Terminal        MetaTrader 5 x64 build 3260 started for MetaQuotes Software Corp.
2022.04.17 12:44:13.050 Terminal        Windows 10 build 19044, 4 x Intel Core i5  750 @ 2.67 GHz, 4 / 11 Gb memory, 4 / 124 Gb disk, UAC, GMT-3
2022.04.17 12:44:13.050 Terminal        C:\Users\andre\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

#include <Graphics\Graphic.mqh>
CGraphic          graphic;

graphic.Create(0, "test", 0, 0, 0, 1200, 400);

この例は失敗します。

graphic.Create(0, (string) MathRand(), 0, 0, 0, 1200, 400);
この例でOKです。
 

すでに書きました 。でも、本当に迷惑な話です。
このサイトのバックエンドの開発者の皆様、どうか修正してください。
購入してもいない有料製品の新バージョンに関する通知が、時には1日に何度も届きます。

私はこのリンクをクリックします。

 
Andreas Hoogendoorn #:

CGraphicと CCurveのクラスを使っているのですが、おかしなことが起こります。同じEAを2つ、異なる通貨ペアで動かしています。片方のチャートをスクロールすると、もう片方のチャートが一瞬だけ表示される。メモリが2つのグラフの間で混乱しているようです。端末を再起動しても何も変わりません。(画像はアニメーションGIFです)。


グラフオブジェクトを作成する際、描画されるチャートIDなどの名前を追加する必要があります。

   CGraphic graphic;

   graphic.Create(0,"G"+(string)ChartId(),0,30,30,780,380);


そうでなければ、両方のグラフのグラフィカル・リソースの名前は同じになり、グラフィカル・リソースはターミナルに対してグローバルなので、両方のプログラムは同じリソースで動作します(つまり、同じキャンバスに描画します)。

 

エラー:OrderCalcMarginが 間違った値を返す


OrderCalcMargin()は、必要なマージンを誤った値で返すことがあります。

例えば、多くの主要なFXペアで正しく動作し、他の多くのCFDなどでも正しい値を返します。


しかし、USDPLNやPLATINUMなどでは、全く間違った必要証拠金の値を返します。

EURUSDとUSDPLNの ENUM_SYMBOL_CALC_MODEは 同じ(SYMBOL_CALC_MODE_FOREX)ですが、EURUSDでは正しい値を返すのに、USDPLNでは間違った値を返しています。

なぜでしょうか?

 

こんにちは、私は正しい場所に書いていることを望みます(しかし、何かあれば、より関連性の高い場所を提案してください)。

MT5(バージョン5.00ビルド3260、Just2Trade)でアラートが消えるという話です。

要するに、すべてのアロケーションを追加(または変更)して、ウィンドウを閉じずにコンピュータを再起動(Start Shutdown-Reboot)すると、
すべてのアロケーションの変更が消えて しまうのです。そして、それらを保存するためには、十字キーでターミナルウィンドウを閉じることを忘れないようにする必要があります。

これはかなり残酷なバグで、修正する必要があります。

 
Lazar Buga #: なぜそうなのか?

あなたのブローカーは混乱しました。彼らに話してください。

 
Ilyas #:

グラフィカルオブジェクトを作成する際には、その名称、例えば描画されるチャートのIDを追加する必要があります。


そうでなければ、両方のグラフのグラフィックリソースの名前は同じになり、グラフィックリソースは端末のグローバルなものなので、両方のプログラムは同じリソースで動作します(つまり、同じキャンバスに描画します)。

グラフィカル・オブジェクト・リソースの名前は、63文字を超えてはいけません。名前にチャート識別子をつけると、残念ながらまともに読める名前はあまり残らない。

 
a18 #:

こんにちは、私は正しい場所に書いていることを望みます(しかし、何かあれば、より関連性の高い場所を提案してください)。

MT5(バージョン5.00ビルド3260、Just2Trade)でアラートが消えるという話です。

要するに、すべてのアロケーションを追加(または変更)して、ウィンドウを閉じずにコンピュータを再起動(Start Shutdown-Reboot)すると、
すべてのアロケーションの変更が消えて しまうのです。そして、それらを保存するためには、十字キーでターミナルウィンドウを閉じることを忘れないようにする必要があります。

修正されるのはかなり残酷なバグです。

修正済み、ベータ版に搭載予定です。

 
コンパイルエラーです。
template<typename T>
struct A {
    T *t;
};
void OnStart()
{
    A<void> a; //Error: 'void' - expression of 'void' type is illegal
}