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

 
Interesting:

より信頼性が高い?初期化時のハンドルの取得が確実でないのはなぜですか?必要なデータの確認ができないのはなぜですか?ましてや、チェックの有無が信頼できないのはなぜか。

初心者の方には難しいかもしれませんが、時間が経てばすべてが明らかになるはず...。

実は、後回しにせず、すぐに解決しようと思っているのですが...。意味もわからず、ある動作をただ真似するのは嫌です。もし、MQL4のような組み込み関数としてコードを用意するのであれば、バー数を示す追加パラメータを追加することになるでしょう。

 

なぜ読み込まれるのですか?

 
simpleton:

"普通の数字 "は定数表現であり、これも型を持つ。この場合、int型になります。

各々がint型の2つの部分式の乗算からなる式もint型である。ここでオーバーフローが発生する。

そして、その時だけ、long 変数の初期化時にint式の型からlong型への暗黙の変換が行われます。

ここではすべてがクリアになる。ちなみに、この場合、各オペランドを longにキャストする必要はない。一方をキャストして、もう一方を暗黙のうちにキャストすればいいのです。

これは、私が言いたかったことなのですが、あまりアカデミックな言葉を使っていないのです。要は、他の求職者に警告することです。

質問が違う。タルムードのどこにそんなことが書いてあるんだ?

"普通の数字 "は定数表現で、型も持って いる。この場合、int型になります。

例えば、Xを100000000とすると、long 型になるのですか? また、ulongやdatetimestringでも だめなのですか?

数値255のucharまたはshortの型は何ですか?

 
gumgum:

なぜ読み込まれるのですか?

おそらく、GBPJPYのクロスペアが原因で、コードのどこかにマージン計算があるのでしょう。IMHO
 
simpleton:

ログとコードが混在しているようです。上記のコードは、「きれいに」動作します。そして、このようなログを得るためには、変数AとBをint型またはuint型にし、変数Xをuint型に する必要があったのです。

そして、これがオリジナルコードの作品です。

ビルド314(2010年8月20日)。

別のコードを引用しました

long A = AccountInfoInteger(ACCOUNT_LOGIN);  // 661701
long B = A;
long C = 661701;

Print(" A=",A,"  B=",B,"  C=",C);

long X =(long)10000;

long L1 = A*X;
long L2 = B*X;
long L3 = C*X;

Print(" L1=",L1,"   L2=",L2,"   L3=",L3);

最初の行に特に注意してください。あなたのアカウントには別の番号があるかもしれません。調べて、ロング Cに入れる=。

再度結果を確認

2010.08.25 20:23:12     Servis (EURUSD,H1)       L1=2322042704   L2=2322042704   L3=6617010000
2010.08.25 20:23:12     Servis (EURUSD,H1)       A=661701  B=661701  C=661701

ビルド314(2010年8月20日)。

 
SymbolInfoDouble(_Symbol,SYMBOL_POINT)関数は、USDCHFの小数点以下5桁の値として0.00001を表示しますが、このペアで受け入れられる値は0.0001であるのはなぜですか。
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
  • www.mql5.com
Получение рыночной информации / SymbolInfoDouble - Документация по MQL5
 
rut_:
USDCHFペアのSymbolInfoDouble(_Symbol,SYMBOL_POINT)関数では、小数点以下5桁のポイントサイズが生成されますが、このペアはポイント値0.0001で受け入れられているのに、なぜでしょうか?

なぜ4桁なのか、端末には5桁の数字が表示されています。
 
sergey1294:
この楽器に4桁の数字があるとなぜ思うのか、端末には明らかに5桁の数字が表示されている

この機能は、5桁の口座でも異なるポイント値を返すことができますが、すべてはブローカーが受け入れる設定に依存します。

例えば、ある証券会社では、次のようなコメントがあります。

1 pips (пункт) равен:

для валютных пар с 5 знаками после запятой - минимальному изменению 4-го знака после запятой (0,0001);
для валютных пар с 3 знаками после запятой - минимальному изменению 2-го знака после запятой (0,01).

と5桁目に相当する1pipsを持つものがあります。

削除済み  
SHOOTER777:

それが言いたかったのですが、あまりアカデミックな言葉ではありません。そして、最も重要なのは、他の求職者に警告することです。

質問が違う。どのタルムードのどこに書いてあるんだ?

"普通の数字 "は定数表現であり、これも型を持つこの場合、int型になります。

例えば、Xを100000000とすると、long 型になるのですか? また、ulongやdatetimestringでも だめなのですか?

数値255のucharまたはshortの型は何ですか?

定数 10000000000 はすでに long 型です。

どのように置けばいいのでしょうか?通常の言語には、明示的な型変換を行わずに定数の型を指定できる接尾辞-修飾子がある。MQL5については、float用しか見つかっていません。したがって、uchar, ushort, uint, ulong, char, short, long 型の定数(定数値が int 型に収まる場合)を明示的に型変換 せずに定義することは不可能です。

定数255はint型である。例えば、文字定数はushort型であると宣言されているなど、型の記述の中に何かを見出すことができます。また、datetime型、color型、bool型、double型、string型の定数についての情報もあります。

定数型は sizeof が導入されていれば、そのサイズを表示することができます(なぜ導入されているのかは、開発者に聞いてみてください)。

void OnStart()
{
  Print("sizeof true                = ", sizeof true);
  Print("sizeof 'a'                 = ", sizeof 'a');
  Print("sizeof 255                 = ", sizeof 255);
  Print("sizeof 200000000           = ", sizeof 20000000);
  Print("sizeof 10000000000         = ", sizeof 10000000000);
  Print("sizeof C'128,128,128'      = ", sizeof C'128,128,128');
  Print("sizeof D'2004.01.01 00:00' = ", sizeof D'2004.01.01 00:00');
  Print("sizeof 1.0f                = ", sizeof 1.0 f);
  Print("sizeof 1.0                 = ", sizeof 1.0);
  Print("sizeof \"Xa!\"               = ", sizeof "Xa!");
  Print("sizeof \"Xa-xa-xa!!!\"       = ", sizeof "Xa-xa-xa!!!");
}

/* Вывод в лог (хронология - сверху вниз):
GF      0       1 (EURUSD,M15)  02:03:23        sizeof true                = 1
IS      0       1 (EURUSD,M15)  02:03:23        sizeof 'a'                 = 2
LF      0       1 (EURUSD,M15)  02:03:23        sizeof 255                 = 4
JI      0       1 (EURUSD,M15)  02:03:23        sizeof 200000000           = 4
EQ      0       1 (EURUSD,M15)  02:03:23        sizeof 10000000000         = 8
DG      0       1 (EURUSD,M15)  02:03:23        sizeof C'128,128,128'      = 4
JN      0       1 (EURUSD,M15)  02:03:23        sizeof D'2004.01.01 00:00' = 8
GE      0       1 (EURUSD,M15)  02:03:23        sizeof 1.0f                = 4
GR      0       1 (EURUSD,M15)  02:03:23        sizeof 1.0                 = 8
QJ      0       1 (EURUSD,M15)  02:03:23        sizeof "Xa!"               = 12
ER      0       1 (EURUSD,M15)  02:03:23        sizeof "Xa-xa-xa!!!"       = 12
*/

一般に、double定数のfだけはfloatに変更して動作するが、これはこのような定数型の大きさでわかる。

ここで、私が見つけた唯一のsizeof操作の賢明な使用法です。:)

削除済み  
SHOOTER777:

別のコードをお渡ししました

最初の行に特に注意してください。あなたのアカウントに別の番号がある可能性があります。調べて、ロング Cに入れる=。

再度結果を確認

ビルド314(2010年8月20日)。

いいえ、あなたのような効果はありません。MT5のビット版を確認する程度です。私は64ビット版を持っていますが、あなたはどうですか?

ところで、私がテストした修正コードでは、私と同じような結果が得られるのでしょうか?

もしそうなら、私が見たものは、値の「起源」に関するバグと非常によく似ています。つまり、さらなる計算のベースとなる値がもともとどこから来たかによって、コードの動作が(正しくもあり正しくもない)異なることがあるのです。