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

 
A100:
これが私の提案です。
...
今回の変更で影響を受けるのは == と != の操作のみです。
それ以外は、=演算子も含めて、今のままにしておく(変更しない)。

もし、ポインタとオブジェクトそのものを混同してしまうのであれば、どうして=演算子をそのままにしておくことができるでしょうか? もし、*演算子を使うのであれば、他のすべての演算子にも使うべきでしょう。コンパイラが勝手に正しいものを選ぶというのは間違いです。 見つかりにくいエラーがたくさん出るでしょう。 アクションはオブジェクトかポインタか、すべてが曖昧であるべきです。

もちろん、アスタリスクは無理矢理つけたもので、開発者が最初からあまりよくないと判断したコンセプトは全部変えなければならないのですが。

C++へのバインディングから脱却し、それぞれポインターを別のタイプの変数として使うことをやめ、リファレンスに置き換えるべきでした。 リファレンスは基本的にポインターと同じですが、コンパイラによってオブジェクトそのものとして解釈されるだけなのです。したがって、演算子を含むこれらの変数を使ったアクションは、すべてオブジェクトを使ったアクションとして扱われます。 正確に比較したり代入したりする必要がある場合は、参照演算子を使います。 したがって、矛盾が生じることはありません。

 A  a;                     // воздаём объект
 A& aref;                  // создаём неинициализированную ссылку

 &aref = &a;                // присваиваем ссылку на a
 bool equalref = &aref==&a; // сравниваем ссылки

 aref = a;                  //вызываем оператор=()
 bool equal = aref==a;      // вызываем оператор==()

C++へのバインディングは、言語のコンセプトにそぐわないので、もう意味がない。

 
A100:
最新のアップデートは何ですか?

MetaTrader、MetaEditorともにビルド1159(Windows 10 32bit)です。大型PC(64bit)では、MetaEditorはよくわかりませんが、MetaTraderは間違いなくビルド1159です。
 
A100:
最新のアップデートは何ですか?

1150を使用していますが、1159へのアップグレードはできません。
 
Gennadiy Stanilevych:
1150を使用していますが、1159へのアップデートが見当たりません。
最新のアップデートを取得するためには、MetaQuotes-Demoのサーバーに接続する必要があります。
 
A100:
MetaQuotes-Demoは、以前は月に2-3回更新されていたので、興味があります。ブローカーは更新頻度がかなり低いことがわかる。
カルプトフ・ウラジミール
最新のアップデートを取得するためには、MetaQuotes-Demoのサーバーに接続する必要があります。

同意、MetaQuotes-Demo経由で更新、まだ1150!そして、端末は何度も更新プログラムがダウンロードされたことを通知し、再起動を申し出たが、まだ1150。

OK、http://www.metatrader5.com/ru/download から配布パッケージをダウンロードし、MetaQuotes-Demoでデモ口座を開設し、何度かターミナルをオフにしたりオンにしたりしてみました - 1150!UAC無効、Windows 7 SP1 - 64

Скачать MetaTrader 5
Скачать MetaTrader 5
  • www.metatrader5.com
Скачать торговый терминал MetaTrader 5 для комфортной и успешной работы на финансовых рынках. Терминал обладает внушительными торговыми и аналитическими возможностями и является одним из лучших в мире
 

誰も答えてくれないし、OOPの議論が白熱して下火になってしまったので、質問を繰り返します。この質問は本当に重要で、それはバグなのか機能なのか?MT4で気づきました。

プログラムの実行 中にextern変数が変化しても、タイムフレームを変更すると、再びプロパティウィンドウで設定した値を取るという事態に遭遇しました。例えば、開始前にTradeEnableをEnableAllに設定し、プログラム実行中にEnableBuyに変更した場合、チャートが他のタイムフレームに変わると値はEnableAllに戻ります。タイマーイベントで定義した値をCommentで出力すると、エラーになることはない。

enum ETradeEnable {EnableAll, EnableBuy, EnableSell, DisableAll};
extern ETradeEnable TradeEnable = EnableAll;

TradeEnable変数は、チャート間の反転の影響を受けません。ヘルプを読む -入力変数とは異なり、外部変数の値はプログラム実行中に変更 することができます。

OnDeinitとOnInitはそのように設定されています。

質問:理解できないことがあります またはTradeEnableの変更はランタイムエラーですか?

int LastDeinitReason = 0;

void OnDeinit(const int reason)
{
    LastDeinitReason = reason;
    if(reason==REASON_CHARTCHANGE || reason==REASON_TEMPLATE || reason==REASON_PARAMETERS)
        return;
    EventKillTimer();
// далее код при завершении работы советника
}

int OnInit()
{
    if(LastDeinitReason==REASON_CHARTCHANGE || LastDeinitReason==REASON_TEMPLATE)
    {
        LastDeinitReason = 0;
        return(INIT_SUCCEEDED);
    }
    if(LastDeinitReason==REASON_PARAMETERS)
    {
        SetParams();
        return(INIT_SUCCEEDED);                              
    }
// далее код инициализации при запуске
}
 
Karputov Vladimir:
最新のアップデートを取得するには、MetaQuotes-Demoのサーバーに接続する必要があります。
これではどうしようもない。MT5を解体したこともありました。MetaQuotesでデモを公開。まだ1150。
 
Gennadiy Stanilevych:
役に立ちません。MT5をダウンさせたこともありました。メタクオーツに関するデモを開始。まだ1150。
MetaQuites-Demoサーバーにデモ口座を開設するだけでは不十分で、このデモ口座に接続して更新する必要があります。
 
Karputov Vladimir:
MetaQuites-Demoサーバーにデモ口座を開設するだけでは不十分で、このデモ口座に接続して更新する必要があります。

もちろん、つながりましたよ。その後、再度端末を再起動。まだ、アップデートが表示されません。

ファイル:
20150826.log  7 kb
 
Gennadiy Stanilevych:

もちろん、つながりましたよ。その後、再度端末を再起動。まだ、アップデートが表示されません。

おかしい(ログファイルに目を通した)。経験上、アップデートがある場合は、接続後、文字通り3秒以内にダウンロードが開始されます。