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

 
mr LSV :

doğru mu anladım

 if (rates_total - prev_calculated == 1 )
 Print ( "Новый бар" );
 
Taras Slobodyanik :

Teşekkür ederim, şimdi var

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
   {
   fin= iTime ( Symbol (), PERIOD_M1 , 0 );
   if (last==fin) return (rates_total);
   last=fin;
   
   if (rates_total - prev_calculated == 1 )
   Print ( "Новый бар" );


return (rates_total);

	          
 

Lütfen söyle bana, bir bar açarken, son kapanan mumun yönünü belirlemen gerekiyor.

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
   {
   fin= iTime ( Symbol (), PERIOD_M1 , 0 );
   if (last==fin) return (rates_total);
   last=fin;
   
   if (rates_total - prev_calculated == 1 )
   //Print("Новый бар");
   
   if (open[ 1 ] > close[ 1 ])
   {
       Print ( "Dn" );
   }
   else if (open[ 1 ] < close[ 1 ])
   {
       Print ( "Up" );
   }

return (rates_total);

Böyle bir kod, mum ne olursa olsun, sürekli olarak aynı mesajı üretir.
Döngü boyunca mumları bir şekilde yeniden hesaplamanız gerektiğini anlıyorum?
Lütfen bana iyi insanlar söyle!

 
Taras Slobodyanik :

Peki, neden böyle deneyimsiz bir programcıyla alay ediyorsun?

Ve kaçırılan geçmiş yüklenirse ve fark 1'den büyükse? Ama umursamıyoruz, peki, hadi bir çubuğu atlayalım ... sadece düşün, bir tane daha - bir tane eksik. Ve açıklama yapmadan, neden kodu veriyorsun? Sonunda ne olduğunu gördün mü?

 
Alexey Viktorov :

Peki, neden böyle deneyimsiz bir programcıyla alay ediyorsun?

Ve kaçırılan geçmiş yüklenirse ve fark 1'den büyükse? Ama umursamıyoruz, peki, hadi bir çubuğu atlayalım ... sadece düşün, bir tane daha - bir tane eksik. Ve açıklama yapmadan, neden kodu veriyorsun? Sonunda ne olduğunu gördün mü?

Alexey, nasıl doğru yapacağımı söyle. Rica ederim.
 
Alexey Viktorov :

Peki, neden böyle deneyimsiz bir programcıyla alay ediyorsun?

Ve kaçırılan geçmiş yüklenirse ve fark 1'den büyükse? Ama umursamıyoruz, peki, hadi bir çubuğu atlayalım ... sadece düşün, bir tane daha - bir tane eksik. Ve açıklama yapmadan, neden kodu veriyorsun? Sonunda ne olduğunu gördün mü?

açıkçası zhezh)

yüklenirse 1'den fazla olacaktır ve bu Yeni bir çubuk değildir , neden takip etsin, görevde öyle bir şey yok.

 
mr LSV :

Lütfen söyle bana, bir bar açarken, son kapanan mumun yönünü belirlemelisin.

Böyle bir kod, mum ne olursa olsun, sürekli olarak aynı mesajı üretir.
Döngü boyunca mumları bir şekilde yeniden hesaplamanız gerektiğini anlıyorum?
Lütfen bana iyi insanlar söyle!

çünkü parantez yok.

 if (rates_total - prev_calculated == 1 )
   {
   //Print("Новый бар");
   if (open[ 1 ] > close[ 1 ])
        {
         Print ( "Dn" );
        }
   else if (open[ 1 ] < close[ 1 ])
        {
         Print ( "Up" );
        }
   }
 
mr LSV :

doğru mu anladım

Evet doğru.

Bay LSV :

Mumun açılması 9-12 saniyelik bir gecikme ile gerçekleşir.
Lütfen söyle bana, bu ilk kene mi geliyor?

Yeni bir mumun ilk tıkında hesaplamalar yapmak ve herhangi bir işlem yapmak benim için son derece önemli.


Yalnızca ilk kene üzerinde yeni bir mum oluşur.

Kontrol etmek için kene isteyebilirsiniz

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
 {
   MqlTick tick[];
   if (prev_calculated > 0 && rates_total > prev_calculated)
   {
     if ( CopyTicks ( _Symbol , tick, COPY_TICKS_ALL , 0 , 2 ) <= 0 )
       Print ( "ERR " , GetLastError ());
     else
       ArrayPrint (tick);
   }

   return (rates_total);
 }

ve son onay işaretinin geçerli muma ait olduğunu ve bir önceki onay işaretinin önceki muma ait olduğunu görün.

 2021.06 . 02 17 : 50 : 59.311 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06 . 02 17 : 50 : 59.311 00 (EURUSD,M1)  [ 0 ] 2021.06 . 02 17 : 50 : 58 1.22005 1.22007 0.0000          0 1622656258958        4        0.00000
2021.06 . 02 17 : 50 : 59.311 00 (EURUSD,M1)  [ 1 ] 2021.06 . 02 17 : 51 : 00 1.22004 1.22010 0.0000          0 1622656260655        6        0.00000
2021.06 . 02 17 : 51 : 58.741 00 (EURUSD,M1)                   [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06 . 02 17 : 51 : 58.741 00 (EURUSD,M1)  [ 0 ] 2021.06 . 02 17 : 51 : 59 1.22021 1.22026 0.0000          0 1622656319887        6        0.00000
2021.06 . 02 17 : 51 : 58.741 00 (EURUSD,M1)  [ 1 ] 2021.06 . 02 17 : 52 : 00 1.22020 1.22025 0.0000          0 1622656320080        6        0.00000

İşte demomda açılışı gecikmeden alıyorum.

Ancak daha az sıvı bir çiftte 1 saniyelik bir gecikme var.

 2021.06 . 02 17 : 55 : 59.742 00 (CADJPY,M1)                   [time]  [bid]  [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2021.06 . 02 17 : 55 : 59.742 00 (CADJPY,M1)  [ 0 ] 2021.06 . 02 17 : 55 : 59 90.881 90.885    0.000          0 1622656559379        2          0.000
2021.06 . 02 17 : 55 : 59.742 00 (CADJPY,M1)  [ 1 ] 2021.06 . 02 17 : 56 : 01 90.882 90.887    0.000          0 1622656561076        6          0.000
 
Taras Slobodyanik :

açıkçası zhezh)

yüklenirse 1'den fazla olacaktır ve bu Yeni bir çubuk değildir , neden takip etsin, görevde öyle bir şey yok.

Yeni çubukla birlikte tarihin yüklenemeyeceği nerede yazıyor?
 
Taras Slobodyanik :

çünkü parantez yok

Yardım etmedi :(

 2021.06 . 02 17 : 54 : 09.465 Test (Volatility 10 Index,M1)      Up
2021.06 . 02 17 : 55 : 09.439 Test (Volatility 10 Index,M1)      Up
2021.06 . 02 17 : 56 : 09.686 Test (Volatility 10 Index,M1)      Up
2021.06 . 02 17 : 57 : 09.471 Test (Volatility 10 Index,M1)      Up
2021.06 . 02 17 : 58 : 09.586 Test (Volatility 10 Index,M1)      Up