Özel semboller. Hatalar, hatalar, sorular, öneriler. - sayfa 31

 

Biriyle yüzlerce özel sembolü paylaşmak için bir mekanizma var mı?

Geçmişi aktarmak kolaydır - sadece Özel klasörü kopyalamanız yeterlidir. Ancak karakterlerin özellikleri net değil.

 
fxsaber :

Biriyle yüzlerce özel sembolü paylaşmak için bir mekanizma var mı?

Geçmişi aktarmak kolaydır - sadece Özel klasörü kopyalamanız yeterlidir. Ancak karakterlerin özellikleri belirsizdir.

Bu, boşaltma/yükleme için kendi kendine yazılmış bir komut dosyası önerir. Düzenli ihracat / ithalat için beklemezdim.

 
Andrey Khatimlianskii :

Bu, boşaltma/yükleme için kendi kendine yazılmış bir komut dosyası önerir. Düzenli ihracat / ithalat için beklemezdim.

İlk bakışta basit görünse de, bisiklet oldukça fazla çaba gerektirir. Bir sembolün özelliklerini ayarlamak için doğru sırayı bilmeniz gerekir. Artı fiyat teklifi/ticaret oturumları ile ilgili sorunlar.

Onlar. hata ayıklamak ve hata ayıklamak için sıkıcı olması gerekir.

 

Yeni bir grafikte özel keneleri doldurmakta sorun yaşıyorum. Farklı bir zamanla yeni bir sembol grafiği oluşturmaya çalışıyorum.

Ancak para birimi sembolündeki işaretleri doldurmakta her zaman sorun yaşıyorum.

İşte kod:

 //+------------------------------------------------------------------+
//|                                         Forward_Ticks_Sample.mq5 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 0

#include "Includes//Symbol.mqh"

string    g[];
int       total_len_history = 0 ,
         initialization_flag,
         symbol_history_wiped_clean,
         len_sym = StringSplit ( Symbol (), '_' ,g);
string    Orig_Symbol_Name = g[ 0 ],
         symbol_custom= StringFormat ( "%s_frd" ,Orig_Symbol_Name);
datetime Let_start = 0 ;
bool      alert_once,
         commentplaced;
long      time_msc = long (Let_start)* 1000 ,
         tick_chart_id;
ulong     LastTime_Added;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   ResetLastError ();
   string name = MQLInfoString ( MQL_PROGRAM_NAME );
   IndicatorSetString ( INDICATOR_SHORTNAME , name);
   ResetLastError ();

   Close_All_Symbols_Charts(symbol_custom);

   MqlTick tick;

   while ( SymbolInfoTick (Orig_Symbol_Name, tick) == false )
     {
       Sleep ( 1000 );
     }

   alert_once = false ;

   tick_chart_id = 0 ;

   symbol_history_wiped_clean = Remove_Symbol_From_MarketWatch_Delete_History(symbol_custom);

   alert_once = true ;
   initialization_flag = INIT_FAILED ;

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   ResetLastError ();
   MqlTick tick, ticks[];

   if (symbol_history_wiped_clean == false )
     {
      Close_All_Symbols_Charts(symbol_custom);

      symbol_history_wiped_clean = Remove_Symbol_From_MarketWatch_Delete_History(symbol_custom);

       if (symbol_history_wiped_clean == false )
         return 0 ;
     }

   if (symbol_history_wiped_clean == true &&
      initialization_flag == INIT_FAILED
     )
     {
      Alert_me();
       if (Fill_ReFill_Custom_Symbol(symbol_custom) == - 1 )
         return 0 ;
      initialization_flag = INIT_SUCCEEDED ;
       Print ( "History Filled Successfully." );
       Comment ( "" );
       return rates_total;
     }

   SymbolInfoTick (Orig_Symbol_Name, tick);

//if(tick.time_msc != LastTime_Added)
     {
       ulong tick_count = tick.time_msc - LastTime_Added;
       uint get_count = uint ( MathAbs ( double (tick_count)));

       int len = CopyTicks (Orig_Symbol_Name, ticks, COPY_TICKS_ALL , LastTime_Added, get_count);

       if (len <= 2 )
         return rates_total;

       ulong last_time = ticks[len - 1 ].time_msc;

       if (len > 5 )
        {
         commentplaced = true ;
         ChartSetString (tick_chart_id, CHART_COMMENT , "Please wait while we retrieve ticks........" );
        }

       int filled = Tick_Filling_Logic(ticks, len);

       if (commentplaced == true && filled > 0 )
        {
         if (last_time + 60 > ulong ( TimeCurrent ()))
           {
             ChartSetString (tick_chart_id, CHART_COMMENT , "" );
             Comment ( "" );
            commentplaced = false ;
           }
        }

       if (tick_chart_id <= 0 )
        {
         tick_chart_id = ChartOpen (symbol_custom, PERIOD_M1 );
        }
     }

   return rates_total;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Close_All_Symbols_Charts( string local_symbol)
  {
   tick_chart_id = 0 ;
   ResetLastError ();
   for ( long chartid = ChartFirst (); chartid != - 1 && ! IsStopped (); chartid = ChartNext (chartid))
     {
       string name = ChartSymbol (chartid);

       if ( StringFind (name, local_symbol) < 0 )
         continue ;

       if (! ChartClose (chartid))
         Print ( "Cannot close Chart Symbol: " , name, " Period: " , EnumToString ( ChartPeriod (chartid)));
     }
   Sleep ( 1000 );
  }
//+------------------------------------------------------------------+
bool Remove_Symbol_From_MarketWatch_Delete_History( string local_symbol)
  {
   ResetLastError ();

   Sleep ( 10 );
   const SYMBOL SYMB(local_symbol);

   bool custom = true ;
   bool status = SYMB.IsExist(); //SymbolExist(local_symbol, custom);

   if (status == false )
       return true ;

   if (SYMB.Off() == false )
     {
       Print ( "Cannot UnSelect the Symbol " , local_symbol, " because: " , GetLastError ());
       Sleep ( 5000 );
     }

   Print ( __FUNCTION__ , " : Error = " , GetLastError ());

   if ( CustomTicksDelete (local_symbol, 0 , LONG_MAX ) <= 0 )
       Print ( "Cannot Delete Custom Ticks: " , GetLastError ());

   return true ;
  }
//+------------------------------------------------------------------+
int Fill_ReFill_Custom_Symbol( string local_symbol)
  {
   ResetLastError ();
   total_len_history = 0 ;
   alert_once = false ;
   commentplaced  = false ;
   LastTime_Added = 0 ;

   Comment ( "Refreshing the Tick Chart. Please Wait." );

   MqlDateTime str;
   TimeToStruct ( iTime (Orig_Symbol_Name, 0 , 0 ) - 30 * 86400 , str);
   Comment ( "" );
   datetime start_date = datetime ( StringFormat ( "%d.%d.01 00:00:00" ,str.year,str.mon));
   const SYMBOL SYMB(local_symbol);
   SYMB.CloneProperties(Orig_Symbol_Name);


   MqlTick ticks_add[];

   ulong time_start = GetMicrosecondCount ();

   ResetLastError ();

   if (LastTime_Added == 0 )
      LastTime_Added = ulong (start_date) * 1000 ;

   int len = CopyTicksRange (Orig_Symbol_Name,
                            ticks_add,
                             COPY_TICKS_ALL ,
                            LastTime_Added,
                             ulong ( TimeCurrent ()) * 1000
                           );

   if (len<= 0 )
     {
       string error;
       if ( GetLastError () == 4401 )
         error = "ERR_HISTORY_NOT_FOUND" ;
       else
         error = string ( GetLastError ());
       Print ( "------------------------------------------------------------------" );
       Print ( "History Tick Length: " , len, " Error: " , error);
       Print ( "------------------------------------------------------------------" );
       Sleep ( 5000 );
       // Print("Waited for 10000 milliseconds. Still no history found.");
       return - 1 ;
     }

   Let_start = 0 ;
   time_msc = long (Let_start)* 1000 ;

   int total = Tick_Filling_Logic(ticks_add, len);

   if (total <= 0 )
     {
      SYMB.Off();
       CustomSymbolDelete (local_symbol);
       return - 1 ;
     }

   if ( GetLastError () == 4403 )
     {
       Sleep ( 2000 );
       Print ( "History Failed to Retrieve." );
      len = - 1 ;
       return len;
     }

   Print ( "Gathering Ticks from : " , iTime (Orig_Symbol_Name, 0 , 0 ) - 30 * 86400 , " To: " , TimeCurrent ());
   Print ( "Symbol Working :" ,SYMB.On());
   Print ( "Ticks: " ,len);
   Print ( "Started : " ,ticks_add[ 0 ].time, "  Ended : " ,ticks_add[len- 1 ].time);
   Print ( "Error Found: " , GetLastError ());
   Print ( "Ticks Filled: " , total);

   Print ( "Time Required for completion: " ,( GetMicrosecondCount ()-time_start)/ 1000000 );
   Print ( "Started : " ,ticks_add[ 0 ].time, "  Ended : " ,ticks_add[len- 1 ].time);
   Print ( "History Loaded!!!!" );
   Print (Let_start);

   Comment ( "" );
   ChartSetString (tick_chart_id, CHART_COMMENT , "" );

   return len;
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int r)
  {
   EventKillTimer ();
  }
//+------------------------------------------------------------------+
void Alert_me()
  {
   if (alert_once == false )
       return ;
   Alert (symbol_custom, " : Please Wait for Chart Refresh" );
  }
//+------------------------------------------------------------------+
int Tick_Filling_Logic( MqlTick & ticks_add[],
                       int len)
  {
   ResetLastError ();

   long last = ticks_add[len - 2 ].time_msc,
        time_msc_local = time_msc;
   datetime Let_start_local = Let_start;
   int total_len_history_local = total_len_history;

   for ( int i= 0 ; i < len - 1 && ! IsStopped (); i++)
     {
       if (i == 0 || (i > 0 && iBarShift (Orig_Symbol_Name, PERIOD_M1 , ticks_add[i].time) > iBarShift (Orig_Symbol_Name, PERIOD_M1 , ticks_add[i + 1 ].time)))
        {
         Let_start_local = datetime ( TimeToString (Let_start_local, TIME_DATE | TIME_MINUTES ))
                           + 60 ;
         MqlDateTime tt1;
         TimeToStruct (Let_start_local, tt1);
         if (tt1.day_of_week == 0 )
           {
            Let_start_local = Let_start_local + 86400 ;
           }
         else
             if (tt1.day_of_week == 6 )
              {
               Let_start_local = Let_start_local + 86400 * 2 ;
              }
         time_msc_local = long (Let_start_local)* 1000 ;
        }
       else
        {
         if (ticks_add[i].time == ticks_add[i + 1 ].time)
            time_msc_local = time_msc_local + 1 ;
         else
           {
            Let_start_local = Let_start_local + 1 ;
            time_msc_local = long (Let_start_local)* 1000 ;
           }
        }
      ticks_add[i].time       = Let_start_local;
      ticks_add[i].time_msc   = time_msc_local;
      total_len_history_local = total_len_history_local + 1 ;
     }
   int total = CustomTicksAdd (symbol_custom, ticks_add);

   if (total <= 0 )
     {
       Print ( "Tick Not added : " , GetLastError ());
      total = CustomTicksReplace (symbol_custom, ticks_add[ 0 ].time_msc, ticks_add[len - 1 ].time_msc, ticks_add, len);
     }

   if (total == len)
     {
      LastTime_Added    = last;
      Let_start         = Let_start_local;
      time_msc          = time_msc_local;
      total_len_history = total_len_history_local;
     }
   else
     {
       Print ( "Tick not replaced : " , GetLastError (), " " , len, " = len but filled = " , total, " in " , symbol_custom);
     }
   return total;
  }
//+------------------------------------------------------------------+

Bağımlılık dosyasını ekledim.

Bu hatayı alıyorum:

Lütfen sorunu ve düzgün çalışması için tam olarak ne yapmam gerektiğini bulmama yardım edin.

Hata, yapıdaki onay kutularını doldurmadığım anlamına geliyor. Ama öyleyse, önceki mumlar nasıl mükemmel görünüyordu?

P

Dosyalar:
Symbol.mqh  7 kb
 
jaffer wilson :

Yeni bir grafikte özel keneleri doldurmakta sorun yaşıyorum. Farklı bir zamanla yeni bir sembol grafiği oluşturmaya çalışıyorum.

Ancak para birimi sembolündeki işaretleri doldurmakta her zaman sorun yaşıyorum.

İşte kod:

Bağımlılık dosyasını ekledim.

Bu hatayı alıyorum:

Lütfen sorunu ve düzgün çalışması için tam olarak ne yapmam gerektiğini bulmama yardım edin.

Hata, yapıdaki onay kutularını doldurmadığım anlamına geliyor. Ama öyleyse, önceki mumlar nasıl mükemmel görünüyordu?

P

Lütfen özel karakter kodumla bana yardım edin. Buna takıldım ve müvekkilim kızgın.

 
Herhangi bir yardım lütfen: https://www.mql5.com/ru/forum/372451
Имеется проблема обновления OHLC в CustomSymbol
Имеется проблема обновления OHLC в CustomSymbol
  • 2021.07.01
  • www.mql5.com
Я пробовал следующий код: Но всегда есть обновление, написанное на диаграмме. Плюс название символа другое в окне спецификации...
 

Bugün terminali açtım, 2994 güncellemesini indirdim, MT5 yeniden başlatıldı. Bakıyorum, birçok özel karakter de dahil olmak üzere tüm karakterler kayboldu.

bases\Custom klasöründe özel semboller için .hc, .hcc, .tkc veri dosyalarına sahip geçmiş ve ticks klasörleri var, bunları şimdi nasıl kullanabilirim?

Koruma! Gerçekten özel semboller, içe aktarma geçmişi vb. Yeniden oluşturmanız gerekiyor mu????

 
Sunriser :

Bugün terminali açtım, 2994 güncellemesini indirdim, MT5 yeniden başlatıldı. Bakıyorum, birçok özel karakter de dahil olmak üzere tüm karakterler kayboldu.

bases\Custom klasöründe özel semboller için .hc, .hcc, .tkc veri dosyalarına sahip geçmiş ve ticks klasörleri var, bunları şimdi nasıl kullanabilirim?

Koruma! Gerçekten özel semboller, içe aktarma geçmişi vb. Yeniden oluşturmanız gerekiyor mu????

Özel klasörünü başka bir konuma taşımayı deneyebilir ve geçmiş olmadan sembolleri - özellikleri yeniden oluşturabilirsiniz. Ardından Terminal'den çıkın, Özel klasörünü geri kopyalayın ve Terminal'i başlatın . Tarih almak zorunda kalacak.


ZY, Terminal'den sembollerin json ayarlarını yedekler. Yanlışlıkla silinen veya başka bir pislik - yedekleme ile geri yüklendi.

 
fxsaber :

Özel klasörü başka bir konuma taşımayı deneyebilir ve geçmiş olmadan sembolleri - özellikleri yeniden oluşturabilirsiniz. Ardından Terminal'den çıkın, Özel klasörünü geri kopyalayın ve Terminal'i başlatın . Tarih almak zorunda kalacak.


ZY, Terminal'den sembollerin json ayarlarını yedekler. Yanlışlıkla silinen veya başka bir pislik - yedekleme ile geri yüklendi.

İşe yaradı. Zamandan tasarruf ettiğiniz için teşekkürler!

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Özel Sybmol: HATA 5308

Karanlık Yolculuk3r , 2021.06.24 09:55

Özel bir sembol için SYMBOL_VOLUME_MIN ayarlamaya çalışıyorum ama ERROR 5308 döndürüyor

Diğer seçeneklerin iyi çalıştığını tamamen doğruladım, ancak yalnızca değeri döndürerek çift olarak ayarladığım SYMBOL_VOLUME_MIN

ERR_CUSTOM_SYMBOL_PARAMETER_ERROR 5308

bu yüzden sistemde bir hata olduğunu düşünüyorum ve düzeltilmesi için rapor edilmesi gerekiyor

Bu , bir sembol oluşturmak ve şu özelliği ayarlamak için kullandığım yöntemdir: özel bir sembol için SYMBOL_VOLUME_MIN.

(SetProperty(SName, SYMBOL_VOLUME_MIN , 0.001 , "" )