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

 
frank2020 :

나는 프로그래밍에 익숙하지 않고 잘하지 않습니다. 다운로드를 위해 리메이크하고 업로드 할 수 있습니까???

스윙이다
 
MakarFX :
스윙이다
답변 감사합니다. 다운로드한 항목은 변경되지 않았습니다. 채널이 짧은 부분이 아닌 전체 차트 기록에 포함되기를 원했습니다 ????
 
frank2020 :
답변 감사합니다. 다운로드한 항목은 변경되지 않았습니다. 채널이 짧은 부분이 아닌 전체 차트 기록에 포함되기를 원했습니다 ????
나는 MQL5를 이해하지 못한다
 
Igor Makanu :

생각나면 OnChartEvent(), IMHO에서 사용자 정의 이벤트 를 던지는 것이 더 편리합니다.

이것이 터미널 내의 모든 차트 사이의 이벤트입니다.

 
Ctrl+N
 

여보세요. 두 MA가 교차한 후 Accelerator Oscillator 밴드 계산을 코드로 작성하는 방법을 알 수 없습니다. 두 번째 밴드를 닫은 후(MA를 통과한 후) 세 번째 밴드에 수직선을 둡니다. 아마도 당신이 설명서를 벼락치기 위해 저를 보낼 것이라는 것을 이해합니다. 하지만 해결책을 제시해 주시겠습니까? 도움을 주시면 감사하겠습니다.

 void OnTick ()
  {
       //обновлять данные всех индикаторов раз в период
   if (Update_Time != iTime ( NULL , 0 , 0 ))
     {
      Update_Time = iTime ( NULL , 0 , 0 ); //перезаписываем значение переменной для хранения времени текущей свечи

       //импорт данных индикатора Moving Averages.
       double FastMA_1 = iMA ( NULL , 0 ,FastMA, 0 ,FastMA_method, PRICE_CLOSE , 1 );
       double FastMA_2 = iMA ( NULL , 0 ,FastMA, 0 ,FastMA_method, PRICE_CLOSE , 2 );
       double SlowMA_1 = iMA ( NULL , 0 ,SlowMA, 0 ,SlowMA_method, PRICE_CLOSE , 1 );
       double SlowMA_2 = iMA ( NULL , 0 ,SlowMA, 0 ,SlowMA_method, PRICE_CLOSE , 2 );
       double    ac     = iAC ( NULL , 0 , 1 );
      
         //---FastMA_1 выше SlowMA_1, т.е. произошло пересечение снизу вверх
                 
       if (FastMA_1 > SlowMA_1 && FastMA_2 <= SlowMA_2)
        {

//---Не пойму как сделать подсчет полос в iAC после пересечения МА...         
         if ((ac[ 2 ]> 0.0 ) && (ac[ 1 ]>ac[ 2 ]))
           {
             VLineCreate( 0 , "VLine" , 0 , 0 , clrRed , STYLE_SOLID , 1 , false , true , true , 0 ); 
           }
        }
     }
  }

시각적 표현을 위해 그래프의 스크린샷 첨부:

파일:
 
DYM :

여보세요. 두 MA가 교차한 후 Accelerator Oscillator 밴드 계산을 코드로 작성하는 방법을 알 수 없습니다. 두 번째 밴드를 닫은 후(MA를 통과한 후) 세 번째 밴드에 수직선을 둡니다. 아마도 당신이 설명서를 벼락치기 위해 저를 보낼 것이라는 것을 이해합니다. 하지만 해결책을 제시해 주시겠습니까? 도움을 주시면 감사하겠습니다.

시각적 표현을 위해 그래프의 스크린샷 첨부:

 double    ac1     = iAC ( NULL , 0 , 1 );

double    ac2     = iAC ( NULL , 0 , 2 );
 
DYM :

여보세요. 두 MA가 교차한 후 Accelerator Oscillator 밴드 계산을 코드로 작성하는 방법을 알 수 없습니다. 두 번째 밴드를 닫은 후(MA를 통과한 후) 세 번째 밴드에 수직선을 둡니다. 아마 당신이 설명서를 벼락치기 위해 저를 보낼 것이라는 것을 이해합니다. 하지만 해결책을 제시해 주시겠습니까? 도움을 주시면 감사하겠습니다.

시각적 표현을 위해 그래프의 스크린샷 첨부:

MA의 교차점을 1, 2 막대가 아니라 3, 4 막대에서 확인하십시오. 교차점이 있으면 1 막대와 2 막대에서 AO 값을 확인하십시오.

 

매우 감사합니다. 어려움이 있었지만 어느 정도 해결했습니다. 다음은 일어난 일입니다.

 void OnTick ()
  {


       //импорт данных индикатора Moving Averages.
       double FastMA_1 = iMA ( NULL , 0 ,FastMA, 0 , 0 , PRICE_CLOSE , 1 );
       double FastMA_2 = iMA ( NULL , 0 ,FastMA, 0 , 0 , PRICE_CLOSE , 2 );
       double SlowMA_1 = iMA ( NULL , 0 ,SlowMA, 0 , 0 , PRICE_CLOSE , 1 );
       double SlowMA_2 = iMA ( NULL , 0 ,SlowMA, 0 , 0 , PRICE_CLOSE , 2 );
       double    ac     = iAC ( NULL , 0 , 0 );
       double    ac1     = iAC ( NULL , 0 , 1 );
       double    ac2     = iAC ( NULL , 0 , 2 );
      
      
      
         //---Быстрая скользящая средняя (меньше периода) на первой свече выше медленной, т.е. произошло пересечение снизу вверх
       if (FastMA_1 > SlowMA_1 && FastMA_2 <= SlowMA_2)
        {
         
         if ((ac> 0.0 ) && (ac>ac1) && (ac1>ac2))
           {
             VLineCreate( 0 , "VLine" , 0 , 0 , clrLimeGreen , STYLE_SOLID , 1 , false , true , true , 0 );
           }
        }
        
         //---Быстрая скользящая средняя (меньше периода) на первой свече ниже медленной, т.е. произошло пересечение cверху вниз
       if (FastMA_1 < SlowMA_1 && FastMA_2 >= SlowMA_2)
        {
         
         if ((ac< 0.0 ) && (ac<ac1) && (ac1<ac2))
           {
             VLineCreate( 0 , "VLine" , 0 , 0 , clrOrangeRed , STYLE_SOLID , 1 , false , true , true , 0 );
           }
        }
  }

스크린샷을 만들었습니다:

파일:
 
DYM :

매우 감사합니다. 어려움이 있었지만 어느 정도 해결했습니다. 다음은 일어난 일입니다.

스크린샷을 만들었습니다:

오류 4200 을 기다립니다.