初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1051

 
secret:

谢谢你的回答,我看了文档和你的例子,但还是没有找到如何在MT4中获得类似于OrderClosePrice()的参数。

如果ENUM_DEAL_ENTRY ==DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- 意味着买入头寸被关闭,因此 DEAL_PRICE为收盘价

 
secret:

谢谢你的回答,我看了文档和你的例子,但还是没有找到如何在MT4中获得类似于OrderClosePrice()的参数。

没有直接的类比。该职位由交易组成。如果你想准确地得到一个头寸的数据--你必须先从交易历史中把头寸组装回来。

因此,最好用 "交易 "的概念来工作。


一般来说,实施在很大程度上取决于对 "为什么 "这一问题的回答。也就是说,首先准确描述你想要什么,为什么要这样做。

 
secret:

我怎样才能得到一个订单(交易、头寸--任何东西)的收盘价?

用谷歌搜索了论坛,没找到。

https://www.mql5.com/ru/forum/162461

Как определить последнюю цену закрытия ордера (MQL5)?
Как определить последнюю цену закрытия ордера (MQL5)?
  • 2016.12.05
  • www.mql5.com
Подскажите как определить последнюю цену закрытия ордера (MQL5)? В MQL4 было просто OrderClosePrice...
 
Igor Makanu:

或者打开https://www.mql5.com/ru/code/16006

再看看@fxsaber的 实现

从这里撕掉实现是不现实的,因为它对库的所有其他部分有很强的依赖性。

 

朋友们,请教如何解决一个看似简单的问题。一段代码。

double stavkariska;

//ставка риска по инструментам

if(StringCompare(_Symbol,"VTBR")==0||StringCompare(_Symbol,"LKOH")==0)

   {double stavkariska=0.3;}

else double stavkariska=1;

  int lot=int (depozit/(d*stoimkontr)*stavkariska); 

编译器警告。

'stavkariska'的声明在第25行隐藏了本地声明 script.mq5 32 12

可能使用未初始化的变量'stavkariska' script.mq5 33 39

解决这个问题的正确方法是什么,使其在编译时没有任何警告?


Компиляция - Разработка программ - MetaTrader 5
Компиляция - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
 
TrueSam:

朋友们,请教如何解决一个看似简单的问题。一段代码。

编译器警告。

'stavkariska'的声明在第25行隐藏了本地声明 script.mq5 32 12

可能使用未初始化的变量'stavkariska' script.mq5 33 39

如何正确解决这个问题,使其在编译时没有任何警告?


使用译员。

декларация 'stavkariska' скрывает локальную декларацию в строке 25 скрипт.mq5 32 12

возможно использование неинициализированной переменной 'stavkariska' скрипт.mq5 33 39


也就是说,要更仔细地声明变量--避免在同一范围内声明相同的变量。

当声明一个变量时,要养成立即初始化它的习惯

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);
 
Vladimir Karputov:

利用翻译机。


也就是说,要更仔细地声明变量--避免在同一范围内声明相同的变量。

当声明一个变量时,要养成立即初始化它的习惯

问题是,如果我在If else语句中声明另一个变量,我就需要再次声明,否则就会出现错误"'stavkariska1'--未声明的标识符。 对一个新手来说,这是一个恶性循环。也许还有其他方法来实现选择?
 
TrueSam:
问题是,在If else运算符中声明另一个变量时,我需要再次声明,否则会出现错误"'stavkariska1'--未声明的标识符"。 对于初学者来说,这是一个恶性循环。也许有其他方法来实现选择?

这个小机器人也急中生智,犯了一个错误。

   double StavkaRiska=0.0;// ставка риска по инструментам

   if(StringCompare(_Symbol,"VTBR")==0 || StringCompare(_Symbol,"LKOH")==0)
     double  StavkaRiska=0.3;
   else StavkaRiska=1;

   int lot=int(depozit/(d*stoimkontr)*StavkaRiska);

突出显示的那一项是不必要的。如果不重新声明,它应该能正常工作。

 
Alexey Viktorov:

小螃蟹们在匆忙中也犯了一个错误。

突出显示的那条是多余的。没有重新宣布,它应该照常工作。

谢谢你的关注。对不起,我是用复制粘贴的方式直接在我的浏览器中输入的。

 
Alexey Viktorov:

小螃蟹们在匆忙中也犯了一个错误。

突出显示的那条是多余的。没有重新宣布,它应该照常工作。

非常感谢您!圣杯 正在发挥作用 :)