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

 
Marat Sultanov :
이해할 수 없는 코드 부분이 있습니다. 직접 수정해야 합니다.


무엇을 보여줄 수 있습니까?

 
Rafael Sahibgareev :


무엇을 보여줄 수 있습니까?


코드 다운로드 - Marat Sultano 가 거기에 썼지만 명확하지 않습니다.
 

Marat, 코드에 도움을 주셔서 감사합니다 ......

또 다른 질문, 이러한 코드 조각에 대한 루프를 올바르게 구성하는 방법을 보여주세요 ......

 //--- цикл расчета 
      
        {
        
         //--- если предыдущая свеча имеет параметры больше MSC
         if (IsLossCandle)
             if (ASSHighBuf[i- 1 ]>=max_size_candel)
               BufferLossCanle[i]=low[i- 1 ];
                 {
                   if (IsTopShadow)
                     if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ]) && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 ))
                        BufferTop[i]=low[i- 1 ];
                   if (IsLowerShadow)
                     if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ]) && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 ))
                        BufferLower[i]=high[i- 1 ];
                 }
        }


//--- return value of prev_calculated for next call 
   return (rates_total);
  }
 
Rafael Sahibgareev :

Marat, 코드에 도움을 주셔서 감사합니다 ......

또 다른 질문, 이러한 코드 조각에 대한 루프를 올바르게 구성하는 방법을 보여주세요 ......

이 같은:

 //--- цикл расчета
   const int Limit = fmax (prev_calculated, 1 );

   for ( int i=Limit; i<rates_total; ++i)
   {
       //--- если предыдущая свеча имеет параметры больше MSC
       if (IsLossCandle)
      {
         if (ASSHighBuf[i- 1 ]>=max_size_candel) BufferLossCanle[i]=low[i- 1 ];

         if (IsTopShadow)
         {
             if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ] && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 ) || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]> 0 ))
            {
               BufferTop[i]=low[i- 1 ];
            }
         }

         if (IsLowerShadow)
         {
             if ((ASSOpenBuf[i- 1 ]==ASSCloseBuf[i- 1 ] && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 ) || (ASSLowBuf[i- 1 ]== 0 && IMaDifBuff[i]-IMaDifBuff[i- 1 ]< 0 ))
            {
               BufferLower[i]=high[i- 1 ];
            }
         }
      }
   }

//--- return value of prev_calculated for next call 
   return (rates_total);
}

코드의 일부만이 나를 혼란스럽게 했습니다.

 if (ASSHighBuf[i- 1 ]>=max_size_candel)
   BufferLossCanle[i]=low[i- 1 ];
     {

중괄호가 왜 거기에 있습니까? 실행하지 않은 계획이 있었나요? (나는 else 조건문을 암시하고 있다)

 

Marat, 다시 한 번 무한한 감사, 그렇지 않으면 22 년 전에 학교에서 마지막으로 코드를 작성했습니다.

여기, else 문을 대가로 다음 4개 문에 대한 인터럽터처럼 어디에 붙일지 멍하니 앉아있었다.....

스스로 알아서 할 것 같아요....

Marat, 나에게 말하거나 링크를 찌르십시오. "주기"를 사용하지 않고 그러한 계산을 구성 할 수 있습니까? .....

 
Rafael Sahibgareev :

Marat, 다시 한 번 무한한 감사, 그렇지 않으면 22 년 전에 학교에서 마지막으로 코드를 작성했습니다.

여기, else 문을 대가로 다음 4개 문에 대한 인터럽터처럼 어디에 붙일지 멍하니 앉아있었다.....

스스로 알아서 할 것 같아요....

Marat, 나에게 말하거나 링크를 찌르십시오. "주기"를 사용하지 않고 그러한 계산을 구성 할 수 있습니까? .....

실례합니다. 귀하의 목표를 알 수 있습니까? 논의된 코드 조각에서 어떤 결과를 얻고 싶습니까? 당신의 의도를 이해하면 훨씬 더 쉽게 당신을 도울 것입니다 :)
 

호기심에 싸이클을 물어봤더니...... 이게 가능한가요.......

그 자체로 교활하지 않고 첫 번째 연산자 "만약"이 금지가 작동하면 방향 분류 연산자가 작동하지 않습니다 .......

또한 앞으로는 코드를 변경하여 제로바에서 작업하여 똑딱이로 만들고,

스프레드가 추가 없이 .... 표시기를 넘어갈 때 바로 이 금지 분류기가 해당 눈금에 나타나도록 합니다. 스캘핑 클러스터링 필터....

그리고 일반적으로 내가 이해하는 것처럼 모든 패턴은 진드기에 살고 있습니다 ......

 

막대를 통과하려면 사이클이 필요합니다. 마지막 1개 또는 2개 막대에 대한 판독값만 필요하면 루프 없이도 수행할 수 있지만 12개 이상의 막대에 대해 계산을 수행해야 하는 경우 루프를 사용하는 것이 더 합리적이겠죠?

주기를 거부하면 중국어 코드에 자신을 파멸시킵니다 :)

 

Raphael, 나는 당신이 이 순서로 읽을 것을 권합니다:

  1. 조건부 if-else 문
  2. for 루프 문
  3. while 루프 문
  4. 계속 문
  5. break 문

글쎄, 당신이 도취되면 다음을 탐구하십시오.

  1. 연산자
  2. 언어 기초
실무에 적용되는 빈도에 따라 나누어 봤습니다. 복잡하지 않고 본질을 이해하기에 충분합니다.


 

조언과 추천 감사합니다. 오늘은 너무 늦었고 내일도 네, 도움말과 기사를 공부하겠습니다....

지표에서 저는 open[0]을 포함하여 마지막 세 개의 막대에만 관심이 있었습니다........

나중에 15-20 조각이 더 필요할 것입니다 ..... 여기에서 사이클 없이는 할 수 없습니다 .....

도움과 지원에 다시 한 번 감사드립니다.....