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

 
post_ek:
那么,是否可以在Otkritie交易MT5股票?
你可以!只不过,它将是股票或期货(只免费提供一个MT5平台)。对于第二种,你将不得不支付月费。在我的记忆中,是这样的。请在我在Otkritie的个人账户中寻找细节。
 
Alexey Kozitsyn:

弗拉基米尔,别把人搞糊涂了!

来自文件。

https://www.mql5.com/ru/docs/basis/variables/global
不初始化变量的习惯是有害的,因为这种行为往往会导致 "黑天鹅 "的出现。这就是为什么你应该把它作为一个规则--创建一个变量,一次性初始化它。
 
Vladimir Karputov:
不初始化变量的习惯是有害的,因为这种行为往往会导致 "黑天鹅 "的出现。因此,经验法则是创建一个变量并立即初始化它。
停,停,停。我们不要把 "制定规则 "和"有必要在OnInit()中明确初始化(这些变量赋值)"混为一谈--坦率地说,这是不真实的!"。
 
Alexey Kozitsyn:
哇,哇,哇。让我们不要混淆 "把它作为一个规则 "和"你必须在OnInit()中明确地初始化(这些变量赋值)"--这显然是不真实的! 你必须把它作为一个规则。
你不需要初始化变量--钱是你的。
 
Vladimir Karputov:
你不需要初始化变量--钱是你的。
再一次。不要把机会和责任混为一谈!
 

弗拉基米尔说得部分正确。

这里有一个例子。

从前,我不记得是什么时候,我声明了一个变量

bool STOP。

并在OnTick 中实际使用它。

默认情况下,bool 应该是false

我这样做了。

void OnTick ()

{

if(!STOP) {Print("STOP");return;}

}

这段代码没有成功,因为我没有指定boolSTOP=false

这种情况发生过一次,是在某个版本上,后来我没有重现它(是版本有问题还是其他原因--我不知道)。

 
Vladislav Andruschenko:

弗拉基米尔说得部分正确。

我决不是在呼吁让变量不被初始化。但是,当你给新手提供建议时,不要说你的建议是唯一正确的解决方案,尤其是它不是。
 
Vladimir Karputov:
变量不初始化的习惯是有害的,因为这种行为往往会导致 "黑天鹅 "的出现。因此,你应该把它作为一个规则--创建一个变量,立即初始化它。

在OnInit()的初始化过程中切换时间框架时,你可能会丢失变量值--因此可能会在程序逻辑中出现错误。

//+------------------------------------------------------------------+
//|                                    exTextInitGlobalVariables.mq5 |
//|              Copyright 2015, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
//--- input parameters
input int      TestInput=0;            // Внешняя переменная
int testInputGlobal=TestInput;         // Значение внешней переменной, присвоенное на глобальном уровне
int testInputInit;                     // Значение внешней переменной, присвоенное в OnInit()

//--- global variables
int   TestValueGlobalNoInitNo;         // Не инициализирована значением нигде
int   TestValueGlobalYesInitNo=0;      // Инициализирована значением 0 при объявлении, не инициализирована в OnInit()
//---
int   TestValueGlobalNoInitYes;        // Не инициализирована значением при объявлении, инициализирована в OnInit() нулём
int   TestValueGlobalYesInitYes=0;     // Инициализирована нулём и при объявлении, и в OnInit()
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   testInputInit=TestInput;
   TestValueGlobalNoInitYes=0;
   TestValueGlobalYesInitYes=0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   testInputInit++;
   testInputGlobal++;
   TestValueGlobalNoInitNo++;
   TestValueGlobalNoInitYes++;
   TestValueGlobalYesInitNo++;
   TestValueGlobalYesInitYes++;
   Comment
         (
         "\n"+"============================================="+
         "\n"+"Значение внешней переменной TestInput(",TestInput,"), присвоенное в OnInit(): ",(string)testInputGlobal+
         "\n"+"Значение внешней переменной TestInput(",TestInput,"), присвоенное на глобальном уровне: ",(string)testInputGlobal+
         //---
         "\n"+"============================================="+
         "\n"+"Не инициализирована значением нигде: ",(string)TestValueGlobalNoInitNo+
         "\n"+"Инициализирована значением 0 при объявлении, не инициализирована в OnInit(): "+(string)TestValueGlobalYesInitNo+
         //---
         "\n"+"============================================="+
        "\n"+"Не инициализирована значением при объявлении, инициализирована в OnInit() нулём: "+(string)TestValueGlobalNoInitYes+
         "\n"+"Инициализирована нулём и при объявлении, и в OnInit(): "+(string)TestValueGlobalYesInitYes
         );
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

在OnInit()的初始化过程中切换时间框架时,你可能会丢失变量值--因此在程序逻辑中可能会出现错误。

如果你不考虑到。

啟動

在客户终端加载程序(专家顾问或自定义指标)并开始初始化全局变量后,将立即发送Init事件,该事件由OnInit() 函数处理,如果它有一个。在证券和/或图表周期变化后,在MetaEditor中重新编译程序后,在改变专家顾问或自定义指标设置窗口的输入参数后,也会产生这一事件。专家顾问在账户改变后也会被初始化。脚本不产生初始事件。

那么你就可以做出你想要的任何东西。

 
Vladimir Karputov:

如果你不考虑到。

啟動

在客户终端加载一个程序(专家顾问或自定义指标)并开始初始化全局变量后,将立即发送Init事件,如果有的话,将由OnInit() 处理。在证券和/或图表周期变化后,在MetaEditor中重新编译程序后,在改变专家顾问或自定义指标设置窗口的输入参数后,也会产生这一事件。专家顾问在账户改变后也会被初始化。脚本不产生初始事件。

你可以做任何你想做的事。

我说的是托马斯,他说的是你......。

在这种情况下,你如何沟通?

我说的是在OnInit()中不经意地 初始化全局变量的恶习

同时,你把你的有害的习惯以一种不问世事的形式强加给所有新来者。你在孕育一代E.S.T.?那些不思考,而盲目跟随他们的老师的克隆人?