错误、漏洞、问题 - 页 2031

 
Andrey Barinov:

阅读关于类型转换和这样做的损失。https://www.mql5.com/ru/docs/basis/types/casting


谢谢你!这个想法是这样的:我们有一个指标,它给出的准确信号很少。

打开任何数量的图表,根据MM和指标信号,开立头寸。我们在图表上创建文本标记或按钮,表明符号和未结头寸的当前利润。当你点击该按钮时,所需的图表就在前台。

 
Metaquotes-Demo上的外汇报价来源是否有变化?差价要小得多。
 
Slava:
四人组?

 
在执行以下命令时,没有出现编译错误,而是出现了奇怪的行为
// Запускаем на MT5

#import "Temp.ex4" // EX4 - не ошибка
  void Func();
#import

void OnInit()
{
  Func();
}

不是普通的DLL,甚至不是Temp.ex4!

 
Vitaly Muzichenko:

问题是,在新的MQL4中,字符串是unicode。在所有其他地方:对象、指标、图表、符号名称、日志、设置,等等。- 字符串仍为unicode。因此,在MQL4程序中与 "外部世界 "进行通信时,每次都要进行WideCharToMultiByte转换。在正常情况下,字符串的字符是单字节的(但在不同的编码中有所不同),在东南亚是多字节的(在中文布局中,一个字符需要1到4个字节)。

因此,不仅是中国人,欧洲人也不会理解1251代码页。

 
Slava:

问题是,在新的MQL4中,字符串是unicode。在所有其他地方:对象、指标、图表、符号名称、日志、设置,等等。- 字符串仍为unicode。因此,在MQL4程序中与 "外部世界 "进行通信时,每次都要进行WideCharToMultiByte转换。在通常情况下,字符串的字符是单字节的(但在不同的编码中有所不同),在东南亚是多字节的(在中文布局中,一个字符需要1到4个字节)。

因此,不仅是中国人,欧洲人也不会理解1251代码页。

技巧是这样的:我们创建了一个有西里尔文名字的对象,然后在点击时在OnChartEvent 中处理它,但它的名字在那里是不可见的。

我们今天会在五号检查,看看这个地方会不会有问题。

 
Vitaly Muzichenko:

事情是这样的:我们创建了一个名字为西里尔文的对象,然后在点击时在OnChartEvent 中处理它,但你在那里看不到它的名字。

今天我们将在FIVE检查,看看这个地方是否会有问题。

它将在Fiver中发挥作用。

而在《第四纪》中,对你的情况有一个解决方案。

在OnInit中调用MQLSetInteger(MQL_CODEPAGE,CP_ACP)。

那么 "来回 "的字符串转换将是充分的


MQLSetInteger - Проверка состояния - Справочник MQL4
MQLSetInteger - Проверка состояния - Справочник MQL4
  • docs.mql4.com
Функция MQLSetInteger() предназначена для изменения текущей кодовой страницы в запущенной mql4-программе. Это может понадобиться в тех случаях, когда для запускаемых mql4-программ терминал устанавливает по умолчанию кодовую страницу, отличающаяся от той, которая использовалась при её компиляции. Например, mql4-программа скомпилирована на...
 
如果你知道我做错了什么,请告诉我:

这段代码在欧元兑美元30米上运行

#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0
ENUM_MA_METHOD     MA_Type   = MODE_SMA;
ENUM_APPLIED_PRICE MA_Price  = PRICE_CLOSE;
int handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
   handle = iMA("AAPL",_Period, 10,0,MA_Type,MA_Price);

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
{

   return(rates_total);
}
//+------------------------------------------------------------------+


终端产生了一个错误。
2017.10.11 14:35:23.352 11111111111111111111 (EURUSD,M30) 无法加载指标 "移动平均线" [4302]

当我把它打印出来时,它生成了-1。

 
Money_Man:
请告诉我我做错了什么。

此代码在EURUSD 30m上运行



终端给出一个错误。
2017.10.11 14:35:23.352 11111111111111111111 (EURUSD,M30) 无法加载指标 "移动平均线" [4302]



就这样。

   handle = iMA(Symbol(),Period(), 10,0,MA_Type,MA_Price);

?

 
Money_Man:
请告诉我我做错了什么。

此代码在EURUSD 30m上运行



,终端给出一个错误。
2017.10.11 14:35:23.352 11111111111111111111 (EURUSD,M30) 无法加载指标 "移动平均线" [4302]


错误4302是什么意思?