Çaydanlıktan gelen sorular - sayfa 248

 

Silent :

Neye? K false olarak başlatılır. Yol boyunca doğru atandı. Sonra kontrol ederiz - eğer (K). Neye?...


başlangıç için duman rıhtımları.

bool'un sadece doğru/yanlış olmadığını anlayın. 0 olmayan her şey derleyici için doğrudur

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

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

başlangıç için duman rıhtımları.

bool'un sadece doğru/yanlış olmadığını anlayın. 0 olmayan her şey derleyici için doğrudur

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

Evet, bir şekilde bu anı kaçırdım. Teşekkürler, öğreniyorum.
 

Vurgulanan bir trend çizgisinin zamanını/fiyatını almaya çalışıyorum

 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));
        };
     };
  }

için

TL1_Old_Time= ObjectGetInteger ( 0 ,n, OBJPROP_TIME );

uyarı almak

possible loss of data due to type conversion

Ancak

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

Soru 1: nasıl doğru bir şekilde dönüştürülür?

İçin

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

Çizginin ikinci noktasının zamanını değil, tarihin başlangıcının zamanını sembolle alıyorum

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

Soru 2: neden eğer

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

ile

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

Her şekilde oynadım, sildim, farklı sayılar belirledim - nesnenin zamanını anlamıyorum.

Hat kimliğini kastediyorsanız - nasıl elde edilir, ilgili işlevi bulamıyorum.

yukarı

line_id

genel olarak, göstergeler için geçerli gibi görünüyor, o zaman neden belgelere yansıtılmıyor. Böylece

 ObjectGetTimeByValue

grafik bölümünde.

 

hm. kadar uzun ilan ederek uyarıdan kurtuldum

 long            TL1_Old_Time,TL2_Old_Time;

Anlaşılmalıdır ki

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

için
TL1_Old_Time=ObjectGetInteger(0,n,OBJPROP_TIME);

uyarı almak

tür dönüştürme nedeniyle olası veri kaybı

TL1_Old_Time=(datetime) ObjectGetInteger (0,n,OBJPROP_TIME)

dil fonksiyonunda böyle bir eğri

 
A100 :

TL1_Old_Time=(tarihsaat) ObjectGetInteger(0,n,OBJPROP_TIME)

dil fonksiyonunda böyle bir eğri

Yani, işlevler için dönüşümü ayarlamak mümkün (ve benim durumumda - gerekli)?

Teşekkür ederim.

 
Silent :

Yani, işlevler için dönüşümü ayarlamak mümkün (ve benim durumumda - gerekli)?

Bunun gerekli olduğu ortaya çıkıyor. Ancak, bazı durumlarda çok uygun olmayan uyarıları da göz ardı edebilirsiniz.
 
A100 :
Bunun gerekli olduğu ortaya çıkıyor. Ancak, bazı durumlarda çok uygun olmayan uyarıları da göz ardı edebilirsiniz.

TAMAM.

Ancak yok saymak bir seçenek değildir ve hata günlüğü derleme sırasında herhangi bir şeyi ortaya çıkarır ve potansiyel olarak sorunlu bir yer, yanıtları aramanız gerektiği anlamına gelir :)

 

Eski TF'den dakika çubuklarının sayısını almanız gerekir.

Barlardan anlaşılmaz bir rakam alıyorum. H1'de koşuyorum, 1201 alıyorum. M1 - 6'da.

söyle bana sorun nerde

 //--- для 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);
     }
  }
//+------------------------------------------------------------------+

Öyle olabilir.

Ve bir saat içinde 72000 kadar çok saniyeniz var! Gerçekte çok isterim))).

Gerçek kodda, daha küçük bir zaman diliminin senkronizasyonunu kontrol etmeniz gerekir.