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

 
Igor Makanu :

이것은 작동합니다:

아마도 전역 수준에서 구조를 설명했으며 전역 수준에서 구조 필드에 값을 할당하려는 경우 작동하지 않습니다.

답변 해주셔서 감사합니다.

#define FXT_HEADER.intSize 70을 작성할 때 왜 오류가 발생하는지 알려주실 수 있습니까?

 
//+------------------------------------------------------------------+
//|  Функция A/D                       |
//+------------------------------------------------------------------+
double A_D( ENUM_TIMEFRAMES tf, int shift)
  {
   double res= 0 ;
   res= iAD ( NULL ,tf, shift);
   return res;
  }

//+------------------------------------------------------------------+
//|  Функция A/D  средняя                     |
//+------------------------------------------------------------------+
double A_D_moving( ENUM_TIMEFRAMES tf, int period, int shift)
  {
   double res= 0 ;
   double a[ 1 ];
  
   
   for ( int i=period- 1 ; i>= 0 ; i--)
     {
   ArrayResize (a,period, 0 );
      a[i]= A_D(tf, i);    
     }
   for ( int j=shift; j>= 1 ; j--)
     {
      res=iMAOnArray(a, 0 , period, 0 , MODE_SMA ,j);
     }
   return res;
  }

안녕하세요!

iAD()에서 움직이는 Average 함수를 만들려고 합니다. 끝까지 되지 않았습니다. 위 버전의 함수는 현재 막대의 iAD()에서 이동 평균 값을 반환합니다. shift 변수의 값에 관계없이.

그리고 iAD()에서 해당 이동 평균 값을 반환하는 함수가 있는 막대의 인덱스를 shift 변수로 만들어야 합니다. 설명된 오류는 OnTick()에 삽입된 다음 코드에 의해 포착되었습니다.

   Comment ( "\n  #0= " , DoubleToString (A_D_moving( 0 , 20 , 0 )),
           "\n  ++++++++++++++" ,
           "\n  #1= " , DoubleToString (A_D_moving( 0 , 20 , 1 )),
           "\n  ----------------------" ,
           "\n  #2= " , DoubleToString (A_D_moving( 0 , 20 , 2 )));
   

누구든지 가능하면 오류를 수정하는 방법을 알려주십시오.

 

그리고 원시적 인 작업으로 나에게 말하십시오.
- 표시기에 계좌 번호가 있는지 확인합니다. 계좌 번호가 지정된 번호가 아닌 경우 표시기가 메시지를 표시합니다(칠면조는 친구 전용 등).
- 차트에 표시기를 설치한 후 - 모든 것이 잘 작동합니다. 테스트에 통과합니다. 칠면조가 작동합니다.

그런데 터미널을 재시작한 후 인디케이터가 테스트를 통과하지 못했어요.. 브로커 연결 전에 인디케이터 코드 로딩이 일어나는 걸로 아는데요? 차트에 다시 정리해야하는데.. 이건 옵션이 아닙니다..
이 코드를 올바른 위치에 어디에 넣어야 하는지 알려주실 수 있나요? 일단 차트에 올려놓고 템플릿으로 저장하면 끝..

 {

   if ( AccountInfoInteger ( ACCOUNT_LOGIN )  != 123456 ) {

       Alert ( "Если не работает: блаблабла" );

       return ( INIT_FAILED );

   }
 
Roman Agafonkin :

이 코드를 올바른 위치에 어디에 넣어야 하는지 알려주실 수 있나요? 일단 차트에 올려놓고 템플릿으로 저장하면 끝..

그 전에 while()을 넣어 특정 제한 내에서 로그인을 기다리십시오. 아직 로그인하지 않은 경우 AccountInfoInteger ( ACCOUNT_LOGIN ) 함수가 무엇을 반환하는지 모르겠습니다. 인쇄를 취소하고 물음표 대신 붙여넣습니다.

 while ( AccountInfoInteger ( ACCOUNT_LOGIN )==????) Sleep ( 100 );
 
Igor Zakharov :

그 전에 while()을 넣어 특정 제한 내에서 로그인을 기다리십시오. 아직 로그인하지 않은 경우 AccountInfoInteger ( ACCOUNT_LOGIN ) 기능이 무엇을 제공하는지 모르겠습니다. 인쇄를 취소하고 물음표 대신 붙여넣습니다.

OnInit에서는 오랫동안 무언가를 할 수 없습니다 - 터미널은 코드를 언로드할 수 있습니다

표시기에서 슬립이 작동하지 않아야 합니다.

글쎄, 원래 버전의 코드가 작동하지 않는 이유는 분명하지 않습니다. 무가치한 서버가 있는 중개인이나 사려 깊은 인터넷 중 하나는 일반적으로 "친구"가 모든 포럼에서 이 코드를 공유합니다)))


표시기 본체에 확인을 위한 정적 변수를 추가해야 한다고 생각합니다. 틱이 도착하면 브로커와 인증이 연결되고, 차트에 업로드할 때 유일한 표시기는 첫 번째 틱을 제공하지만 처리할 수 있습니다. , 그건 그렇고, prev_calculated ==0은 "license"를 확인하는 아주 좋은 이유입니다.

 
그는 딸에게 무역을 가르치기 시작했습니다. 그녀는 다음과 같은 질문을 받았습니다. 그들은 우리가 파운드를 사는 것을 허용하는지 이해한다고 말하지만 내가 그것을 사지 않고 내가 가지고 있지 않다면 어떻게 파운드를 팔 수 있는지 명확하지 않습니다. 솔직히 말해서, 나는 그녀에게 이것이 현금이 아닌 가상 거래이며 판매를 위해 이 파운드의 재고가 있어야 할 필요가 없다는 모호한 설명을 그녀에게 할 수 없었습니다. 사실 내 대답이 마음에 들지 않았다. 그런 질문에 어떻게 대답해야 할까요?
[삭제]  
khorosh :
그는 딸에게 무역을 가르치기 시작했습니다. 그녀는 다음과 같은 질문을 받았습니다. 그들은 우리가 파운드를 사는 것을 허용하는지 이해한다고 말하지만 내가 그것을 사지 않고 내가 가지고 있지 않다면 어떻게 파운드를 팔 수 있는지 명확하지 않습니다. 솔직히 말해서, 나는 그녀에게 이것이 현금이 아닌 가상 거래이며 판매를 위해 이 파운드의 재고가 있어야 할 필요가 없다는 모호한 설명을 그녀에게 할 수 없었습니다. 사실 나는 내 대답이 마음에 들지 않았다. 그런 질문에 어떻게 대답해야 할까요?

이익을 내기 위해 사물의 본질을 이해할 필요는 없습니다. 덜 알수록 더 쉽게 플레이할 수 있습니다. 임호.

그녀가 그렇게 일찍 시작할 수 있는 기회가 있다는 것은 멋진 일입니다) 그 과정에서 그녀는 질문에 대한 답을 스스로 찾을 것입니다(자신이 질문할 것입니다).
 
onedollarusd :

이익을 내기 위해 사물의 본질을 이해할 필요는 없습니다. 덜 알수록 더 쉽게 플레이할 수 있습니다. 임호.

가격이 꽤 떨어져서 돌아서면 구매 버튼을 누르고 그 반대도 마찬가지입니다. 이 정도면 충분할 것 같습니까? )

 
Igor Makanu :

OnInit에서는 오랫동안 무언가를 할 수 없습니다 - 터미널은 코드를 언로드할 수 있습니다

표시기에서 슬립이 작동하지 않아야 합니다.

글쎄, 원래 버전의 코드가 작동하지 않는 이유는 분명하지 않습니다. 무가치한 서버가 있는 중개인이나 사려 깊은 인터넷 중 하나는 일반적으로 "친구"가 모든 포럼에서 이 코드를 공유합니다)))


표시기 본체에 확인을 위한 정적 변수를 추가해야 한다고 생각합니다. 틱이 도착하면 브로커와 인증이 연결되고, 차트에 업로드할 때 유일한 표시기는 첫 번째 틱을 제공하지만 처리할 수 있습니다. , 그건 그렇고, prev_calculated ==0은 "license"를 확인하는 아주 좋은 이유입니다.

동일한 문제를 해결 하고 OnCalculate 함수 시작 부분에 다음 코드를 삽입했습니다.

 if (account_number> 0 )
 {
   int akk;
   akk= AccountInfoInteger ( ACCOUNT_LOGIN );
   if (akk== 0 ) return ( 0 );
   if (akk!=account_number)
   {
     Alert ( "Неверный номер счёта." );
     int window= ChartWindowFind ();
     ChartIndicatorDelete ( 0 ,window,MeName);
     return ( 0 );
   }
 }              

account_number는 #define을 사용하여 정의되며(글로벌 가시성 변수일 수도 있음) MeName은 유사하지만 일반적으로 표시기의 짧은 이름입니다.

 
Yurij Kozhevnikov :

동일한 문제를 해결 하고 OnCalculate 함수 시작 부분에 다음 코드를 삽입했습니다.

account_number는 #define을 사용하여 정의되며(글로벌 가시성 변수일 수도 있음) MeName은 유사하지만 일반적으로 표시기의 짧은 이름입니다.

예, 당신은 좋은 예가 있습니다, 나는 그것에 대해 씁니다

그러나 표시기의 첫 번째 시작을 처리해야 합니다. 첫 번째 시작 시 연결이 있을 수도 있고 연결되지 않을 수도 있습니다. 라이센스가 통과되지 않은 경우 카운터 옵션으로 즉시 언로드하고 라이센스가 2-3번 없습니다. , 표시기를 언로드하십시오.