Hatalar, hatalar, sorular - sayfa 2906

 
İkinci gün sitede aramayı sürmez.
 

Durdurma ve almalar test sırasında çalışmaz. Ekran görüntüsü, yerleşik SL ve TP ile tetiklenmiş bir Satış Limiti örneğini gösterir, ancak durdurma (alma gibi) fiyatın gittiği her yerde çalışmaz. Nerede kazılır?

Dosyalar:
Screenshot_1.jpg  177 kb
 

Konumlar için POSITION_TIME_UPDATE özelliği vardır - son konum değişikliğinin zamanı.

Terminalde siparişler için böyle bir özellik bulunmamaktadır. Sunucuda biri var mı?


Borsada bir limit limitini değiştirmenin bir limit limitini yeniden ayarlamak anlamına geldiğini doğru anlıyor muyum: eskisini silip yenisini kurmak mı?

Öyleyse, değişiklik ORDER_TIME_SETUP değiştirmelidir. Ancak bu gerçekleşmez.

 

Eksik gösterge çizelgeleri

Oldukça sık, birkaç saatlik çalışmadan sonra gösterge tabloları kaybolur.

Verileri kurtarmak ve gösterge hesaplamalarını en aza indirmek için veri yükleme ve hesaplama aşamalarını kullanıyorum.

Gösterge tabloya yerleştirildiğinde tüm aşamalar normal şekilde işlenir .

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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[]  
)
{
   if (prev_calculated == 0 )
  {
     switch (mar_data.stage)
    {
       case LOAD_TICKS:
         if (LoadTicks(time) == true )
        {
           //--- 
          mar_data.stage = READ_PRIM_TICKS;
        }
         return ( 0 );
       break ;
       case READ_PRIM_TICKS:
         if (ReadPrimTicks() == true )
        {
           //---
          mar_data.stage = READ_SEC_TICKS;
        }  
         return ( 0 );
       break ;
       case READ_SEC_TICKS:
         if (ReadSecTicks() == true )
        {
           //---
          mar_data.stage = FILL_DATA;
        }  
         return ( 0 );
       break ;
       case FILL_DATA:
         //---
        FillData();
        mar_data.stage = LOAD_TICKS;
       break ;
    }
  } 
   else
  {
     //--- Live data ---
  }
   return (rates_total);
}

Son aşamada, göstergenin (kancalı) verileri yeniden yükleyebilmesi için ilk aşama atanır .

mar_data.stage = LOAD_TICKS;

Ancak gösterge sıfırlandığında veriler geri yüklenmez.

İşlev

 //+------------------------------------------------------------------+
//| Custom indicator Load ticks function                             |
//+------------------------------------------------------------------+
bool LoadTicks( const datetime &a_times[])
{
   int result = CopyTime ( Symbol (), PERIOD_M1 , start_time, end_time, mar_data.time_array);
   if (result > 0 )
  {
     if (mar_data.time_array[result - 1 ] == a_times[ ArraySize (a_times) - 1 ])
    {
      mar_data.b_cnt = result;
      result = CopyTicksRange ( Symbol (), mar_data.pr_ticks, COPY_TICKS_INFO , ulong (start_time) * 1000 , ulong (end_time) * 1000 );
       if (result > 0 )
      {
         if (mar_data.pr_ticks[result- 1 ].time >= mar_data.time_array[ ArraySize (mar_data.time_array) - 1 ]) 
        {
          mar_data.pr_cnt = result;
           datetime sec_time_array[];
          result = CopyTime (sec_symbol, PERIOD_M1 , start_time, end_time, sec_time_array);
           if (result > 0 )
          {
            result = CopyTicksRange (sec_symbol, mar_data.sec_ticks, COPY_TICKS_INFO , ulong (start_time) * 1000 , ulong (end_time) * 1000 );
             if (result > 0 )
            {
               if (mar_data.sec_ticks[result- 1 ].time >= sec_time_array[ ArraySize (sec_time_array) - 1 ])
              {
                mar_data.sec_cnt = result;
                 return ( true );
              } else Print ( "Не хватает тиков " , sec_symbol, "!" );
            } else Print ( "Не получены тики по символу " , sec_symbol, "!" );
          } else Print ( "Не скопировано время баров по символу " , sec_symbol, "!" );
        } else Print ( "Не хватает тиков " , Symbol (), "!" ); 
      } else Print ( "Не получены тики по символу " , Symbol (), "!" );
    } else Print ( "Не хватает баров по символу " , Symbol (), "!" );
  } else Print ( "Не скопировано время баров по символу " , Symbol (), "!" );
   return ( false );
}

sadece bunu verir

"BR-1.21 sembolündeki çubukların zamanı kopyalanmadı!"

Ve sonra hiçbir şey olmuyor.

Sonuçta, LoadTicks()'e bir çağrı var, bu nedenle, göstergeyi yüklerken olduğu gibi tüm aşamalar tekrarlanmalıdır.

Sevgili geliştiriciler, gösterge neden çalışmayı durduruyor?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт, сервис и эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 
fxsaber :
İkinci gün sitede aramayı sürmez.

Arama tabanı çok daraldı. pek bulmaz.

 
 
fxsaber :
Bir pozisyonun/emrin son değişikliğinin zamanı nasıl bulunur?

POSITION_TIME_UPDATE

 
Igor_Gagarin :

POSITION_TIME_UPDATE

Bu, son hacim değişikliğinin zamanıdır. Ağın yankısı.

 
fxsaber :

Bu, son hacim değişikliğinin zamanıdır. Ağın yankısı.

Pozisyon açılış zamanı sorunları. Ne hakkında soruyorsun?