MQL 전문가를 위한 질문 - 페이지 13

 

루프의 코드가 작동하지 않는 이유는 무엇입니까?

동안(! IsStopped() )

{

코드

수면(50);

}

그리고 진드기에 잘 작동합니다

 
seka-s79 :

루프의 코드가 작동하지 않는 이유는 무엇입니까?

닭이 길을 건너지 않는 이유
 

하지만! 이해했다! 감사해요!!!

 

Symbol() MT4 문제:

설명할 2가지 기능:

 string    SymbolOK()
{

   string    value ;
   string    argument = "ANYTHING" ;

   if ( false )
   {
       value = argument;
   }

   return ( value );

}

string    SymbolPROBLEM()
{

   string    value ;
   string    argument = Symbol();

   if ( false )
   {
       value = argument;
   }

   return ( value );

}

첫 번째를 실행하면 빈 문자열이 출력됩니다.

 int start()
{
   Comment (SymbolOK());
   return ( 0 );
}

다음은 두 번째 함수 문자열 식별자 "EURUSD"입니다(차트에 따라 다르지만 출력은 함수 논리에 따라 빈 문자열이 있어야 함).

 int start()
{
   Comment (SymbolPROBLEM());
   return ( 0 );
}

무엇이 잘못되었는지 이해하는 데 도움이 되셨나요? 감사해요

 
anton.veksler :

Symbol() MT4 관련 문제:

설명할 2가지 기능:

첫 번째를 실행하면 빈 문자열이 출력됩니다.

다음은 두 번째 함수 문자열 식별자 "EURUSD"입니다(차트에 따라 다르지만 출력은 함수 논리에 따라 빈 문자열이 있어야 함).

무엇이 잘못되었는지 이해하도록 도와주시겠습니까? 감사해요

if(false)는 절대 작동하지 않으므로 value 값은 어떤 식으로든 변경되지 않으며 빈 문자열과 같을 가능성이 큽니다. 문자열 변수의 값이 어떻게 초기화되는지 모르지만. 아마도 그들은 전혀 초기화되지 않았을 것입니다. 그런 다음 귀하의 버전에서 무엇이든 출력할 수 있습니다.
 
Sepulca :
if(false)는 절대 작동하지 않으므로 value 값은 어떤 식으로든 변경되지 않으며 빈 문자열과 같을 가능성이 큽니다. 문자열 변수의 값이 어떻게 초기화되는지 모르지만. 아마도 그들은 전혀 초기화되지 않았을 것입니다. 그런 다음 귀하의 버전에서 무엇이든 출력할 수 있습니다.

"...초기 값이 명시적으로 주어지지 않으면 숫자 변수는 영(0)으로 초기화되고 문자열 유형 변수는 빈 문자열로 초기화됩니다...."
 
zoritch :
"...초기 값이 명시적으로 주어지지 않으면 숫자 변수는 영(0)으로 초기화되고 문자열 유형 변수는 빈 문자열로 초기화됩니다...."



글쎄, 당신은 심지어 문서에서 그것을 찾았습니다 ... 그러나 일반적으로 말하면, d ... 그러나 질문입니다. 귀찮게하지 않으려면 대신 채우는 것이 그리 어렵지 않습니다.

 string    value;

이 같은:

 string    value= "ЭтоСтрокаПокаЕёЕщёНиктоНеТрогал" ;
 
Sepulca :



글쎄, 당신은 문서에서도 그것을 찾았습니다 ... 그러나 일반적으로 말하면, d ... 그러나 질문입니다. 귀찮게하지 않기 위해 대신 채우는 것은 그리 어렵지 않습니다.

이 같은:


대답 해줘서 고마워. 명시적 초기화가 없으면 문자열 변수가 빈 문자열이 될 것이라는 문서에 대해 알고 있습니다. 하지만 이 함수는 도구의 기호 코드를 반환합니다. 저것들. 이 변형에서 값이 Symbol()이 되는 방법(이 함수의 예는 과장됨), 즉 문자열 변수가 빈 문자열이 아닌 암시적 초기화로 얻어지기 때문에 우리는 조건(의도적으로 거짓)에 빠지지 않을 것입니다. 나는 정말로 이것을 믿었습니다), 그러나 무엇 - 이해할 수없는 것, 더 정확하게는 암시 적 문자열 초기화 메커니즘이 이해할 수 없습니다. 변수 선언 을 "채우는" 것은 어렵지 않습니다. 단지 시스템의 동작이 문서와 일치하지 않아 어떻게든 무너뜨릴 뿐입니다. 그리고 가장 중요한 것은 인수가 Symbol()일 때 발생합니다.


 string    SymbolPROBLEM()
{

   string    value ;
   string    argument = Symbol();

   if ( false )
   {
       value = argument;
   }

   return ( value );

}
 

모두에게 좋은 하루!

중재 고문이 작성했습니다. DELTA_MA 표시기 가격 라인의 현재 다이버전스가 매개변수에 지정된 DELTA 값을 초과하는 경우 진입 신호가 생성됩니다.

 //жжжжжжжжжжжжжжжжжжжжжжж Ищем возможность войти в рынок жжжжжжжжжжжжжжжжжжжжжжжж
// Задаем ценовые линии МА на 1-м баре
  MA_1=   ( iMA (Symbol_1, Period (),per2, 0 ,ma_method,Price, 1 )-
           iMA (Symbol_1, Period (),per1, 0 ,ma_method,Price, 1 )) ;  
  MA_2= ( iMA (Symbol_2, Period (),per2, 0 ,ma_method,Price, 1 )-
         iMA (Symbol_2, Period (),per1, 0 ,ma_method,Price, 1 ))   ;                 
 ДЕЛЬТА_MA  =   MathAbs (MA_1 - MA_2 ) ; //- разность ценовых линий на 1 баре        
//------------------------------------------------ 

if (ДЕЛЬТА_MA > ДЕЛЬТА && MA_1 > MA_2) //если линии разошлись больше заданного значения
       //(первыя выше второй), то продаем 1-й инструмент и покупаем/продаем второй 
      TradeDOWN= true ;       else TradeDOWN= false ;

고문은 정상적이고 올바르게 작동합니다! 첫 번째 조건이 충족되는 경우 가격 라인이 동시에 수렴하는 경우에만 입력을 허용하는 필터를 삽입하기로 결정했을 때 문제가 시작되었습니다.

 extern double        ДЕЛЬТА = 350 ;

extern string   ____F____  = "=== FILTER ===" ;
 extern bool      FILTER_= true ; //Арбитр. вход реализуется только при схождении линий
이러한 조건에 대한 알고리즘은 다음과 같이 구현됩니다.