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

 
Alexey Kozitsyn :
파일을 통해...

실례가 되지 않는다면 조금 더 자세히

 
виталик :

실례가 되지 않는다면 조금 더 자세히

따옴표를 추출하려면 복사 기능을 사용하십시오.

https://www.mql5.com/ru/docs/series

추가 https://www.mql5.com/ru/docs/files는 파일 작업에 대한 링크입니다.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
좋은 저녁이에요! 나는 "레일" 패턴을 만들고 있는데, 그것은 나에게 적합하지 않다. 미리 감사드립니다
파일:
jzogyr2.mq4  6 kb
 
sviter-pro :
좋은 저녁이에요! 나는 "레일" 패턴을 만들고 있는데, 그것은 나에게 적합하지 않다. 미리 감사드립니다

 int OnInit ()
  {

   SetIndexBuffer ( 0 ,BuyTrain); SetIndexStyle ( 0 , DRAW_ARROW , EMPTY ,RazmerStrelok,coloru); SetIndexArrow ( 0 , 159 ); SetIndexEmptyValue ( 0 , EMPTY_VALUE );
   SetIndexBuffer ( 1 ,SelTrain); SetIndexStyle ( 1 , DRAW_ARROW , EMPTY ,RazmerStrelok,colord); SetIndexArrow ( 1 , 159 ); SetIndexEmptyValue ( 1 , EMPTY_VALUE );

   return ( INIT_SUCCEEDED );
  }

그리고 이러한 조건은 결코 충족되지 않을 것입니다

   double high2= 0.0 ,high3= 0.0 ,high4= 0.0 ,high5= 0.0 ,high6= 0.0 ,high7= 0.0 ,size1= 0.0 ,size2= 0.0 ,body1= 0.0 ,body2= 0.0 ;

       if (Close1<Open1 && Close2>Open2
         && MathAbs (High1-High2)<= 5 * Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point )
        {
         BuyTrain[i]=low[i]-OtstupStrelok* Point ;
        }
       if (Close1>Open1
         && Close2<Open2
         && MathAbs (Low1-Low2)>= 5 * Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point )
        {
         SelTrain[i]=high[i]-OtstupStrelok* Point ;
        }
 

안녕하세요! 작업은 이것입니다. 다음 01.00 시간까지 막대가 얼마나 될지 결정해야합니다. 지금까지 사이클로 해봤지만 iBarShift 로 어떻게든 하는 것이 더 정확할까요? 아마도 다른 방식으로 일반적으로 더 정확할 것입니다. 완료되었습니까?

       int ShiftBar= 0 ;
       for ( int cnt= 0 ; cnt< 100 ; cnt++)
        {
         int hour= TimeHour ( iTime ( Symbol (), PERIOD_M30 ,cnt));
         if (hour== 1 )
           {
            ShiftBar=cnt;
             break ;
           }
        }
         Print ( "ShiftBar= " ,ShiftBar);
 
Nauris Zukas :

안녕하세요! 작업은 이것입니다. 다음 01.00 시간까지 막대가 얼마나 될지 결정해야합니다. 지금까지 사이클로 해봤습니다만, iBarShift로 어떻게든 하는 것이 더 맞을까요? 아마도 다른 방식으로 일반적으로 더 정확할 것입니다. 완료되었습니까?

향후 mql5로의 보다 간편한 전환을 위해서는 두 언어에서 사용되는 기능을 즉시 사용하는 것이 좋습니다. 막대의 수 를 찾으려면 다음을 사용하는 것이 좋습니다.

 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );

그리고 원칙적으로 iBarShift()는 루프보다 이 작업에 더 잘 대처합니다.

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov :

향후 mql5로의 보다 간편한 전환을 위해서는 두 언어에서 사용되는 기능을 즉시 사용하는 것이 좋습니다. 막대의 수 를 찾으려면 다음을 사용하는 것이 좋습니다.

그리고 원칙적으로 iBarShift()는 루프보다 이 작업에 더 잘 대처합니다.

네, 하지만 문제는 가장 가까운 01:00시를 찾는 것입니다. 어떻게 정의합니까?
int iBarShift(
문자열 기호, // 기호
int timeframe, // 마침표
날짜 시간 시간, // 시간 ?????????
bool 정확=거짓 // 모드
);
 
Nauris Zukas :
네, 하지만 문제는 가장 가까운 01.00시를 찾는 것입니다. 어떻게 정의합니까?
int iBarShift(
문자열 기호, // 기호
int timeframe, // 마침표
날짜 시간 시간, // 시간 ?????????
bool 정확=거짓 // 모드
);

막대의 수 를 찾으려면 다음을 사용하는 것이 좋습니다.

 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );

그리고 원칙적으로 iBarShift()는 루프보다 이 작업에 더 잘 대처합니다.

stop_time이 현재 막대의 시간인 경우 지정된 시간현재 시간 사이의 막대 수를 반환합니다.

유일한 문제는 지정된 시간의 막대를 고려하거나 1보다 적은 값을 고려하여 결과 값이 무엇인지와 같은 불필요한 것으로 메모리 셀을 채우지 않는다는 것입니다. 매번 확인합니다.

 
Alexey Viktorov :

stop_time이 현재 막대의 시간인 경우 지정된 시간현재 시간 사이의 막대 수를 반환합니다.

유일한 문제는 지정된 시간의 막대를 고려하거나 1보다 적은 값을 고려하여 결과 값이 무엇인지와 같은 불필요한 것으로 메모리 셀을 채우지 않는다는 것입니다. 매번 확인합니다.

나는 이것을 이해하지만 질문을 이해하려고 노력하십시오. 지정된 시간 을 찾는 방법 - 제 경우 에는 가장 가까운 01.00시 를 찾아야 합니다. 당신은 그것을 어떻게 기록할 것인가?
datetime start_time , // 어떤 날짜부터???

 
Nauris Zukas :

나는 이것을 이해하지만 질문을 이해하려고 노력하십시오. 지정된 시간 을 찾는 방법 - 제 경우 에는 가장 가까운 01.00시 를 찾아야 합니다. 당신은 그것을 어떻게 기록할 것인가?
datetime start_time , // 어떤 날짜부터???

 datetime t= StringToTime ( "01:00" );
 int b= Bars ( _Symbol , PERIOD_M30 , t, TimeCurrent ());
현재 시간 17:08은 33을 나타냅니다. 즉, 01:00의 막대 번호는 32가 됩니다.