//+------------------------------------------------------------------+ //| 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 inputint 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 | //+------------------------------------------------------------------+ intOnInit() { //--- testInputInit=TestInput; TestValueGlobalNoInitYes=0; TestValueGlobalYesInitYes=0; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ voidOnDeinit(constint reason) { //---
} //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ voidOnTick() { //--- 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 ); } //+------------------------------------------------------------------+
那么,是否可以在Otkritie交易MT5股票?
弗拉基米尔,别把人搞糊涂了!
来自文件。
https://www.mql5.com/ru/docs/basis/variables/global不初始化变量的习惯是有害的,因为这种行为往往会导致 "黑天鹅 "的出现。因此,经验法则是创建一个变量并立即初始化它。
哇,哇,哇。让我们不要混淆 "把它作为一个规则 "和"你必须在OnInit()中明确地初始化(给这些变量赋值)"--这显然是不真实的! 你必须把它作为一个规则。
你不需要初始化变量--钱是你的。
弗拉基米尔说得部分正确。
这里有一个例子。
从前,我不记得是什么时候,我声明了一个变量
bool STOP。
并在OnTick 中实际使用它。
默认情况下,bool 应该是false
我这样做了。
{
if(!STOP) {Print("STOP");return;}
}
这段代码没有成功,因为我没有指定boolSTOP=false。
这种情况发生过一次,是在某个版本上,后来我没有重现它(是版本有问题还是其他原因--我不知道)。
弗拉基米尔说得部分正确。
变量不初始化的习惯是有害的,因为这种行为往往会导致 "黑天鹅 "的出现。因此,你应该把它作为一个规则--创建一个变量,立即初始化它。
在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
);
}
//+------------------------------------------------------------------+
在OnInit()的初始化过程中切换时间框架时,你可能会丢失变量值--因此在程序逻辑中可能会出现错误。
如果你不考虑到。
啟動
在客户终端加载程序(专家顾问或自定义指标)并开始初始化全局变量后,将立即发送Init事件,该事件由OnInit() 函数处理,如果它有一个。在证券和/或图表周期变化后,在MetaEditor中重新编译程序后,在改变专家顾问或自定义指标设置窗口的输入参数后,也会产生这一事件。专家顾问在账户改变后也会被初始化。脚本不产生初始事件。
那么你就可以做出你想要的任何东西。
如果你不考虑到。
啟動
在客户终端加载一个程序(专家顾问或自定义指标)并开始初始化全局变量后,将立即发送Init事件,如果有的话,将由OnInit() 处理。在证券和/或图表周期变化后,在MetaEditor中重新编译程序后,在改变专家顾问或自定义指标设置窗口的输入参数后,也会产生这一事件。专家顾问在账户改变后也会被初始化。脚本不产生初始事件。
你可以做任何你想做的事。
我说的是托马斯,他说的是你......。
在这种情况下,你如何沟通?
我说的是在OnInit()中不经意地 初始化全局变量的恶习。
同时,你把你的有害的习惯以一种不问世事的形式强加给所有新来者。你在孕育一代E.S.T.?那些不思考,而盲目跟随他们的老师的克隆人?