MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1328

 
Alexey Viktorov :

질문은 MT5에 관한 것 같습니다. 답변: 소프트웨어가 없습니다. 질문을 닫을 수 있습니다.

감사해요

 

좋은 오후에요 여러분! 약속한대로 새 명령어 J ;-) 물론, Grail 머신을 시작했지만 테스트가 매우 느리게 L 되었기 때문에 새 막대가 발생할 때만 틱 내부의 코드를 실행하는 방법에 대한 옵션을 찾기 시작했습니다. . 이 옵션을 찾았습니다. 변수는 전역 수준에서 정의됩니다.

int intBars; // ГЛОБАЛЬНО ОПРЕДЕЛЁННАЯ ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ НАСТУПЛЕНИЯ

그런 다음 새 막대가 도착했는지 확인하는 기능을 작성했습니다. 이 걸작


 bool f_IsNewBar()
{
   if (intBars != Bars ) 
   {
      intBars = Bars ;
       return ( true );
   } 
return ( false );
}

내가 이 옵션을 찾은 곳에서 그들은 틱에서 모든 논리를 단순히 채우는 함수를 추가로 생성한다고 씁니다. 솔직히 말해서, 나는 함수가 있는 이 접근 방식이 전혀 마음에 들지 않기 때문에 새로운 막대가 나타나는 조건을 확인하고 그것이 사실이면 그들은 틱에 코드를 실행하기 위해 날아갔습니다. 모든 실제 비즈니스가없는 단순화 된 형태로이 비즈니스는 다음과 같습니다.

 void OnTick ()
{ //НАЧАЛО ОН ТИК
   // если появился новый бар:
   if (f_IsNewBar()) // ЕСЛИ ПОЯВИЛСЯ НОВЫЙ БАР
    { // ВЫПОЛНЯЕМ ВЕСЬ КОД В ОН ТИК
/*
МНОГО МНОГО СЕКРЕТНОГО ГРААЛЬНОГО КОДА😃😃😃
*/

    }
} // КОНЕЦ ОН ТИК

다른 질문이 있습니다. Grail은 확실히 실생활에서 작동할 것입니다. 따라서 테스터에서 쫓기는 것이 아니라 실제 생활에서 날아갈 성배 버전에서는 어드바이저가 모든 틱 에서 작동하도록 이 검사를 제거해야 합니다. 진짜? 이 수표가 실제 버전이면 처음에 열지 않은 경우 두 번째 주문을 열려면 어떻게 해야 합니까?

 
DanilaMactep :

좋은 오후에요 여러분! 약속한대로 새 명령어 J ;-) 물론, Grail 머신을 시작했지만 테스트가 매우 느리게 L 되었기 때문에 새 막대가 발생할 때만 틱 내부의 코드를 실행하는 방법에 대한 옵션을 찾기 시작했습니다. . 이 옵션을 찾았습니다. 변수는 전역 수준에서 정의됩니다.

그런 다음 새 막대가 도착했는지 확인하는 기능을 작성했습니다. 이 걸작


이 옵션을 찾은 곳에서 그들은 우리가 단순히 모든 로직을 틱에서 밀어 넣는 기능을 추가로 생성한다고 썼습니다. 솔직히 말해서, 나는 함수가 있는 이 접근 방식이 전혀 마음에 들지 않기 때문에 새로운 막대가 나타나는 조건을 확인하고 그것이 사실이면 그들은 틱에 코드를 실행하기 위해 날아갔습니다. 모든 실제 비즈니스가없는 단순화 된 형태로이 비즈니스는 다음과 같습니다.

다른 질문이 있습니다. Grail은 확실히 실생활에서 작동할 것입니다. 따라서 테스터에서 쫓기는 것이 아니라 실제 생활에서 날아갈 성배 버전에서는 어드바이저가 모든 틱 에서 작동하도록 이 검사를 제거해야 합니다. 진짜? 이 수표가 실제 버전이면 처음에 열지 않은 경우 두 번째 주문을 열려면 어떻게 해야 합니까?

시가, 고가, 저가, 종가의 막대 값에 대해 계산을 수행하면 각 틱을 계산할 필요가 없습니다. 그러나 모든 눈금의 가격을 따르는 것이 옳습니다. 이는 별도의 계산 또는 조건 확인이어야 합니다.

새 막대는 여전히 0 막대의 시작 시간으로 추적됩니다.

FlagNewBar= false ;   // глобальная или статик булева переменная
   if (BarTime!=Time[ 0 ])
     {
      BarTime=Time[ 0 ];
      FlagNewBar= true ;
     }
 
Artyom Trishkin :

이 스레드에서 저는 새로운 MQL4에서 프로그래밍을 정말로 이해하고 배우고 싶어하고 MQL5로 쉽게 전환하고자 하는 사람들을 돕기 시작하고 싶습니다. 언어는 매우 유사합니다.

여기에서 작업, 이를 해결하기 위한 알고리즘, 그리고 어떤 방식으로든 MT용 프로그래밍과 관련된 모든 질문에 대해 논의할 수 있습니다.

포럼의 다른 경험 많은 회원이 문제 해결에 참여하고 스레드가 모든 사람의 관심을 끌 수 있기를 바랍니다.

MQL4 태스크: 문자열에서 대문자의 위치 번호를 판별하십시오. 고맙습니다.

 
Mikhail Nazarenko :

MQL4 태스크: 문자열에서 대문자의 위치 번호를 판별하십시오. 고맙습니다.

 string str= "preved mEdved" ;
string uppercase= "ABCDEF.....ZАБВГД....Я" ;

int finish= StringLen (str)- 1 ;
int pos=- 1 ;
for ( int i= 0 ; i<=finish; i++)
   {
   pos= StringFind (uppercase, StringSubstr (str,i, 1 ));
   if (pos>= 0 ) break ;
   }
printf (pos);
 
Aleksei Stepanenko :

고맙습니다.

 
Mikhail Nazarenko :

고맙습니다.

실수를 했습니다. StringFind 의 결과는 필요하지 않지만 i.

그래서:

 string str= "preved mEdved" ;
string uppercase= "ABCDEF.....ZАБВГД....Я" ;

int finish= StringLen (str)- 1 ;
int pos=- 1 ;
for ( int i= 0 ; i<=finish; i++)
   {
   if ( StringFind (uppercase, StringSubstr (str,i, 1 ))>= 0 )
      {
      pos=i;
       break ;
      }
   }
printf (pos);
 
Mikhail Nazarenko :

MQL4 태스크: 문자열에서 대문자의 위치 번호를 판별하십시오. 고맙습니다.

StringGetCharacter()를 사용할 수 있습니다. 문자 "A"는 65이고 "a"는 32 - 97입니다. 모든 문자도 마찬가지입니다. 따라서 문자 코드가 > 90 및 <= 122이면 올바른 대소문자의 라틴 문자입니다. 키릴 문자도 32만큼 다릅니다.

 
Alexey Viktorov :

할 수 있다

바로, 좋은 선택입니다.

 
안녕하세요 여기 리더 점수는 어떻게 만드나요?