初学者的问题 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:
谢谢你,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

作为一项规则,我想。

数学计算 中使用的变量,最好将其声明为双数

如果这些计算使用递增的循环变量,我们可以使用双y=y+1或双y=y-1。

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

作为一项规则,我想。

数学计算 中使用的变量最好声明为double。

或双y=y+1或双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 有类似的东西吗?

不,不。为什么,当有了MetaTrader 5,有了净值化和对冲,你可以在真正的交易所进行交易?

 
Karputov Vladimir:

下面是一个脚本的例子,它浏览所有未结头寸,并将其数量与给定的数量(变量"手")进行比较。

弗拉基米尔,请问你在这段代码中是如何设想一个成交量为0.0的位置的?

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

Vladimir,请问你是如何设想这个代码中的0.0位置的?

这是一个返回PositionGetDouble 函数的检查。如果失败,则返回0--即是一个错误。