初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1109

 
Vitaly Muzichenko:

そうすると、端数が出ないんです。

そういうものが必要なんでしょうね。

typename(TralingStop)=="double" ?・・・。

 
Artyom Trishkin:

typename(TralingStop)=="double" ?

正確には、入力パラメーターに「input」と入力した場合、例えば15や15.0であれば、入力 フィールドに15だけ、つまり整数を表示するのです。入力パラメーターに12.3と入力した場合、入力フィールドに12.3と表示する

 
Vitaly Muzichenko:

正確には、入力パラメーターに「input」と入力した場合、例えば15や15.0であれば、入力 フィールドに15だけ、つまり整数を表示するのです。入力パラメーターに12.3と入力した場合は、入力フィールドに12.3と表示します。

それなら、どんな数でも小数点以下の桁数を決めればいいということになりますね。どこかでこんな話題がありましたね〜。

 
Artyom Trishkin:

それなら、どんな数でも小数点以下が何桁かを決めることです。どこかでこんな話題がありましたね〜。

あったと思うのですが、見つからなかったのでここに書きました(

 
Vitaly Muzichenko:

正確には、入力パラメーターに「input」と入力した場合、例えば15や15.0であれば、入力 フィールドに15だけ、つまり整数を表示するのです。入力パラメーターに12.3と入力した場合は、入力フィールドに12.3と表示されるはずです。

このようなスクリプトで実験してみましょう。

#property script_show_inputs
input double inp1 = 15.0;
input double inp2 = 12.3;
//+------------------------------------------------------------------+
void OnStart()
  {
   int dig1 = GetDigitsInDouble(inp1);
   int dig2 = GetDigitsInDouble(inp2);
   printf("inp1 = %f --> %s",inp1,DoubleToString(inp1,dig1));
   printf("inp2 = %f --> %s",inp2,DoubleToString(inp2,dig2));
  }
//_______________________________________________________________________
int      GetDigitsInDouble(double doublevalue)
  {
   long l=long(doublevalue/0.0000001);int result=0,i=10000000; while(result<7 && l%i>0)
     {i/=10; result++;}return result;
  }

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp1 = 15.000000 --> 15

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp2 = 12.300000 --> 12.3


小数点以下7桁がおかしくなることがあるようです。

 
Vitaly Muzichenko:

だったようなのですが、見つからなかったのでここに書きました(

Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
  • 2018.11.03
  • www.mql5.com
Думаю не у одного меня была редкая ситуация когда нужно было получить количество десятичных знаков после запятой, а функция Digits() работает тольк...
 
Igor Makanu:

は、このようなスクリプトで実験してみましょう。

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp1 = 15.000000 --> 15

2019.08.06 22:40:44.668 tst1 (EURUSD,H1) inp2 = 12.300000 --> 12.3


小数点以下7桁目が間違っていることがあると思います。

アルチョム・トリシキン

皆さん、ありがとうございます!やってみます。

 
他のMT5端末のEAから読み取れるように、オープンポジションの 情報(ロット、タイプ)を記録するにはどうすればよいですか?
 
もし、リモートエージェントに最適化が あり、EAがデータをファイルに書き込んだ場合、私のローカルエージェントだけがテスターフォルダにあり、リモートエージェントはないので、私はこのデータを取得できないことを理解しているのですが、この質問について説明してもらえますか?

もしそうなら、リモートエージェントからファイルを取得する可能性を実装する方法はないでしょうか?
 
Vitaly Muzichenko:

あったと思うのですが、見つからなかったので、こちらに投稿しました(

ドキュメントにはそのように記載されています。フィールドや入力変数に小数点 以下が何桁あっても構わない。

Документация по MQL5: Математические функции / MathMod
Документация по MQL5: Математические функции / MathMod
  • www.mql5.com
Функция MathMod рассчитывает вещественный остаток f от val / y таким образом, что val = i * y + f , где i является целым числом, f имеет тот же знак, что и val, и абсолютное значение f меньше, чем абсолютное значение y.
理由: