错误、漏洞、问题 - 页 1718

 
如何在元编辑器中禁用Unicode保存?它需要ANSI。
 
fxsaber:
如何在元编辑器中禁用Unicode保存?它需要ANSI。

为什么有这种需要?

如果文本包含128-255范围内的字符,编辑器会自动以Unicode保存文件。

 
Alexey Da:

为什么有这种需要?

如果文本中的字符在128-255范围内,编辑器会自动以Unicode保存文件。

我的所有文件现在大了一倍。我在记事本中以ANSI格式保存它们--好的。之后我在元编辑器中打开并保存--又是unicode。

试着打开并保存这个附件文件

 
我有几个具有相同字符串的指标
#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中,并把它们链接到 "保存"。事实证明,这是不可能的--#属性只能在源mq5-文件中设置。

为什么有这样的限制?

 

我不能在私人信息 中添加附件。

至少有4.9Mb的ex4

 
fxsaber:
我有几个指标包含相同的字符串

决定把它们放在mqh中,并把它们连接到 "保存"。事实证明,这是不可能的--#属性只能在源mq5-文件中设置。

为什么有这样的限制?

事实上,这些属性是一个MQL指标项目 的属性。

目前,MQL程序的项目文件是*.mq5(4)源文件。
此外,用户可以使用可能包含这些属性的第三方*.mqh文件。
 
Alexey Da:

为什么有这种需要?

如果文本包含128-255范围内的字符,编辑器会自动以Unicode保存文件。

这是新的东西。为什么不从系统设置中提取单字节字符的编码?直到现在,这一直是默认的。

同样,可以做一个选项,让有需要的人可以启用两字节的格式。

 
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

你好!

我有一个问题,我不明白。

我在前两个柱状体的收盘点之间画了一条正常的趋势线(在每个新柱状体 上)。

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; 
     } 

一切都在实时工作中顺利进行。但在测试器的可视化模式中,线的左点是附着在参照物的起点上的,根本就没有移动。问题是什么?

Z.U. 我在MT4上似乎没有这个问题。


关于交易、自动交易系统和策略测试的论坛

虫子,虫子,问题

Alexey Kravchenko, 2016.10.04 09:57

这个例子有一个问题。在那里,bolt shell本身需要几个文件。我晚上回家后会做一个更简单的。

操作系统是WinXP SP3。建于1434年

LE 0 14:55:39.873 Terminal MetaTrader 5 build 1434 started (MetaQuotes Software Corp.)
DI 0 14:55:39.889 终端Microsoft Windows XP (基于X86的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

在任何情况下,okrozme那些我在上面给出的操作,其他的都没有做。当检测到一个新的条形图 时,所有的东西都被擦掉,并画出一条新的线。但是,一个完整的例子的编译我将做。


ж

 
Alexey Kravchenko:

完成了!我现在在Win764bit下,但问题还是一样。在实时情况下,一切都应该是这样的,但在可视化的测试器中,左边的线点粘得很牢,右边的线点却在移动。


鸣谢。测试器里有一些恶心的东西。