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

 

Silent :

무엇을? K는 false로 초기화됩니다. 도중에 true로 할당됩니다. 그런 다음 - if (K)를 확인합니다. 무엇을?...


시작을 위한 연기 선창.

bool in if가 참/거짓만이 아니라는 것을 이해하십시오. 0이 아닌 모든 것은 컴파일러에 대해 true입니다.

https://www.mql5.com/ru/docs/basis/types/integer/boolconst

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип bool - Документация по MQL5
 
sergeev :

시작을 위한 연기 선창.

bool in if가 참/거짓만이 아니라는 것을 이해하십시오. 0이 아닌 모든 것은 컴파일러에 대해 true입니다.

https://www.mql5.com/ru/docs/basis/types/integer/boolconst

그래, 어쩐지 이 순간이 그리웠다. 덕분에 배우고 있습니다.
 

강조 표시된 추세선의 시간/가격을 얻으려고 합니다.

 datetime        TL1_Old_Time,TL1_New_Time,TL2_Old_Time,TL2_New_Time;
double          TL1_Old_Prise,TL1_New_Prise,TL2_Old_Prise,TL2_New_Prise;
int             i;
string          n;

void OnStart ()
  {
   if ( ObjectsTotal ( 0 , 0 , OBJ_TREND )<= 0 )
     {
       Print ( "-1 Trendlines не обнаружены" );
       return ;
     };
   for (i= ObjectsTotal ( 0 , 0 , OBJ_TREND )- 1 ;i>= 0 ;i--)
     {
      n=ObjectName( 0 ,i, 0 , OBJ_TREND );
       Print ( "0 Trendline " +n);
       if ( ObjectGetInteger ( 0 ,n, OBJPROP_SELECTED ))
        {
         TL1_Old_Prise= ObjectGetDouble ( 0 ,n, OBJPROP_PRICE , 0 );
         Print ( "TL1_Old_Prise = " + DoubleToString (TL1_Old_Prise));
         TL1_Old_Time= ObjectGetInteger ( 0 ,n, OBJPROP_TIME );
         Print ( "TL1_Old_Time = " + TimeToString (TL1_Old_Time));
         TL2_Old_Prise= ObjectGetDouble ( 0 ,n, OBJPROP_PRICE , 0 );
         Print ( "TL2_Old_Prise = " + DoubleToString (TL2_Old_Prise));
         TL2_Old_Time= ObjectGetTimeByValue ( 0 ,n,TL2_Old_Prise, 0 );
         Print ( "TL2_Old_Time = " + TimeToString (TL2_Old_Time));
        };
     };
  }

~을 위한

TL1_Old_Time= ObjectGetInteger ( 0 ,n, OBJPROP_TIME );

경고를 받고

possible loss of data due to type conversion

하지만

 ObjectGetInteger
Возвращает значение соответствующего свойства объекта.
Свойство объекта должно быть типов datetime , int , color , bool или char .

질문 1: 올바르게 변환하는 방법은 무엇입니까?

을 위한

TL2_Old_Time= ObjectGetTimeByValue ( 0 ,n,TL2_Old_Prise, 0 );

나는 선의 두 번째 지점의 시간이 아니라 기호로 역사의 시작 시간을 얻습니다

 2013.05 . 19 17 : 01 : 52      s_Trend_Line_avto_position_1_00 (EURUSD,D1)     TL2_Old_Time = 1970.01 . 01 00 : 00

질문 2: 왜

 ObjectGetTimeByValue
Возвращает значение времени для указанного значения цены указанного объекта.

~와 함께

   int      line_id       // номер линии

모든 면에서 재생하고, 삭제하고, 다른 숫자를 설정했습니다. 개체의 시간을 알 수 없습니다.

라인아이디 -얻는 방법을 말씀하시면 해당 기능을 못찾겠습니다.

업데이트

line_id

일반적으로 지표에 적용되는 것 같은데 문서에 반영되지 않은 이유는 무엇입니까? 하도록 하다

 ObjectGetTimeByValue

그래픽 섹션에서

 

흠. long을 선언하여 경고를 제거했습니다.

 long            TL1_Old_Time,TL2_Old_Time;

라는 것을 이해해야 합니다.

 ObjectGetInteger
Возвращает значение соответствующего свойства объекта в каком формате? .
Свойство объекта должно быть типов datetime , int , color , bool или char .
 
Silent :

~을 위한
TL1_Old_Time=ObjectGetInteger(0,n,OBJPROP_TIME);

경고를 받고

유형 변환으로 인한 데이터 손실 가능성

TL1_Old_Time=(날짜/시간) ObjectGetInteger (0,n,OBJPROP_TIME)

언어 기능의 이러한 곡선

 
A100 :

TL1_Old_Time=(날짜/시간) ObjectGetInteger(0,n,OBJPROP_TIME)

언어 기능의 이러한 곡선

즉, 기능의 경우 변환을 설정하는 것이 가능합니까(내 경우에는 필요)?

고맙습니다.

 
Silent :

즉, 기능의 경우 변환을 설정하는 것이 가능합니까(내 경우에는 필요)?

그것이 필요하다는 것이 밝혀졌습니다. 그러나 어떤 경우에는 그다지 편리하지 않은 경고를 무시할 수도 있습니다.
 
A100 :
그것이 필요하다는 것이 밝혀졌습니다. 그러나 어떤 경우에는 그다지 편리하지 않은 경고를 무시할 수도 있습니다.

확인.

그러나 무시는 옵션이 아니며 오류 로그는 컴파일하는 동안 아무 것도 표시하지 않으며 잠재적으로 문제가 있는 위치는 답변을 찾아야 함을 의미합니다. :)

 

이전 TF에서 분의 막대 수를 가져와야 합니다.

Bars에서 나는 이해할 수없는 수치를 얻습니다. 나는 H1에서 달리고 1201을 얻습니다. M1 - 6에서.

어디가 문제인지 말해줘

 //--- для H1
//--- переменные для указания параметров функции
   int start = 5 ; // индекс бара
   int count = 1 ; // количество баров
   int b= 72000 ;   // секунд в H1
   int bm;         // надо получить
   datetime tm[]; // массив, в котором возвращается время баров
//--- копирование времени 
   CopyTime ( _Symbol , PERIOD_CURRENT ,start,count,tm);
//--- вывод результата
   Print (tm[ 0 ]);

   bm= Bars ( _Symbol , PERIOD_M1 ,tm[ 0 ]+b,tm[ 0 ]);
   Print ( "bm = " +bm);
//--- возвращает bm = 1201
   bm= Bars ( _Symbol , PERIOD_M1 ,tm[ 0 ]-b,tm[ 0 ]);
   Print ( "bm = " +bm);
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   int start= 5 ;
   int count= 2 ;
   datetime _time[];
   datetime _timeM1[];
   int ntime= CopyTime ( _Symbol , _Period ,start,count,_time); //узнаем время 5 и 4 бара, нумерация как в тайм серии
   if (ntime> 0 )
     {
       Print ( "_time[0]=" ,_time[ 0 ]);
       Print ( "_time[1]=" ,_time[ 1 ]);
      
       datetime endtime=_time[ 1 ]- PeriodSeconds ( PERIOD_M1 );
       int nM1= CopyTime ( _Symbol , PERIOD_M1 ,_time[ 0 ],endtime,_timeM1); //получаем массив содержащий время минуток и число минуток
       if (nM1> 0 )
       {
         Print ( "Число минуток в период с " ,_time[ 0 ], " по " ,endtime, " =" ,nM1);
       }
       int nbarsM1= Bars ( _Symbol , PERIOD_M1 ,_time[ 0 ],endtime);//проверимся
       Print ( "Число минуток =" ,nbarsM1);
     }
  }
//+------------------------------------------------------------------+

그렇게 될 수 있습니다.

그리고 1시간에 몇 초, 많게는 72000초가 있습니다! 나는 현실에서 너무 많은 것을 원한다)).

실제 코드에서는 여전히 더 작은 시간 프레임의 동기화를 확인해야 합니다.