MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 254

 
Alexey Kozitsyn :
Bir dosya aracılığıyla...

sakıncası yoksa biraz daha detay

 
виталик :

sakıncası yoksa biraz daha detay

Tırnakları çıkarmak için Kopyalama işlevlerini kullanın:

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

Ayrıca https://www.mql5.com/ru/docs/files dosya işlemlerine bir bağlantıdır.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
İyi akşamlar! Bir "raylar" modeli yapıyorum ama bu benim için çalışmıyor....bakın sorun ne? Şimdiden teşekkürler
Dosyalar:
jzogyr2.mq4  6 kb
 
sviter-pro :
İyi akşamlar! Bir "raylar" modeli yapıyorum ama bu benim için çalışmıyor....bakın sorun ne? Şimdiden teşekkürler

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

Ve bu koşullar asla karşılanmayacak

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

Tünaydın! Görev şudur - sonraki 01.00 saate kadar çubuğun ne kadar olacağını belirlemeniz gerekir. Şimdiye kadar bir döngü ile yaptım ama belki bir şekilde iBarShift ile yapmak daha doğru olur? Belki genel olarak farklı bir şekilde daha doğrudur, yapılır mı?

       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 :

Tünaydın! Görev şudur - sonraki 01.00 saate kadar çubuğun ne kadar olacağını belirlemeniz gerekir. Şimdiye kadar bir döngü ile yaptım ama belki bir şekilde iBarShift ile yapmak daha doğru olur? Belki genel olarak farklı bir şekilde daha doğrudur, yapılır mı?

Gelecekte mql5'e daha ağrısız bir geçiş için, her iki dilde de kullanılan işlevleri hemen kullanmak daha iyidir. Çubuk sayısını bulmak için kullanmak daha iyidir

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

Ve prensipte, iBarShift () bu görevle bir döngüden daha iyi başa çıkacaktır.

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

Gelecekte mql5'e daha ağrısız bir geçiş için, her iki dilde de kullanılan işlevleri hemen kullanmak daha iyidir. Çubuk sayısını bulmak için kullanmak daha iyidir

Ve prensipte, iBarShift () bu görevle bir döngüden daha iyi başa çıkacaktır.

Evet ama sorun en yakın 01.00 saatini bulmak. Nasıl tanımlarsınız?
int iBarShift(
dize sembolü, // sembol
int zaman çerçevesi, // dönem
tarihsaat saat, // saat ?????????
bool kesin=yanlış // mod
);
 
Nauris Zukas :
Evet ama sorun en yakın 01.00 saatini bulmak. Nasıl tanımlarsınız?
int iBarShift(
dize sembolü, // sembol
int zaman çerçevesi, // dönem
tarihsaat saat, // saat ?????????
bool kesin=yanlış // mod
);

Çubuk sayısını bulmak için kullanmak daha iyidir

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

Ve prensipte, iBarShift () bu görevle bir döngüden daha iyi başa çıkacaktır.

stop_time geçerli çubuğun zamanıysa, belirtilen saat ile geçerli olan arasındaki çubuk sayısını döndürür.

Tek sorun şu ki, bellek hücremi belirtilen süre ile barı dikkate alarak veya 1'den azını dikkate alarak ortaya çıkan değerin ne olacağı gibi gereksiz şeylerle asla doldurmam. Her seferinde sadece kontrol ediyorum.

 
Alexey Viktorov :

stop_time geçerli çubuğun zamanıysa, belirtilen saat ile geçerli olan arasındaki çubuk sayısını döndürür.

Tek sorun şu ki, bellek hücremi belirtilen süre ile barı dikkate alarak veya 1'den azını dikkate alarak ortaya çıkan değerin ne olacağı gibi gereksiz şeylerle asla doldurmam. Her seferinde sadece kontrol ediyorum.

Bunu anlıyorum ama soruyu anlamaya çalış. Belirtilen zaman nasıl bulunur - benim durumumda en yakın 01.00 saati bulmanız gerekiyor. Nasıl yazacaksınız?
datetime start_time , // hangi tarihten itibaren???

 
Nauris Zukas :

Bunu anlıyorum ama soruyu anlamaya çalış. Belirtilen zaman nasıl bulunur - benim durumumda en yakın 01.00 saati bulmanız gerekiyor. Nasıl yazacaksınız?
datetime start_time , // hangi tarihten itibaren???

 datetime t= StringToTime ( "01:00" );
 int b= Bars ( _Symbol , PERIOD_M30 , t, TimeCurrent ());
Geçerli saat 17:08 33'ü gösterir. Yani 01:00 saatindeki çubuğun sayısı 32 olacaktır.