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

 

아니요, 항상 경고음이 울리지는 않습니다. >=일 때 "범위를 벗어난 배열"이 충돌합니다. 왜요?

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   if (rates_total< 2 ) return ( 0 );
     {
       int limit=rates_total-prev_calculated;
       if (limit> 1 ) 
        {
         ArrayInitialize (BufferUP, EMPTY_VALUE );
         ArrayInitialize (BufferDN, EMPTY_VALUE );
        }
       for ( int i=limit; i>= 0 ; i--) 
        {
         if ( TimeCurrent ()>=Input1 || TimeCurrent ()>=Input2 || TimeCurrent ()>=Input3)
           {
            BufferUP[i]=low[i]- 10 * Point ; // в этой строке array out of range in 'a1.mq4' (75,28)

             Alert ( "__" , TimeCurrent ());
           }
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
 
volyal :
감사해요. >= 불가능합니다. 첫 번째 날짜 이후에 일정한 신호가 있을 것입니다. 시간 범위를 설정해야 합니다. 어떻게 물어?

이것은 질문의 두 번째 부분이고 답변의 두 번째 부분입니다.

신호(경고)가 트리거된 후 신호가 이미 제공되었음을 수정해야 합니다. 추가 조건이 필요하며 다음과 같이 코드를 작성할 수 있습니다.

 {
//---
   static bool alerton= true ;
   A= 1 ;B= 2 ;
   if (rates_total< 2 ) return ( 0 );
     {
       int limit=rates_total-prev_calculated;
       if (limit> 1 )
        {
         ArrayInitialize (BufferUP, EMPTY_VALUE );
         ArrayInitialize (BufferDN, EMPTY_VALUE );
        }
       for ( int i=limit; i>= 0 ; i--)
        {
         if (alerton)
           {
             if (A>B)
              {
               if (( TimeCurrent ()>=Input1 || TimeCurrent ()>=Input2 || TimeCurrent ()>=Input3))
                 {
                  BufferUP[i]=low[i]- 10 * Point ;
                   Alert ( "__" , TimeCurrent ());
                   alerton = false ;
                 }
              }
           }
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }

코드에서 경고를 트리거하기 위한 명확한 조건이 있습니다. 일반적으로 표시기에서 막대당 하나의 신호를 생성하도록 요청한 다음 경고 트리거 시간을 저장할 변수에 막대 시간을 "바인딩"해야 합니다. 나는 앞으로 일어날 일에 대해 이야기하고 있습니다.

정적 날짜 시간 경고=0 ;

기성품 예를 찾으십시오. 이제 이해할 것입니다.

 
Aleksey Vyazmikin :

한 번에 동일한 신호가 많이 있는 경우 그룹화하여 하나로 재생합니다. 또는 신호 유형별로 시간을 배열로 수집하고 천천히 실행하십시오. :)

배열에서 수집하고 별도의 스크립트에서 재생하려면 일반적으로 이해할 수 있으며 첫 번째 조언에 해당합니다.

그리고 하나로 묶고 지는 것은 잘 이해가 되지 않았다. 하나의 사운드 파일처럼?

그룹화 방법

if(Sobitie_1)

{
PlaySound ("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("기간.wav");
} ?


PlaySound("Symbol Sobitie1 Period.wav");? 이 경우 Symbol * Sobitie * Period=3*10*7=210 파일의 수입니다. 너무 많이...):

또한 재생 신호는 다른 TF의 표시기에서 나옵니다. 나는 이것을 고려하는 방법을 아직 모른다.

 
Algus :

배열에서 수집하고 별도의 스크립트에서 재생하려면 일반적으로 이해할 수 있으며 첫 번째 조언에 해당합니다.

그리고 하나로 묶고 지는 것은 잘 이해가 되지 않았다. 하나의 사운드 파일처럼?

그룹화 방법

if(Sobitie_1)

{
PlaySound("Symbol.wav");
PlaySound("Sobitie1.wav");
PlaySound("기간.wav");
} ?


PlaySound("Symbol Sobitie1 Period.wav");? 이 경우 Symbol * Sobitie * Period=3*10*7=210 파일의 수입니다. 너무 많이...):

또한 재생 신호는 다른 TF의 표시기에서 나옵니다. 나는 이것을 고려하는 방법을 아직 모른다.

나는 신호가 도착하는 주파수에 대해 이야기했습니다. 내가 이해하는 바와 같이, 당신은 같은 소리가 있고 같은 소리가 없습니다. 소리가 재생되는 동안 재생 대기열은 버퍼에 누적됩니다 (그래픽에 누적 할 수 있음). 재생 후 대기열을 분석하고 버립니다. 파일이 재생될 때 나오는 소리와 같은 소리를 가집니다. 새로운 정보를 포함하지 않습니다. 어떤 멜로폰이 있는지 자세히는 모르겠습니다 :)

 

안녕하세요!

이 혼란을 도와주세요.

나는 포지션을 여는 조건을 설정했다:

 if ( MathAbs (WPR1)< 20.0 )
        {
         if ( MathAbs (WPR14)> 44.0 && MathAbs (WPR14)< 60.0 && op0<cl1) 
{ps2= true ;ps1= false ;ps3= false ;ps4= false ;ps5= false ;ps6= false ;ps7= false ;ps8= false ; Alert ( "условие ps2" ); OpenSell();}
        }

그리고 ps2 플래그가 있는 한 위치 대신 ps2ps3 플래그가 있는 두 위치가 열립니다. 그리고 당신이 무엇을 하든, 아무것도 바뀌지 않습니다. 경보로 온갖 상황을 확인했는데 아무 것도 없었다. 무슨일이야???? 끔찍한 것은 없는 것 같습니다. 플래그는 다른 수준의 TP를 설정합니다. 그러나 여전히 추가 위치는 쓸모가 없습니다.

고맙습니다.

 
novichok2018 :

안녕하세요!

이 혼란을 도와주세요.

나는 포지션을 여는 조건을 설정했다:

그리고 ps2 플래그가 있는 한 위치 대신 ps2ps3 플래그가 있는 두 위치가 열립니다. 그리고 당신이 무엇을 하든, 아무것도 바뀌지 않습니다. 경보로 온갖 상황을 확인했는데 아무 것도 없었다. 무슨일이야???? 끔찍한 것은 없는 것 같습니다. 플래그는 다른 수준의 TP를 설정합니다. 그러나 여전히 추가 위치는 쓸모가 없습니다.

고맙습니다.

또한 로그에 따르면 먼저 ps3 을 연 다음 ps2 를 엽니다.

 
novichok2018 :

안녕하세요!

이 혼란을 도와주세요.

나는 포지션을 여는 조건을 설정했다:

그리고 ps2 플래그가 있는 한 위치 대신 ps2ps3 플래그가 있는 두 위치가 열립니다. 그리고 당신이 무엇을 하든, 아무것도 바뀌지 않습니다. 경보로 온갖 상황을 확인했는데 아무 것도 없었다. 무슨일이야???? 끔찍한 것은 없는 것 같습니다. 플래그는 다른 수준의 TP를 설정합니다. 그러나 여전히 추가 위치는 쓸모가 없습니다.

고맙습니다.

Vovochka는 학교에서 돌아옵니다. 아빠는 묻습니다.

- 글쎄, 오늘 몇 학점을 받았니?

- 자연사에서 듀스.

- 왜?

- 선생님은 새의 꼬리를 보여주며 어떤 새인지 맞춰보라고 하셨습니다...

이 아빠는 학교에 가서 교실 문을 열고 거기에 자신의 엉덩이를 보여줍니다.

- 누구야...

선생님이 무섭게 묻는다...

- 그리고 당신 스스로 추측합니다.


이것은 정확히 귀하의 코드에 관한 것입니다...))))

 
Alexey Viktorov :

Vovochka는 학교에서 돌아옵니다. 아빠는 묻습니다.

- 글쎄, 오늘 몇 학점을 받았니?

- 자연사에서 듀스.

- 왜?

- 선생님은 새의 꼬리를 보여주며 어떤 새인지 맞춰보라고 하셨습니다...

이 아빠는 학교에 가서 교실 문을 열고 거기에 자신의 엉덩이를 보여줍니다.

- 누구야...

선생님이 무섭게 묻는다...

- 그리고 당신 스스로 추측합니다.


이것은 정확히 귀하의 코드에 관한 것입니다...))))

5학년 Leshenka는 도움이 아니라 깃털을 펄럭이기 위해 첫 수업에 들어갑니다.

이것은 정확히 귀하의 답변에 관한 것입니다.

 
novichok2018 :

또한 로그에 따르면 먼저 ps3 을 연 다음 ps2 를 엽니다.

모두 알아냈습니다. 모든 것이 간단하다는 것이 밝혀졌습니다. ps8 조건이 있는 경고에는 8 대신 3이 있었습니다. 그리고 조건 8은 조건 2보다 넓고 행에서 더 높습니다. 제거 및 축소, 모든 것이 정상입니다.

그러나 분기가 초보자를위한 것이기 때문에 꼬리를 플러핑하는 것은 여전히 가치가 없습니다. 진정한 전문가는 세부 사항이 없어도 대략적으로 오류가 발생한 위치를 이해하거나 최소한 주요 질문을 해야 합니다.

 
Aleksey Vyazmikin :

나는 신호가 도착하는 주파수에 대해 이야기했습니다. 내가 이해하는 바와 같이, 당신은 같은 소리가 있고 같은 소리가 없습니다. 소리가 재생되는 동안 재생 대기열은 버퍼에 누적됩니다 (그래픽에 누적 할 수 있음). 재생 후 대기열을 분석하고 버립니다. 파일이 재생될 때 나오는 소리와 같은 소리를 가집니다. 새로운 정보를 포함하지 않습니다. 거기에 어떤 멜로폰이 있는지 자세히 모르겠어요 :)

작동하는 모든 TF 및 통화에 표시되는 지표가 있습니다. 12개 반의 다른 신호를 고칠 수 있습니다. 나는 거의 스캘핑(scalping)을 하면서 2~3개의 악기를 사용하여 하루 중 작업을 합니다. 이벤트를 놓치지 않고 하루가 끝날 때까지 눈이 떨어지지 않기 위해 나는 소리 알림을 사용합니다.

실제로 10-14 표시기는 Windows 활동을 나타냅니다. 대기열은 독립적으로 작동하는 다양한 표시기로 구성되어야 합니다. 터미널의 작업과 프로그래밍은 쉽지 않습니다.

이것이 "음악"이 나타나는 방식입니다.):