Errori, bug, domande - pagina 2031

 
Andrey Barinov:

Leggi la conversione del tipo e le perdite nel farlo. https://www.mql5.com/ru/docs/basis/types/casting


Grazie! L'idea è questa: abbiamo un indicatore che dà pochi segnali precisi.

Apri un numero qualsiasi di grafici e, in base alla MM e al segnale dell'indicatore, apri posizioni. Creiamo segni di testo o pulsanti sul grafico che indicano il simbolo e il profitto attuale delle posizioni aperte. Quando si clicca il pulsante, il grafico desiderato è in primo piano.

 
La fonte delle quotazioni FOREX è cambiata su Metaquotes-Demo? Gli spread sono molto più piccoli.
 
Slava:
Un quartetto?

 
Invece di un errore di compilazione, c'è uno strano comportamento quando si esegue
// Запускаем на MT5

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

void OnInit()
{
  Func();
}

Non una DLL qualsiasi, nemmeno Temp.ex4!

 
Vitaly Muzichenko:

Il problema è che nel nuovo MQL4 le stringhe sono unicode. In tutti gli altri posti: oggetti, indicatori, grafici, nomi di simboli, log, impostazioni, ecc. - le stringhe rimangono unicode. Pertanto, quando si comunica con il "mondo esterno" nei programmi MQL4, ogni volta che viene fatta la conversione WideCharToMultiByte. Nel caso normale, i caratteri delle stringhe sono singoli byte (ma diversi nelle diverse codifiche), nel Sud-est asiatico è multibyte (nel layout cinese 1 carattere prende da 1 a 4 byte.

Quindi non solo i cinesi, ma anche gli europei non capiranno la pagina del codice 1251

 
Slava:

Il problema è che nel nuovo MQL4 le stringhe sono unicode. In tutti gli altri posti: oggetti, indicatori, grafici, nomi di simboli, log, impostazioni, ecc. - le stringhe rimangono unicode. Pertanto, quando si comunica con il "mondo esterno" nei programmi MQL4, ogni volta che viene fatta la conversione WideCharToMultiByte. Nel caso usuale, i caratteri delle stringhe sono singoli byte (ma diversi nelle diverse codifiche), nel sud-est asiatico è multibyte (nel layout cinese 1 carattere prende da 1 a 4 byte.

Quindi non solo i cinesi, ma anche gli europei non capirebbero la pagina del codice 1251

Ecco il trucco: creiamo un oggetto con un nome in cirillico, poi al click lo gestisce in OnChartEvent, ma il suo nome non è visibile lì.

Controlleremo oggi alle cinque per vedere se questo posto avrà un problema.

 
Vitaly Muzichenko:

Ecco il problema: creiamo un oggetto con un nome in cirillico, poi al click lo gestisce in OnChartEvent, ma non si vede il suo nome lì.

Oggi controlleremo in CINQUE per vedere se questo posto avrà un problema.

Funzionerà in Fiver.

E c'è una soluzione per il tuo caso nel Quaternario.

Chiamare MQLSetInteger(MQL_CODEPAGE,CP_ACP) in OnInit;

Allora le conversioni di stringhe "avanti e indietro" saranno adeguate


MQLSetInteger - Проверка состояния - Справочник MQL4
MQLSetInteger - Проверка состояния - Справочник MQL4
  • docs.mql4.com
Функция MQLSetInteger() предназначена для изменения текущей кодовой страницы в запущенной mql4-программе. Это может понадобиться в тех случаях, когда для запускаемых mql4-программ терминал устанавливает по умолчанию кодовую страницу, отличающаяся от той, которая использовалась при её компиляции. Например, mql4-программа скомпилирована на...
 
Per favore ditemi se sapete cosa sto sbagliando:

questo codice funziona su 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);
}
//+------------------------------------------------------------------+


terminale genera un errore:
2017.10.11 14:35:23.352 1111111111111111111111111111 (EURUSD,M30) cannot load indicator 'Moving Average' [4302]

Quando lo stampo, genera -1;

 
Money_Man:
Per favore, ditemi cosa sto sbagliando:

questo codice funziona su EURUSD 30m



terminale dà un errore:
2017.10.11 14:35:23.352 1111111111111111111111111111 (EURUSD,M30) cannot load indicator 'Moving Average' [4302]



E così:

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

?

 
Money_Man:
Per favore, ditemi cosa sto sbagliando:

questo codice funziona su EURUSD 30m



il terminale dà un errore:
2017.10.11 14:35:23.352 1111111111111111111111111111 (EURUSD,M30) cannot load indicator 'Moving Average' [4302]


Cosa significa l'errore 4302?