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

 

昨日、職場のパソコンをWindows XP/32からWin7/64に入れ替えました。それ以前は、職場のMT4で普通にトレードして、ストレージからコードを更新して、ストレージに戻していました。これで7でMT4が使えるようになり、プロキシデータも新しくなり、コミュニティーのユーザー名とパスワードも登録されました。問題は、MetaEditor 4とコードの同期ができないことです。プロファイルで「ストレージを接続する」にチェックを入れています。

今日、コミュニティのパスワードを変更し、別のフォルダに2つ目のMT4をインストールし、プロキシを追加し、新しいログインとパスワードを設定し、取引は行っています。他にどこが問題なのか、アドバイスをお願いします。


 
paladin800:

昨日、職場のパソコンをWindows XP/32からWin7/64に入れ替えました。それ以前は、職場のMT4で普通にトレードして、ストレージからコードを更新して、ストレージに戻していました。今、私は7で私のmt4を使用することができます、私のプロキシアカウントは新しいです、コミュニティアカウントとパスワードも新しいです。問題は、MetaEditor 4とコードの同期ができないことです。プロファイルで「ストレージを接続する」にチェックを入れています。

今日、コミュニティのパスワードを変更し、別のフォルダに2つ目のMT4をインストールし、プロキシを追加し、新しいログインとパスワードを設定し、取引は行っています。他にどこが問題なのか、アドバイスをお願いします。


MT4ターミナルを管理者権限で再インストールし、MT4ターミナルを管理者権限で起動してください。Vista/8/8.1のMT4は、この方法でストレージとコードのあるフォルダの両方を見て、すべてのチャート設定を保存します。
 
barabashkakvn:
MT4ターミナルを管理者権限で再インストールし、MT4ターミナルを管理者権限で起動します。この方法でVista/8/8.1のMT4は、ストレージとコードのあるフォルダの両方を見、すべてのチャート設定を保存します。
なるほど。私は職場で静かにここでFXに取り組んでいる、管理者は(うまくいけば)知らないので、管理者権限を持つことは続かないでしょう。問題は致命的ではなく、フラッシュドライブで作業します。分かりやすい説明ありがとうございます。
 
paladin800:
なるほど。ここでこっそりFXをやっているのですが、管理者は(できれば)知らないので、管理者権限にしがみつくことはできないでしょう。問題は致命的ではなく、フラッシュドライブで作業します。分かりやすい説明ありがとうございます。
また、VPSをレンタル することもできます。そうすれば、リモートデスクトップ接続でログインでき、管理者権限も問題ない。
 
コンパイルエラー、ビルド969
template<typename T>
T plus( T a, T b )      { return ( a + b ); }

template<typename T>
int f( T& array[], int i )
{
        return ( plus( ::ArraySize( array ), i ) );
}

void OnStart()
{
        int a[ 2 ];
        int b = 1;
        Print( f( a, b ));
}

それは、新しいビルドで発生します。

template<typename T>
void g( T& array[] ) { Print( typename( ::ArraySize( array ))); }
void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: uint
}
uint ArraySize(...);
в то время как раньше было
 int ArraySize(...);
おじゃまします
int ArraySize(...);

ヘルプは無音で、そのような変更は計算に影響を与える可能性があるのに、なぜ変更したのでしょうか?

 
A100:
コンパイルエラー、ビルド969Because新しいビルドで、誰がそれによって悩まされた?

ヘルプは無音で、そのような変更は計算に影響を与える可能性があるのに、なぜ変更するのか!しかも、誰も気づかない。

もちろん,配列のサイズを表すにはuint の方がより合理的です.)
 
もう一つ非論理的なことは
template<typename T>
void g( T& array[] )
{
        Print( typename( ::ArrayResize( array, 3 )));
}

void OnStart()
{
        int a[ 2 ];
        g( a ); //Результат: int
}

ArraySizeは変更されたが、ArrayResizeは 変更されていないことが判明 - 変更された?根本的な違いは何でしょうか?

その差はこうだ

Возвращаемое значение

При успешном выполнении функция возвращает количество всех элементов, содержащихся в массиве после изменения размера;
в противном случае возвращает -1 и массив не меняет размеры.

ArrayResizeの戻り値の型を変更できないことが判明('-1'のため)。さて、ArrayResize型を変更できないのであれば、ArraySize型を変更する必要はないのでは?

 

という状況です。EURNZDのExpert Advisorを数年間稼働させる必要があります。すでにそのシンボルの履歴をすべて削除し、再度読み込みましたが、結果は同じです。

HistoryCenter: 5240 bars imported in 'EURNZD60'

まだ2013年9月です。この端末では、チャートの巻き戻しはできません。履歴センターを開き、「ダウンロード」をクリックすると、「シンボル EURNZDの新しいデータはありません」というメッセージが表示されます。書き方が間違っていても構わないのですが、どうすれば見積もりが取れるのでしょうか?私のブローカーは本当に履歴がないのでしょうか?他の記号で問題に出会ったことがないので、わからない。

P.S. 以上、質問を削除しました。EURNZDを諦めてGBPAUDをダウンロードしたら、突然この奇跡の技術でEURNZDの新しいデータも見られるようになったのです。同じような境遇にある人は、「タンバリンと踊る」ということを忘れずに、端末をいろいろな方法でしつこく引っ張る必要があります。;-)

P.P.S. 今度はAUDNZDにまた同じことが起こりました。突然データが表示されるまで、バカみたいに何度も連続してダウンロードをクリックしなければならなかった。

 
MetaDriver:
もちろん、配列のサイズを表すにはuint の方がスマートです。)

template<typename T>
void g( T& str ) { Print( typename( ::StringLen( str ))); }
void OnStart()
{
        string str = "ABC";
        g( str ); //Результат: int
}

文字列の長さを 負にすることはできませんが、長さ/サイズを表すにはintを使う方が理にかなっています。その理由は、関数(検索、計算など)が一般に長さ/サイズ、または失敗した場合に-1を返すため、エラー処理がずっと簡単になるからです。

 
A100:
コンパイルエラー、ビルド969 ...ヘルプは無音で、そのような変更は計算に影響を与える可能性があるのに、なぜ変更するのですか? しかも、誰もそれに気づかないでしょう。

ArraySizeについては、先日MQL4で同様の問題を提起しました(https://www.mql5.com/ru/forum/152471)。私が理解する限り、MQL5でも全て同じはずです。

おそらく、私のメッセージはそこで考慮されたのでしょう :) この問題に関して、サービスデスクは、原因はオプティマイザの不正な動作であり、新しいビルドでタイプをuintに変更すると回答しています。ちなみに、ArrayResizeもuintに変更するそうです。

エラー時の値-1については、以下の理由で問題ないはずです。(int)-1 = (uint)-1 = 0xFFFFFFFFFF = UINT_MAX,つまりビット表現は同じです。 しかし比較演算は異なる結果になります。

if (ArrayResize(...) < 0) ...

が不正確になります。