Ошибки, баги, вопросы - страница 1718

 
Как в метаэдиторе отключить сохранение в юникоде? Нужен ANSI.
 
fxsaber:
Как в метаэдиторе отключить сохранение в юникоде? Нужен ANSI.

Почему такая потребность?

Редактор автоматически сохраняет файлы в юникод, если в тексте есть символы из диапазона 128-255.

 
Alexey Da:

Почему такая потребность?

Редактор автоматически сохраняет файлы в юникод, если в тексте есть символы из диапазона 128-255.

У меня все файлы теперь в два раза больше. Сохраняю их в notepad в ANSI - норм. Открываю в метаэдиторе после этого и сохраняю - снова юникод.

Попробуйте открыть и сохранить этот приложенный файл

 
У меня несколько индикаторов содержат одни и те же строчки
#property indicator_separate_window

#property indicator_plots 1
#property indicator_buffers 1

#property indicator_type1 DRAW_LINE
#property indicator_style1 STYLE_SOLID
#property indicator_color1 clrRed

Решил вынести их в mqh и заинклудить для "экономии". Оказывается, этого делать нельзя - #property могут задаваться только в исходном mq5-файле.

Зачем такое ограничение? 

 

Не прикрепляются вложения в личных сообщениях.

По-крайней мере ex4 размером 4.9 Mb

 
fxsaber:
У меня несколько индикаторов содержат одни и те же строчки

Решил вынести их в mqh и заинклудить для "экономии". Оказывается, этого делать нельзя - #property могут задаваться только в исходном mq5-файле.

Зачем такое ограничение? 

По своей сути, данные свойства - это свойства проекта MQL индикатора.

На данный момент, файлом проекта MQL программы является исходный файл *.mq5(4).
Помимо этого, пользователи могут использовать сторонние *.mqh файлы, в которых могут оказаться данные свойства.
 
Alexey Da:

Почему такая потребность?

Редактор автоматически сохраняет файлы в юникод, если в тексте есть символы из диапазона 128-255.

Это что-то новенькое. Почему не брать кодировку для однобайтных символов из настроек системы? Это ведь делалось по-умолчанию до сих пор.

Опять-таки можно было сделать опцию, чтобы те, кому нужно, могли бы включить двухбайтный формат.

 
Ilyas:
Помимо этого, пользователи могут использовать сторонние *.mqh файлы, в которых могут оказаться данные свойства.

Задать-то их можно в mqh, только они восприниматься не будут - как будто их нет.

 
Karputov Vladimir:
Когда будет пример - совместим всё в один пост: проблема, пример, данные операционки и терминала.

Готово ! Правда я сейчас под Win764bit но проблема все та же. В риалтайм все как надо а вот в тестере в визуале левая точка линии залипает намертво а правая двигается.

datetime prevtime=0,
         time_last_bar[1]={0};

bool    New_Bar=false;      // Флаг нового бара
                 
const long            chart_ID=0;        // ID графика 
const string          nname="TrendLine";  // имя линии 
const int             sub_window=0;      // номер подокна 
datetime              time1=0;           // время первой точки 
double                price1=0;          // цена первой точки 
datetime              time2=0;           // время второй точки 
double                price2=0;          // цена второй точки 
datetime prevbar=0;
double cclose[];
datetime ttime[];

//--------------------------------------------------------------------
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   New_Bar=false;                               // Нового бара нет
   
   CopyTime(Symbol(),Period(),0,1,time_last_bar);
   
   if(time_last_bar[0] != prevtime)                        // Сравниваем время
     {
      prevtime = time_last_bar[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }


//=============================================================================================================
int OnInit()
  {
    
   CopyTime(Symbol(),Period(),0,1,time_last_bar);
   prevtime = time_last_bar[0];
ArraySetAsSeries(cclose,true);
ArraySetAsSeries(ttime,true);  
ArrayResize(cclose,5);
ArrayResize(ttime,5);   
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {  
   ObjectsDeleteAll(0," ",-1,-1);
   Print("------------Работа эксперта завершена!------------"); 
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 Fun_New_Bar();                               // Обращение к ф-ии
 if (New_Bar==false)                          // Если бар не новый..
    return;                                   // ..то уходим
 Print("новый бар !");  

ObjectsDeleteAll(0," ",-1,-1);
ArrayInitialize(cclose,0);
ArrayInitialize(ttime,0);
CopyTime(Symbol(),0,1,2,ttime);
CopyClose(Symbol(),0,1,2,cclose);
price1=cclose[1];
time1=ttime[1];
price2=cclose[0];
time2=ttime[0];

Print("price1=",price1," time1=",time1," price2=",price2," time2=",time2);

//--- создадим трендовую линию по заданным координатам 
   if(!ObjectCreate(chart_ID,nname,OBJ_TREND,sub_window,time1,price1,time2,price2)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать линию тренда! Код ошибки = ",GetLastError()); 
      return; 
     } 


} 
 //--------------------------------------------------------------------------------


 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alexey Kravchenko, 2016.10.04 09:09

Здравствуйте !

Проблема не понятная обнаружилась.

Рисую обычную TrendLine между точками закрытия двух предыдущих баров (на каждом новом баре).

ObjectsDeleteAll(0," ",-1,-1);
ArrayInitialize(cclose,0);
ArrayInitialize(ttime,0);
CopyTime(Symbol(),0,1,2,ttime);
CopyClose(Symbol(),0,1,2,cclose);
price1=cclose[1];
time1=ttime[1];
price2=cclose[0];
time2=ttime[0];

Print("price1=",price1," time1=",time1," price2=",price2," time2=",time2);

//--- создадим трендовую линию по заданным координатам 
   if(!ObjectCreate(chart_ID,nname,OBJ_TREND,sub_window,time1,price1,time2,price2)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать линию тренда! Код ошибки = ",GetLastError()); 
      return; 
     } 

В реалтайм все работает отлично. А вот в режиме визуализации в тестере левая точка линии прицепляется к началу отсчета и не двигается вообще. В чем проблема может кто знает ?

З.Ы. В MT4 такой проблемы вроде не возникало.


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alexey Kravchenko, 2016.10.04 09:57

С примером проблемка. Там сама болванка-оболочка несколько файлов занимает. Вечером доберусь до дома слеплю попроще.

ОС WinXP SP3. Build 1434

LE    0    14:55:39.873    Terminal    MetaTrader 5 build 1434 started (MetaQuotes Software Corp.)
DI    0    14:55:39.889    Terminal    Microsoft Windows XP (X86 based PC), IE 08.00, Intel Pentium Dual  E2200 @ 2.20GHz, RAM: 1150 / 2037 Mb, HDD: 74562 / 152625 Mb, GMT+07:00

LJ    0    14:55:39.889    Terminal    C:\Program Files\MetaTrader 5

З.Ы. В любом случае окромя тех манипуляций которые я привел выше больше ничего не делается. При обнаружении нового бара все стирается и отрисовывается новая линия. Но полностью пример для компиляции я сделаю.


ж

 
Alexey Kravchenko:

Готово ! Правда я сейчас под Win764bit но проблема все та же. В риалтайм все как надо а вот в тестере в визуале левая точка линии залипает намертво а правая двигается.


Подтверждаю. В тестере есть какая-то бяка.
Причина обращения: