Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 681
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Então é ou não possível negociar acções MT5 na Otkritie?
Vladimir, não confunda o homem!
A partir da documentação:
https://www.mql5.com/ru/docs/basis/variables/globalO hábito de não inicializar variáveis é prejudicial, porque este comportamento resulta frequentemente num "cisne negro". Portanto, a regra geral é criar uma variável e rubricá-la imediatamente.
Whoa, whoa, whoa, whoa. Não confundamos "tomar como regra" e"deve rubricar explicitamente (atribuir valores a) estas variáveisno OnInit()" - o que é flagrantemente falso!
Não é necessário rubricar as variáveis - o dinheiro é seu.
Vladimir está parcialmente certo.
Aqui está um exemplo,
Era uma vez, não me lembro quando, declarei uma variável
bool STOP;
e utilizá-lo efectivamente no OnTick .
Por defeito, o bool deve ser falso
Eu fi-lo:
{
if(!STOP) {Print("STOP");return;}
}
O código não funcionou porque eu não tinha especificado boolSTOP=false;
Esta situação ocorreu uma vez, em alguma construção, e eu não a reproduzi mais tarde (havia algum bug com a construção ou outra coisa qualquer - não sei).
Vladimir está parcialmente certo.
O hábito da desinicialização de variáveis é prejudicial, porque este comportamento conduz frequentemente a um "cisne negro". Por conseguinte, deve fazer dela uma regra - criar uma variável, inicializá-la imediatamente.
Pode perder valores variáveis ao mudar os períodos de tempo durante a sua inicialização no OnInit() - daí possíveis erros na lógica do programa.
//| 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
);
}
//+------------------------------------------------------------------+
Pode perder valores variáveis ao mudar os períodos de tempo durante a sua inicialização no OnInit() - daí possíveis erros na lógica do programa.
Se não tiveres em conta:
Init
Imediatamente após o terminal do cliente carregar o programa (Expert Advisor ou indicador personalizado) e iniciar a inicialização das variáveis globais, o Init() será enviado, que é tratado pela funçãoOnInit(), se tiver uma. Este evento também é gerado após uma mudança de segurança e/ou de período gráfico, após recompilar o programa no MetaEditor, após uma mudança dos parâmetros de entrada de um Expert Advisor ou uma janela de definição de indicadores personalizada. O Conselheiro Especialista também é inicializado após a conta ter sido alterada. O evento Init não é gerado para scripts.
então pode fazer o que quiser.
Se não tiveres em conta:
Init
Imediatamente após o terminal do cliente carregar um programa (um Expert Advisor ou um indicador personalizado) e iniciar a inicialização de variáveis globais, o Init() será enviado, que é tratado peloOnInit(), se tiver um. Este evento também é gerado após uma mudança de segurança e/ou de período gráfico, após recompilar o programa no MetaEditor, após uma mudança dos parâmetros de entrada de um Expert Advisor ou uma janela de definição de indicadores personalizada. O Conselheiro Especialista também é inicializado após a conta ter sido alterada. O evento Init não é gerado para scripts.
Pode fazer tudo o que quiser.
Falo de Tomás, ele fala de Vosso...
Como se comunica em tal situação?
Falo de um hábito pernicioso de inicializar irreflectidamente variáveis globais no OnInit().
Ao mesmo tempo, impõe o seu hábito prejudicial a todos os recém-chegados de uma forma inquestionável. Está a criar uma geração de E.S.T.? Clones daqueles que não pensam, mas seguem cegamente o seu sentidoi?