Сдаюсь ! - страница 2

 
Maxim Kuznetsov:

// смотреть тут

string s=StringTrimLeft("   кто то из нас не прав  ");

и справку заодно

я в мт4, друг !

Удаляет символы перевода каретки, пробелы и символы табуляции с начала строки до первого значимого символа.

string  StringTrimLeft(
   const string  text      // строка
   );

а ты в мт5 !

мы оба правы ! но как же так - оба правы ? и ты прав ...

 
Denis Sartakov:

Кидай больше

void OnStart()
  {
//---
   int z;
   for (int i=0; i<10000; i++)
      { 
      z=1+(i&1)*10;
      
      string s_Symbol = Symbol();
      string s_EA_Name = MQLInfoString(MQL_PROGRAM_NAME);
      string s_MagicChartIDSuffix = "MagicChart";
      string s_GlobalMagicChartID  = s_EA_Name + "-" + s_MagicChartIDSuffix + "-" + IntegerToString(z) + "-" + s_Symbol + "-" + IntegerToString(Period());
      if (ChartSaveTemplate(0,s_GlobalMagicChartID))
         {
         }
         Comment(z); Sleep(10);
      }
  Comment(z); //последний z нечетный он будет равен 11
       
  }

Простите меня если вы решили во время работы заглянуть в Шаблоны.....    

Это суровая шутка про шаблоны, рекомендую поставить слип на ноль. В общем ошибок не обнаружен даже при 10 000 проверок. у вас где то что то в другом месте.

Мне честно не лень, множите прислать весь терминал с файлом - я посмотрю

 

вот

 
Alexandr Andreev:

вот

а вот мне этот скрипт выдает

 

вот скрипт, для М1 и М5 имя шаблона усекается...терминал 1280

//+------------------------------------------------------------------+
//|                                              Test.mq4            |
//|                   Copyright 2006-2015, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright   "2006-2015, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property strict
#property show_inputs

void OnStart()
{
   string s_Symbol = Symbol();
   string s_EA_Name = "eStomper_02";
   string s_MagicChartIDSuffix = "MagicChart";
   int i_Magic = 1;
   string s_GlobalMagicChartID;
   s_GlobalMagicChartID = StringConcatenate(s_EA_Name,"-",s_MagicChartIDSuffix,"-",i_Magic,"-",s_Symbol,"-",_Period);
   if(ChartSaveTemplate(0,s_GlobalMagicChartID))
   {
      Print("s_GlobalMagicChartID=",s_GlobalMagicChartID);     
   }
   else
   {
      Print(__FUNCTION__," Couldnot Save template : " + s_GlobalMagicChartID + ".tpl" + "Error = " + GetLastError());
      return;
   }
}
//+------------------------------------------------------------------+
Файлы:
Test.mq4  3 kb
 
Denis Sartakov:

вот скрипт, для М1 и М5 имя шаблона усекается...терминал 1280

Нормально сохраняет:

Возможно, в каких-то специфических случаях StringConcatenate неправильно преобразовывает числовые значения в строку. На мой взгляд лучше использовать преобразование типов (не приведение) и складывать строки через "+".

P. S. Очень похоже на распространенную ошибку потери одного символа (если что, то это камень в огород ChartSaveTemplate). Сам периодически сталкиваюсь с неправильным расчетом длины строки (забываю про терминальный 0), что приводит к пропаже одного символа.

 
Ihor Herasko:

Нормально сохраняет:

Возможно, в каких-то специфических случаях StringConcatenate неправильно преобразовывает числовые значения в строку. На мой взгляд лучше использовать преобразование типов (не приведение) и складывать строки через "+".

P. S. Очень похоже на распространенную ошибку потери одного символа (если что, то это камень в огород ChartSaveTemplate). Сам периодически сталкиваюсь с неправильным расчетом длины строки (забываю про терминальный 0), что приводит к пропаже одного символа.

в общем мистика, у меня не нормально !

ладно, придумаю какой-то костыль.

а у тебя  терминал 1280 ?

 
Denis Sartakov:

в общем мистика, у меня не нормально !

ладно, придумаю какой-то костыль.

а у тебя  терминал 1280 ?

Да, 1280. Попробуй еще запустить терминал с ключом portable, поставив сам терминал в папку с как можно меньшей длиной пути. Может в этом проблема.

 
Ihor Herasko:

Да, 1280. Попробуй еще запустить терминал с ключом portable, поставив сам терминал в папку с как можно меньшей длиной пути. Может в этом проблема.

ну их в баню ! 

сделал вот так и все нормально:

   string s_Period = _Period;
   if (s_Period == "1" || s_Period == "5")
   {
      s_Period = "0" + s_Period;
   }
   mss_GlobalMagicChartID  = ms_EA_Name + "-" + mss_MagicChartIDSuffix + "-" + IntegerToString(mi_Magic) + "-" + s_Symbol + "-" + s_Period;
 
Denis Sartakov:

ну их в баню ! 

сделал вот так и все нормально:

Ну хотя бы так:

string s_Period = IntegerToString(_Period);

А то уж совсем некрасиво...