오류, 버그, 질문 - 페이지 276

 
Yedelkin :
MQL5 참조 / 기술 지표 / iCustom 보기

귀하의 신속함에 대단히 감사합니다)

 

이 주제에. 거의 잡았는데 ADVISOR가 터미널 로그 쓰기에서 시작되지 않습니다


제거됨

성공적으로 로드


벌었다!!
 

여기에 오류가 있습니다

   v161_handle= iCustom ( NULL , 0 , "ErolМТ5" );                            
   v162_handle= iCustom ( NULL , 0 , "ErolМТ5" );
   Sum_handle= iCustom ( NULL , 0 , "ErolМТ5" );
이 경우 세 변수 모두 동일한 핸들을 갖습니다. 동일한 표시기를 세 번 호출하기 때문입니다.
 
sergey1294 :

여기에 오류가 있습니다

이 경우 세 변수 모두 동일한 핸들을 갖습니다. 동일한 표시기를 세 번 호출하기 때문입니다.

네, 하지만 제가 알기 로는 지표 라인 의 인덱스 값(3 라인의 값)

우리는 다음을 통해 얻습니다:

 CopyBuffer (v161_handle, 1 , 0 , 3 ,Spr1Buffer)
CopyBuffer (v162_handle, 2 , 0 , 3 ,Spr2Buffer)
CopyBuffer (Sum_handle, 4 , 0 , 3 ,SumBuffer)

여기서 1, 2 및 4는 버퍼에 저장된 표시줄 인덱스의 값이며,

그런 다음 서로 비교합니다.

그러나 그것은 중요하지 않습니다. 나를 위해 표시 라인의 이러한 인덱스를 사용하여 올바르게 계산하지 않습니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 

어디로 가야하는지 또는 여기서 무엇을해야하는지 알려주십시오.


 void OnTick ()
{  
   ArraySetAsSeries (Spr1Buffer, true );
   ArraySetAsSeries (Spr2Buffer, true );
   ArraySetAsSeries (SumBuffer, true );

   if ( CopyBuffer (v161_handle, 1 , 0 , 3 ,Spr1Buffer)< 0 || CopyBuffer (v162_handle, 2 , 0 , 3 ,Spr2Buffer)< 0 || CopyBuffer (Sum_handle, 4 , 0 , 3 ,SumBuffer)< 0 )
      {
       Alert ( "Ошибка копирования буферов индикатора номер ошибки:" , GetLastError ());
      }
   bool SellSpr1 =(Spr1Buffer[ 1 ] > Spr2Buffer[ 1 ]);
   bool SellSum1 =(SumBuffer[ 1 ]>=Sp);
   if (SellSpr1 && SellSum1 && ! PositionSelect (_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =(Spr1Buffer[ 1 ] < Spr2Buffer[ 1 ]);
   bool BuySum1 =(SumBuffer[ 1 ]>=Sp);
   if (BuySpr1 && BuySum1 && ! PositionSelect (_Symbol))     
      {
        PositionOpenBuy1();
      }
 
alexluek :

네, 하지만 제가 알기 로는 지표 라인 의 인덱스 값(3 라인의 값)

우리는 다음을 통해 얻습니다:

여기서 1, 2 및 4는 버퍼에 저장된 표시줄 인덱스의 값이며,

그런 다음 서로 비교합니다.

그러나 그것은 중요하지 않습니다. 나를 위해 표시 라인의 이러한 인덱스를 사용하여 올바르게 계산하지 않습니다.

표시기의 복사본 하나를 로드하고 복사 버퍼를 통해 원하는 버퍼 인덱스에 액세스하면 충분합니다.
 
sergey1294 :
표시기의 복사본 하나를 로드하고 복사 버퍼를 통해 원하는 버퍼 인덱스에 액세스하면 충분합니다.

아니요, 두 번째 줄의 값을 얻을 수 없습니다

왜냐하면 서로 다른 버퍼에 저장된 2개의 라인 인덱스 값을 비교합니다.


   bool SellSpr1 =(Spr1Buffer[ 1 ] > Spr2Buffer[ 1 ]);
 
alexluek :

아니요, 두 번째 줄의 값을 얻을 수 없습니다

왜냐하면 서로 다른 버퍼에 저장된 2개의 라인 인덱스 값을 비교합니다.


표시기 자체에 오류가 있을 수 있습니다.
 
sergey1294 :
표시기 자체에 오류가 있을 수 있습니다.

표시기가 정확합니다

 

익사한 자의 구원은 익사한 자의 일이다.

미래에는 누군가에게 유용할 수 있습니다.

어드바이저를 호출하려면 현재 막대 의 표시줄 값 2개 이상

핸들 1개를 선택하고 칠면조를 호출한 다음 복사 버퍼를 통해 저장해야 합니다. 값 지수

그런 다음 이러한 버퍼로 작업하십시오. sergey1294 도움을 주셔서 감사합니다!

 int OnInit ()
  {
   v161_handle= iCustom ( NULL , 0 , "LeroyMТ5" );                            
   if (v161_handle< 0 )
     {
       Alert ( "Ошибка при создании индикаторов: " , GetLastError ());
       return (- 1 );
     }
   return ( 0 );
  }


void OnTick ()
{  
   ArraySetAsSeries (Sp1Buffer, true );
   ArraySetAsSeries (Sp2Buffer, true );
   ArraySetAsSeries (Sp3Buffer, true );
   if ( CopyBuffer (v161_handle, 1 , 0 , 1 ,Sp1Buffer)< 0 || CopyBuffer (v161_handle, 2 , 0 , 1 ,Sp2Buffer)< 0 || CopyBuffer (v161_handle, 4 , 0 , 1 ,Sp3Buffer)< 0 )
      {
       Alert ( "Ошибка копирования буферов индикатора номер ошибки:" , GetLastError ());
       return ;
      }    
   bool SellSpr1 =( Sp1Buffer[ 0 ]> Sp2Buffer[ 0 ] && Sp3Buffer[ 0 ]>=Sp );
   if (SellSpr1  && ! PositionSelect (_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =( Sp1Buffer[ 0 ]< Sp2Buffer[ 0 ] && Sp3Buffer[ 0 ]>=Sp );
   if (BuySpr1 && ! PositionSelect (_Symbol));   
      {
        PositionOpenBuy1();
      }
}