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

 
Igor Makanu:

シンボルへのアクセスがあるのは、ある種のパラドックスですね.へのアクセスはできませんが

const MqlTick _Tick; // Текущий _Symbol-тик.

MQLはトレーディングストラテジーの開発言語として位置づけられるが

_Symbolは定数だから問題ない(Symbol()と呼ぶ 方が正しいが)。 tickは変数。constと 宣言されているのに、値が変わってしまうのはどうなんだろう?

 
Alexey Navoykov:

constと 宣言しておきながら、値が変わってしまうのはどうなんでしょう。

残念、私もあなたと同じです...。同じ理想主義者でも、VS C#で書いた方が論理的で理解しやすい - コンパイラがコンパイル前に定数の論理的概念とC++のマシンチェックを分離できないのです。

臆することなく質問した

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412


gist - それはC++ですべて論理的です ;)

 
Alexey Navoykov:

この***は必要ありません。 _Symbolは定数なので問題ありませんSymbol()を呼び出す 方が正しいですが)。

ユーザー向けに書いて何が悪いんだ?

const string _Symbol = ::Symbol();

また、tickは変数です。constと 宣言されているのに、値が変わってしまうというのはどうでしょう。

MT4でBid/Ask。もちろん、RefreshRates()はあります。


つい最近、Digitsが正しく設定されていないシンボルを発見しました。証券会社に修正を依頼しました。その場でやってくれたんです。変数_DigitsとDigits()の値を変更したかどうかを調べていません。しかし、シンボルがその場で値を変えられるというだけで

 
開発者の皆様、WIN10のようにチャートウィンドウを他のウィンドウと同じように表示することは可能でしょうか?また、チャートウィンドウの枠や端末の枠を黒く塗り替えることも可能です。
配色次第では、例えば黒いチャートに白いワイドなフレームは、煩わしく、イライラさせ、金持ちになるのを妨げる。 頼む!!!
 
Igor Makanu:

残念、私もあなたと同じです...。私は、VS C#で書く方が論理的で理解しやすいと思う理想主義者と同じです。C#のコンパイラは、コンパイル前に定数の論理的概念とC++のマシンチェックを分離することができないのです。

臆することなく質問した

https://www.mql5.com/ru/forum/1111/page2680#comment_15546412

最初のケースでは、クラスのメンバーではなく、静的変数を持っているので、定数は何の関係もないのです。

 
Alexey Navoykov:

この***は必要ありません。 _Symbolは定数なので問題ありません(Symbol()と呼ぶ 方が正しいですが)。 tickは変数です。constと 宣言されているのに、値が変わってしまうのはどう考えればいいのでしょうか。

MQL側からの不変性とカーネル側からの不変性が混在しているんですね。const 修飾子で構造体を宣言することの本質は、MQL コードがそれを変更できないようにすることです。例えて言えば、constクラスのメソッドで、このメソッドではオブジェクトが変化しないが、他の条件によってオブジェクト自身が状態を変化させることができないことを意味する、と表現することができる。

 

テスターのビジュアルモード(もちろんエミュレート)でグローバル ターミナル変数を 見ることができないのはなぜですか?

グローバルターミナル変数はテスターで全く機能しないのですか?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Andrey Dik:

テスターのビジュアルモード(もちろんエミュレート)でグローバル ターミナル変数を 見ることができないのはなぜですか?

グローバルターミナル変数はテスターで全く機能しないのですか?

昔から可能だった(F3)。働いているのです。

 
Alexey Navoykov:

最初のケースでは、クラスのメンバではなく、静的変数が変更されているので、定数は全く関係ありません。

このスクリプトはsum = 0を返すべきですか?

それとも、このスクリプトはコンパイルエラーを 返すべきなのでしょうか?

void OnStart()
{
   int sum = 0;
   for(int i = 0; i < 3 ; i++)
   {
      const int j = f(i);
      sum += j * i;
   }
   printf("sum = %i", sum);
}
//+------------------------------------------------------------------+
int f(int v)
{
   return(v);
}
//+------------------------------------------------------------------+
 
Igor Makanu:

スクリプトは sum = 0 を返すべきですか?

それとも、このスクリプトは、コンパイル時のエラーさえも 返すべきなのでしょうか?

せめてデバッガを動かしてから馬鹿な文を書けよ。
2回目のループでi==1、j==1、3回目以降で両方が1つ増える。

理由: