Erros, bugs, perguntas - página 2031

 
Andrey Barinov:

Leia sobre conversão de tipo e perdas ao fazê-lo. https://www.mql5.com/ru/docs/basis/types/casting


Obrigado! A ideia é a seguinte: temos um indicador que dá poucos sinais precisos.

Abrir qualquer número de gráficos e, de acordo com o MM e o sinal indicador, abrir posições. Criamos marcas de texto ou botões no gráfico indicando o símbolo e o lucro actual das posições abertas. Ao clicar no botão, o gráfico desejado está em primeiro plano.

 
A fonte das citações FOREX mudou em Metaquotes-Demo? Os spreads são muito mais pequenos.
 
Slava:
Um grupo de quatro?

Sim

 
Em vez de um erro de compilação, há um comportamento estranho ao executar
// Запускаем на MT5

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

void OnInit()
{
  Func();
}

Não apenas qualquer DLL, nem mesmo Temp.ex4!

 
Vitaly Muzichenko:

Sim

O problema é que na nova MQL4 as cordas são unicode. Em todos os outros locais: objectos, indicadores, gráficos, nomes de símbolos, registos, definições, etc. - as cordas permanecem unicode. Portanto, ao comunicar com o "mundo exterior" em programas MQL4, sempre que a conversão WideCharToMultiByte é feita. Normalmente, os caracteres das cordas são de byte único (mas diferentes em diferentes codificações), no Sudeste Asiático é multibyte (no layout chinês 1 caractere leva de 1 a 4 bytes.

Assim, não só os chineses, mas também os europeus não compreenderão a página de código 1251

 
Slava:

O problema é que na nova MQL4 as cordas são unicode. Em todos os outros locais: objectos, indicadores, gráficos, nomes de símbolos, registos, definições, etc. - as cordas permanecem unicode. Portanto, ao comunicar com o "mundo exterior" em programas MQL4, sempre que a conversão WideCharToMultiByte é feita. No caso habitual, os caracteres das cordas são de byte único (mas diferentes em diferentes codificações), no Sudeste Asiático é multibyte (no layout chinês 1 caracter leva de 1 a 4 bytes.

Assim, não só os chineses, mas também os europeus não compreenderiam a página de código 1251

Eis o truque: Criamos um objecto com um nome cirílico, depois, ao clicar, manuseia-o no OnChartEvent, mas o seu nome não é visível ali.

Verificaremos hoje nos cinco para ver se este lugar terá algum problema.

 
Vitaly Muzichenko:

A questão é esta: Criamos um objecto com um nome cirílico, depois, ao clicar nele, manuseia-o no OnChartEvent, mas não se consegue ver o seu nome ali.

Hoje vamos verificar na FIVE se este lugar terá algum problema.

Funcionará em Fiver.

E há uma solução para o seu caso no Quaternário.

Chamar MQLSetInteger(MQL_CODEPAGE,CP_ACP) no OnInit;

Então as conversões de cordas "para a frente e para trás" serão adequadas


MQLSetInteger - Проверка состояния - Справочник MQL4
MQLSetInteger - Проверка состояния - Справочник MQL4
  • docs.mql4.com
Функция MQLSetInteger() предназначена для изменения текущей кодовой страницы в запущенной mql4-программе. Это может понадобиться в тех случаях, когда для запускаемых mql4-программ терминал устанавливает по умолчанию кодовую страницу, отличающаяся от той, которая использовалась при её компиляции. Например, mql4-программа скомпилирована на...
 
Por favor, digam-me se sabem o que estou a fazer mal:

este código corre em 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 gera um erro:
2017.10.11 14:35:23.352 11111111111111111111111111 (EURUSD,M30) não pode carregar o indicador 'Moving Average' [4302]

Quando o imprimo, gera -1;

 
Money_Man:
Por favor, digam-me o que estou a fazer mal:

este código corre no terminal EURUSD 30m



dá um erro:
2017.10.11 14:35:23.352 11111111111111111111111111 (EURUSD,M30) não pode carregar o indicador 'Moving Average' [4302]



E assim:

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

?

 
Money_Man:
Por favor, digam-me o que estou a fazer mal:

este código corre em EURUSD 30m



o terminal dá um erro:
2017.10.11 14:35:23.352 11111111111111111111111111 (EURUSD,M30) não pode carregar o indicador 'Moving Average' [4302]


O que significa o erro 4302?