초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 681

 
post_ek :
그래서 Otkritie에서 MT5 주식을 거래할 수 있습니까?
할 수 있다! 주식 또는 선물만 있을 것입니다(하나의 MT5 플랫폼 만 무료로 제공됨). 두 번째로 - 매월 지불해야 합니다. 내가 기억하는 한 그렇습니다. 개인 계정 개설에서 자세한 내용을 참조하십시오.
 
Alexey Kozitsyn :

블라디미르, 사람을 혼동하지 마십시오!

문서에서:

https://www.mql5.com/ru/docs/basis/variables/global
변수를 초기화하지 않는 습관은 종종 검은 백조로 이어지기 때문에 해로울 수 있습니다. 따라서 규칙으로 받아들여야 합니다. 변수를 생성하고 즉시 초기화해야 합니다.
 
Vladimir Karputov :
변수를 초기화하지 않는 습관은 종종 검은 백조로 이어지기 때문에 해로울 수 있습니다. 따라서 규칙으로 받아들여야 합니다. 변수를 생성하고 즉시 초기화해야 합니다.
그만, 그만, 그만. "규칙으로 취하는 것"과 " OnInit()에서 이러한 변수에 명시적으로 초기화( 값 할당 )가 필요함"을 혼동하지 맙시다. 이는 명백한 거짓말입니다!
 
Alexey Kozitsyn :
그만, 그만, 그만. "규칙으로 취하는 것"과 " OnInit()에서 이러한 변수에 명시적으로 초기화( 값 할당 )가 필요함"을 혼동하지 맙시다. 이는 명백한 거짓말입니다!
당신은 변수를 초기화할 수 없습니다 - 당신의 돈.
 
Vladimir Karputov :
당신은 변수를 초기화할 수 없습니다 - 당신의 돈.
다시 한 번 반복하겠습니다. 기회와 책임을 혼동하지 마십시오!
 

블라디미르가 부분적으로 옳습니다.

예를 들어,

언젠가, 나는 언제, 내가 변수를 선언했는지 기억나지 않는다

부울 STOP;

실제로 OnTick 에서 해결했습니다.

기본적으로 boolfalse 여야 합니다.

나는 이것을 좋아했다:

void OnTick ()

{

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

}

하지만 이 코드는 작동하지 않았습니다 . bool STOP=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()에서 초기화될 때 시간 프레임을 전환할 때 변수 값을 잃을 수 있습니다. 따라서 프로그램 논리에 방해가 될 수 있습니다.

고려하지 않는 경우:

초기화

클라이언트 터미널이 프로그램(EA 또는 사용자 지정 표시기)을 로드하고 전역 변수 초기화 프로세스를 시작한 직후 Init 이벤트가 전송되고 OnInit() 함수가 존재하는 경우 이를 처리합니다. 이 이벤트는 또한 금융 상품 및/또는 차트 기간을 변경한 후, MetaEditor에서 프로그램을 다시 컴파일한 후, Expert Advisor 또는 사용자 지정 지표 설정 창에서 입력 매개변수를 변경한 후 생성됩니다. EA는 계정 변경 후에도 초기화됩니다 . 스크립트의 경우 Init 이벤트가 발생하지 않습니다.

그러면 무엇이든 돌릴 수 있습니다.

 
Vladimir Karputov :

고려하지 않는 경우:

초기화

클라이언트 터미널이 프로그램(EA 또는 사용자 지정 표시기)을 로드하고 전역 변수 초기화 프로세스를 시작한 직후 Init 이벤트가 전송되고 OnInit() 함수가 존재하는 경우 이를 처리합니다. 이 이벤트는 또한 금융 상품 및/또는 차트 기간을 변경한 후, MetaEditor에서 프로그램을 다시 컴파일한 후, Expert Advisor 또는 사용자 지정 지표 설정 창에서 입력 매개변수를 변경한 후 생성됩니다. EA는 계정 변경 후에도 초기화됩니다 . 스크립트의 경우 Init 이벤트가 발생하지 않습니다.

그러면 무엇이든 돌릴 수 있습니다.

나는 Foma에 대해 이야기하고 그는 Yeryoma에 대해 이야기하고 있습니다 ...

그렇다면 그러한 상황에서 어떻게 의사 소통을합니까?

나는 OnInit()에서 무심코 전역 변수를 초기화하는 나쁜 습관 에 대해 이야기하고 있지만, 당신은 나에게 내가 알고 있는 도움을 줍니다.

동시에 강박적인 형태로 모든 초보자에게 중독을 부과합니다. USE 세대를 키우고 있습니까? 생각하지 않고 맹목적으로 선생을 따르는 자들의 클론?