찻주전자의 질문 - 페이지 38

 

그래서. 끝났다! 1년도 지나지 않았습니다. 내가 결정했어! MQL5 문서를 진지하게 조사했습니다. 나는 작게 시작했습니다. 구조와 작동을 단순화하고 이해하기 위해 일부 표시기의 일부 코드를 최소화했습니다. 그리고 마비...

먼저 프랙탈을 열었습니다. 예상외로 작고 간단했습니다. 그런 다음 그는 논리적으로 추론했습니다. 이 코드를 프로그램에서 프로그램으로 드래그하는 것은 비합리적입니다. 이 표시기를 호출하고 버퍼의 기성품 계산 값을 복사하여 사용해야 합니다. 방향을 틀리지 않았다면 인근 대초원으로 옮겨져 예를 들어 iFractals("내가 다 제대로 했나?"(c))와 함께 데려왔다. 코드를 최대한 줄이고 불필요하고 조건부로 불필요한 모든 것을 정리하고 본질만 남겼습니다. 그리고 나는 무엇을 발견했는가? 볼륨 및 가독성 측면에서이 표시기를 호출하는 코드는 표시기 자체의 원래 코드보다 더 간결하지 않은 것으로 나타났습니다.

질문.

1. iFractals의 요점은 무엇입니까?

2. 나에게 무슨 문제가 있습니까?

고맙습니다!

추신: 아니면 두 번째 코드의 양에 이점이 없는 특수한 경우입니까?

 
x100intraday :

2. 나에게 무슨 문제가 있습니까?

이것은 정신과 의사를 위한 포럼이 아니라 MQL 프로그래머를 위한 포럼입니다. 다른 사람의 바퀴벌레를 찔러보는 것은 보통 하기 싫습니다.

질문에 더 구체적으로 답하세요.
 

질문 질문

삶과 죽음...

시간 프레임의 H1 막대의 공개 값 [15625]을 얻는 비범죄적 방법은 무엇입니까

내가 아무리 노력해도 치명적인 오류가 납니다 ... 모든 것을 시도했습니다. 그래서 누가 pliz를 알겠습니까 ... 나는 이것이 3 줄의 코드라는 것을 압니다 ...하지만 무엇을 ... 소중히 ... 맞습니다 .. . 오류가 발생하지 않도록

 
BaTTLeBLooM :

질문 질문

삶과 죽음...

시간 프레임의 H1 막대의 공개 값 [15625]을 얻는 비범죄적 방법은 무엇입니까

내가 아무리 노력해도 치명적인 오류가 납니다 ... 모든 것을 시도했습니다. 그래서 누가 pliz를 알겠습니까 ... 나는 이것이 3 줄의 코드라는 것을 압니다 ...하지만 무엇을 ... 소중히 ... 맞습니다 .. . 오류가 발생하지 않도록


코드를 입력하세요.

 
Renat :

코드를 입력하세요.

가져오다

더블 MTime ( int 모드 )
{

이중 iOpen_min[], iOpen_hour[], iOpen_4hour[];

ArraySetAsSeries( iOpen_min, true );
ArraySetAsSeries( iOpen_hour, true );
ArraySetAsSeries( iOpen_4hour, true );
int Rates_open_min, Rates_open_hour, Rates_open_4hour입니다.
실수 = 0;
하다
{
rate_open_min = CopyOpen( NULL, PERIOD_M1, 0, 7501, iOpen_min );
rate_open_hour = CopyOpen( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
rate_open_4hour = CopyOpen(NULL, PERIOD_H4 , 0, 10000, iOpen_4hour);
오류++;
}
동안 ( ( rate_open_min <= 0 || Rates_open_hour <= 0 || Rates_open_4hour <= 0) && err < 10 );

이중 Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
이중 Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
이중 시간 = iOpen_min [ 0 ] - iOpen_min [ 60 ]; // 시간
더블 Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ]; // 5시
이중 일 = iOpen_min [ 0 ] - iOpen_min [ 1500 ]; // 낮
이중 주 = iOpen_min [ 0 ] - iOpen_min [ 7500 ]; // 일주일
이중 월 = iOpen_hour [ 0 ] - iOpen_hour [ 625 ]; // 월
이중 Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ]; // 반년

이중 Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ]; // 3 년

마지막 연산자의 마지막 줄에 오류가 항상 비판되었습니다 ... 어드바이저는 테스터에서 거래를 시작할 수도 있고 실행한 후 1년 반 후에 오류가 발생하고 충돌이 발생합니다.

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

치명적인 오류 - 배열이 범위를 벗어났습니다.

다음과 같이 시도할 수 있습니다.

       do
         {    
            // if (err> 0 ) Sleep ( 10 );//желательно с паузой
            rates_open_min = CopyOpen ( NULL , PERIOD_M1 , 0 , 7501 , iOpen_min );
            rates_open_hour = CopyOpen ( NULL , PERIOD_H1 , 0 , 20000 , iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL , PERIOD_H4 , 0 , 10000 , iOpen_4hour );           
            err ++;
         }
       while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000 ) && err < 10 );   

   if (rates_open_min< 7501 || rates_open_hour< 20000 || rates_open_4hour< 10000 ) return (- 1 ); //Данные не скопированы
   else
      {
       double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
       double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
       double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
       double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
       double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
       double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];   // Неделя
       double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
       double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];   // Полугодие
       double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];   // 3 года
      }
 
Swan :

치명적인 오류 - 배열이 범위를 벗어났습니다.

다음과 같이 시도할 수 있습니다.

이것은 문제의 본질을 변경하지 않습니다 ... 데이터를 더 이상 복사하지 않으면 ... 고문은 여전히 거래하지 않을 것입니다.

문제는 역사가 거대하고 ... 사용할 수없는 경우 왜 그러한 상황이 발생하는지입니다 ...

 
Renat :

코드를 입력하세요.

음, 답이 없으면 수동으로 입력하겠습니다.)))) 이점은 하나의 값일뿐입니다.
 
BaTTLeBLooM :
음, 답이 없으면 수동으로 입력하겠습니다.)))) 이점은 하나의 값일뿐입니다.

코드에 검사가 없습니다. 그럼 무엇을 원하십니까?

 
BaTTLeBLooM :

이것은 문제의 본질을 변경하지 않습니다 ... 데이터를 더 이상 복사하지 않으면 ... 고문은 여전히 거래하지 않을 것입니다.

문제는 역사가 거대하고 ... 사용할 수없는 경우 왜 그러한 상황이 발생하는지입니다 ...

여전히 변경 .. 데이터가 복사되지만 첫 번째 시도에서 항상 그런 것은 아닙니다. 심각한 오류가 발생한 후 조언자는 어리석게도 작동을 멈춥니다.

while( ... Rates_open_hour <= 0 //현재 사용 가능한 데이터의 양만 복사되었으므로 배열은 15625보다 작을 수 있습니다.


그리고 매뉴얼의 불충분 한 흡연으로 인해 상황이 발생합니다 :)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5