Errores, fallos, preguntas - página 2031

 
Andrey Barinov:

Lea sobre la conversión de tipos y las pérdidas al hacerlo. https://www.mql5.com/ru/docs/basis/types/casting


Gracias. La idea es la siguiente: tenemos un indicador que da pocas señales precisas.

Abra cualquier número de gráficos y, según la MM y la señal del indicador, abra posiciones. Creamos marcas de texto o botones en el gráfico indicando el símbolo y el beneficio actual de las posiciones abiertas. Al hacer clic en el botón, el gráfico deseado aparece en primer plano.

 
¿Ha cambiado la fuente de las cotizaciones FOREX en Metaquotes-Demo? Los márgenes son mucho más pequeños.
 
Slava:
¿Un cuarteto?

 
En lugar de un error de compilación, hay un comportamiento extraño al ejecutar
// Запускаем на MT5

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

void OnInit()
{
  Func();
}

No cualquier DLL, ni siquiera Temp.ex4.

 
Vitaly Muzichenko:

El problema es que en el nuevo MQL4 las cadenas son unicode. En todos los demás lugares: objetos, indicadores, gráficos, nombres de símbolos, registros, ajustes, etc. - las cadenas siguen siendo unicode. Por lo tanto, al comunicarse con el "mundo exterior" en los programas MQL4, cada vez que se realiza la conversión WideCharToMultiByte. Normalmente, los caracteres de las cadenas son de un solo byte (pero diferente en las distintas codificaciones), en el sudeste asiático es multibyte (en la disposición china, un carácter ocupa de 1 a 4 bytes.

Así que no sólo los chinos, sino también los europeos no entenderán la página del código 1251

 
Slava:

El problema es que en el nuevo MQL4 las cadenas son unicode. En todos los demás lugares: objetos, indicadores, gráficos, nombres de símbolos, registros, ajustes, etc. - las cadenas siguen siendo unicode. Por lo tanto, al comunicarse con el "mundo exterior" en los programas MQL4, cada vez que se realiza la conversión WideCharToMultiByte. En el caso habitual, los caracteres de las cadenas son de un solo byte (aunque difieren en las distintas codificaciones), mientras que en el Sudeste Asiático son multibyte (en el diseño chino, un carácter ocupa de 1 a 4 bytes).

Así que no sólo los chinos, sino también los europeos no entenderían la página del código 1251

Este es el truco: Creamos un objeto con un nombre en cirílico, luego al hacer clic lo maneja en OnChartEvent, pero su nombre no es visible allí.

Comprobaremos hoy en el cinco si este lugar tendrá algún problema.

 
Vitaly Muzichenko:

La cuestión es la siguiente: creamos un objeto con un nombre en cirílico, luego al hacer clic lo maneja en OnChartEvent, pero no se ve su nombre allí.

Hoy comprobaremos en CINCO para ver si este lugar tendrá un problema.

Funcionará en Fiver.

Y hay una solución para su caso en Quaternary.

Llamar a MQLSetInteger(MQL_CODEPAGE,CP_ACP) en OnInit;

Entonces, las conversiones de cadenas "de ida y vuelta" serán adecuadas


MQLSetInteger - Проверка состояния - Справочник MQL4
MQLSetInteger - Проверка состояния - Справочник MQL4
  • docs.mql4.com
Функция MQLSetInteger() предназначена для изменения текущей кодовой страницы в запущенной mql4-программе. Это может понадобиться в тех случаях, когда для запускаемых mql4-программ терминал устанавливает по умолчанию кодовую страницу, отличающаяся от той, которая использовалась при её компиляции. Например, mql4-программа скомпилирована на...
 
Por favor, dime si sabes lo que estoy haciendo mal:

este código se ejecuta en EURUSD 30m

#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);
}
//+------------------------------------------------------------------+


terminal genera un error:
2017.10.11 14:35:23.352 1111111111111111111111 (EURUSD,M30) no puede cargar el indicador 'Moving Average' [4302]

Cuando lo imprimo, genera -1;

 
Money_Man:
Por favor, dígame qué estoy haciendo mal:

este código se ejecuta en EURUSD 30m



terminal da un error:
2017.10.11 14:35:23.352 1111111111111111111111 (EURUSD,M30) no puede cargar el indicador 'Moving Average' [4302]



Y así:

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

?

 
Money_Man:
Por favor, dígame qué estoy haciendo mal:

este código se ejecuta en EURUSD 30m



el terminal da un error:
2017.10.11 14:35:23.352 1111111111111111111111 (EURUSD,M30) no puede cargar el indicador 'Moving Average' [4302]


¿Qué significa el error 4302?