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

 
Leo59:
なぜこのようなことが起こるのか、教えてください。

ダブルA
int x, y;

x=100; y=3; A=x/y=33,000
Целый тип int x=100 / Целый тип int y=3 => Целое число 33.
Так как "А" - это вещественное число, то Целое число "33" преобразовывается к вещественному и получаем 33.0
 
Karputov Vladimir:
ウラジミールさん、ありがとうございます。

これは面白い機能ですね。検索エンジンで検索しても、何も出てきません。フォーラムで質問して答えを待っていると、自分で見つけることができる ))


https://www.mql5.com/ru/articles/1561

MQL4で倍数を扱う際の特殊性

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • 2009.11.02
  • MetaQuotes Software Corp.
  • www.mql5.com
В данной заметке собраны советы по решению наиболее часто возникающих ошибок при работе с числами типа double в программах на MQL4.
 
Leo59:
何が原因なのか、教えてください。

ダブルA
int x, y;

x=100; y=3; A=x/y=33.000

を原則としているようです。

数学的な計算 で使用される変数は、double として宣言するのが最善です。

これらの計算がインクリメンタルループ変数を使用する場合、double y=y+1またはdouble y=y-1を使用することができます。

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
new-rena:

を原則としているようです。

数学的な計算 で使用される変数は、double として宣言するのが最善です。

またはdouble y=y+1またはdouble y=y-1。

また、明示的な型変換も ある。

double A;
int x, y;

x=100; y=3; 
A=(double)x/y; // в операциях умножения и деления достаточно привести к double только одно
 

こんにちは。

オープンポジションの 中から、あるロットのポジションを探す方法を教えてください。

記号やマジックナンバーは不明です。私は次の条件が必要です:もし 位置のロット== 0.1)その後{いくつかのアクション;}。

 
mila.com:

こんにちは。

オープンポジションの 中から、あるロットのポジションを探す方法を教えてください。

記号やマジックナンバーは不明です。私は、およそ次の条件が必要です:もし 位置のロット== 0.1)その後{いくつかのアクション;}。

以下は、すべてのオープンポジションを調べ、その出来高を指定されたもの(変数「ロット」)と比較するスクリプトの例です。

//+------------------------------------------------------------------+
//|                                               PositionsTotal.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property  script_show_inputs
//--- input parameter
input double lot=0.01; // искомый лот
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int count_positions=PositionsTotal(); // количество открытых позиций
   for(int i=0;i<count_positions;i++)
     {
      ResetLastError();
      //--- возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней 
      string name=PositionGetSymbol(i);
      if(name==NULL)
        {
         Print("PositionGetSymbol Error# ",GetLastError());
         return;
        }

      double position_lot=PositionGetDouble(POSITION_VOLUME); // получаем объем позиции
      if(position_lot!=0)
        {
         if(position_lot==lot)
           {
            // найдена позиция с заданным объёмом 
           }
        }
     }
  }
//+------------------------------------------------------------------+
ファイル:
 
Karputov Vladimir:

以下は、すべてのオープンポジションを調べ、その出来高を指定されたもの(変数「ロット」)と比較するスクリプトの例です。

ありがとうございます!すみません、指定がなかったのですが、MQL4でも 同じようなものがあるのでしょうか?

 
mila.com:

ありがとうございます!すみません、指定がなかったのですが、MQL4でも 同じようなものがあるのでしょうか?

いいえ、違います。MetaTrader5にはネッティングやヘッジがあり、実際の取引所でも取引できるのに、なぜでしょうか?

 
Karputov Vladimir:

以下は、すべてのオープンポジションを調べ、その出来高を指定されたもの(変数「ロット」)と比較するスクリプトの例です。

ウラジミールさん、このコードでボリュームが0.0のポジションをどのように想定しているのか、お伺いしてもいいですか?

      double position_lot=PositionGetDouble(POSITION_VOLUME); // получаем объем позиции
      if(position_lot!=0)
 
Alexey Viktorov:

ウラジミールさん、このコードで0.0の位置をどのように想定しているのか、お聞かせください。

これは、PositionGetDouble 関数を返すためのチェックです。失敗した場合は0を返す,つまりエラーとなる。
理由: