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

 

질문의 계속:

이러한 조건에 대한 알고리즘은 다음과 같이 구현됩니다. 필터 자체는 다음과 같습니다.

 //================фильтр   - начало схождения ===================
 if (FILTER_ ) { //если выключатель   фильтра включен
//------------------------------------------------ 
//задаем вычисление ценовых линий на втором   баре
double   MA_11= ( iMA (Symbol_1, Period (),per2, 0 ,ma_method,Price, 2 )-
                 iMA (Symbol_1, Period (),per1, 0 ,ma_method,Price, 2 )) ;  
double   MA_21= ( iMA (Symbol_2, Period (),per2, 0 ,ma_method,Price, 2 )-
                 iMA (Symbol_2, Period (),per1, 0 ,ma_method,Price, 2 ))  ;    
double ДЕЛЬТА_MA_2 = MathAbs (MA_11 - MA_21); //разность между ценовыми линиями на 2 баре
//
if (ДЕЛЬТА_MA_2 >=  ДЕЛЬТА_MA) // если линии начинают сходится, разрешаем вход
       Trade_Filter2= true ;       else Trade_Filter2= false ; 
//-------------------------------------------------                 
         }   // выключатель   фильтра включен
//================== конец блока 2-го фильтра ======================

그리고 입장 조건은 다음과 같습니다.

 if   ( TradeDOWN== true   && .... ) {             //если условия соответствуют заданным 
if (Trade_Filter2== true || ! FILTER_ ) {       //  фильтр включен/выключен  
 ..... открвываем позиции: продаем первый инструмент и покупаем второй    

하지만 고문은 필터 조건을 보지 않는 것 같습니다! 그는 이전과 같이 주의를 기울이지 않고 위치를 엽니다.

if (Trade_Filter2== true || ! FILTER_ ) { .....

왜 그런지 이해가 안됩니다. 온라인 포지션 개설을 반복적으로 추적했습니다. 하지만 필터가 작동하지 않습니다! 고문은 그것을 볼 수 없습니다 ... 말해주세요, 여기에 부정확성이 어디 있습니까?

그리고 또 다른 질문. 전역 변수 를 설정하는 올바른 방법은 무엇입니까(이제 첫 번째 옵션이 있음), -

부울 Trade_Filter2=0 ; 또는 bool Trade_Filter2 ;

 
Rita :

질문의 계속:

...

Comment()에서 MA_11, MA_21, DELTA_MA_2를 인쇄하고 거기에 무엇이 있는지 확인하십시오. 더블 DELTA_MA_2 뒤에 Comment() 삽입...

MACD는 두 개의 다른 기호에서 비교되며 매우 다른 차원을 가질 수 있습니다.

 

댓글이 있습니다. 주석에는 다음과 같이 "필터가 진입을 허용(또는 금지)합니다")라는 문구가 포함되어 있습니다.

다음과 같이 수행됩니다.

string on_off=StringConcatenate  (on_off,
"1-й(текущий)инстр.=",Symbol_1," 2-й инстр.=",Symbol_2," ",.....
"ДельтаТекущая/ДельтаЗаданная = ", ДЕЛЬТА_MA," / ",ДЕЛЬТА, "\n", 
 "MA_1 ",Symbol_1, "= ", MA_1 , "\n",
 "MA_2 ",Symbol_2, "= ", MA_2 , "\n",

 //--------------------------------------------------------------------------------

if (Trade_Filter2==true && FILTER_==true )  
        string  on_off4 = StringConcatenate (on_off4, "Фильтр Разрешает вход", "\n");
if (Trade_Filter2==false && FILTER_==true )  
        string  on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход", "\n");
if (FILTER_==false   )  
        string  on_off42 = StringConcatenate (on_off42, "Фильтр Отключен", "\
나는 시각적으로 라인이 여전히 갈라지고 주석에 "필터가 입력을 금지합니다"라고 표시하는 것을 관찰했습니다! 그러나 입력은 여전히 구현되어 있습니다. 어드바이저는 필터에 주의를 기울이지 않습니다.

계측기의 치수는 동일하거나(다른 치수 사용) - 계수를 사용하여 프로그래밍 방식으로 동일하게 축소합니다(이는 어수선하지 않도록 위의 코드에 표시되지 않음). 이것으로 - 주문!

 

그러나 double DELTA_MA_2, MA_11, MA_21은 함수와 Comment() 아래에 선언되어 있습니다.

그러나 Trade_Filter2전역 변수 에 선언되어 있습니다! 그래서, 제 생각에는 모든 것이 여기 논평에서 올바르게 수행되었다고 생각합니다!

 
댓글을 잠시 끄고 다른 위치에서 표시해 보세요. 필터 조건이 확인되는 곳에서 사용되는 곳까지. 따라서 왜곡이 발생하는 라인을 찾을 수 있습니다.
 
좋아, 고마워, 드미트리! 주말 후에 제안을 시도해 보겠습니다.
 
Print에서 모든 매개변수의 값을 인쇄 하고 주문 개시 연산자 바로 뒤에 넣으십시오.
 

안녕하세요. 오늘 MT4 업데이트 이후에는 EA 코드가 컴파일되지 않습니다. 컴파일러에서 이해할 수 없는 30개의 오류가 생성됩니다.

말해 주세요. 왜 그런 줄에 갑자기 오류가 나타나는지
암호:

 if (Trade_Filter2== true && FILTER_== true )  
         string   on_off4 = StringConcatenate ( on_off4, "Фильтр Разрешает вход" , "\n" );
if (Trade_Filter2== false && FILTER_== true )  
         string   on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход" , "\n" );
if (FILTER_== false    )  
         string   on_off42 = StringConcatenate (on_off42, "Фильтр Отключен" , "\n" );       
'on_off' - 선언되지 않은 식별자 Exp_ARBITR_2Line_Spread_002Mod.mq4 125 35

'on_off4' - 선언되지 않은 식별자 Exp_ARBITR_2Line_Spread_002Mod.mq4 140 47

'on_off41' - 선언되지 않은 식별자 Exp_ARBITR_2Line_Spread_002Mod.mq4 142 47

그리고 어떻게 고칠까요?

 
if (Trade_Filter2== true && FILTER_== true )  
 {
   string on_off4;
  on_off4 = StringConcatenate ( on_off4, "Фильтр Разрешает вход" , "\n" );
 }
if (Trade_Filter2== false && FILTER_== true )  
 {
   string on_off41;
  on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход" , "\n" );
 }
if (FILTER_== false )  
 {
   string on_off42;
  on_off42 = StringConcatenate (on_off42, "Фильтр Отключен" , "\n" );
 }

그렇게 컴파일이 되나요?

그러나 다음과 같이 더 좋습니다.

 string on_off4;
string on_off41;
string on_off42;
if (Trade_Filter2 == true && FILTER_ == true ) on_off4 = "Фильтр Разрешает вход\n" ;
if (Trade_Filter2 == false && FILTER_ == true ) on_off41 = "фильтр Запрещает вход\n" ;
if (FILTER_ == false ) on_off42 = "Фильтр Отключен\n" ;
 
string on_off4, on_off41, on_off42;
if (Trade_Filter2== true && FILTER_== true )  
        on_off4 = StringConcatenate ( on_off4, "Фильтр Разрешает вход" , "\n" );
if (Trade_Filter2== false && FILTER_== true )  
        on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход" , "\n" );
if (FILTER_== false    )  
        on_off42 = StringConcatenate (on_off42, "Фильтр Отключен" , "\n" );       

내가 올바르게 텔레파시했다면 이것은 작동할 것입니다.