Fehler, Irrtümer, Fragen - Seite 2031

 
Andrey Barinov:

Lesen Sie über die Typenumwandlung und die damit verbundenen Verluste. https://www.mql5.com/ru/docs/basis/types/casting


Ich danke Ihnen! Die Idee ist folgende: Wir haben einen Indikator, der wenig genaue Signale gibt.

Öffnen Sie eine beliebige Anzahl von Charts und eröffnen Sie je nach MM und Indikatorsignal Positionen. Wir erstellen Textmarken oder Schaltflächen auf dem Chart, die das Symbol und den aktuellen Gewinn der offenen Positionen anzeigen. Wenn Sie auf die Schaltfläche klicken, wird das gewünschte Diagramm im Vordergrund angezeigt.

 
Hat sich die Quelle der FOREX-Kurse auf Metaquotes-Demo geändert? Die Spreads sind viel kleiner.
 
Slava:
Ein Vierer?

Ja

 
Statt eines Kompilierfehlers kommt es zu einem seltsamen Verhalten bei der Ausführung von
// Запускаем на MT5

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

void OnInit()
{
  Func();
}

Nicht nur irgendeine DLL, nicht einmal Temp.ex4!

 
Vitaly Muzichenko:

Ja

Das Problem ist, dass im neuen MQL4 die Zeichenketten Unicode sind. An allen anderen Stellen: Objekte, Indikatoren, Diagramme, Symbolnamen, Protokolle, Einstellungen usw. - bleiben die Zeichenketten unicode. Daher wird bei der Kommunikation mit der "Außenwelt" in MQL4-Programmen jedes Mal die Umwandlung WideCharToMultiByte durchgeführt. Im Normalfall sind die Zeichen von Zeichenketten Ein-Byte-Zeichen (allerdings in verschiedenen Kodierungen), in Südostasien sind es Mehr-Byte-Zeichen (im chinesischen Layout nimmt ein Zeichen zwischen 1 und 4 Byte ein).

Nicht nur Chinesen, sondern auch Europäer werden die 1251 Code Page nicht verstehen.

 
Slava:

Das Problem ist, dass im neuen MQL4 die Zeichenketten Unicode sind. An allen anderen Stellen: Objekte, Indikatoren, Diagramme, Symbolnamen, Protokolle, Einstellungen usw. - bleiben die Zeichenketten unicode. Daher wird bei der Kommunikation mit der "Außenwelt" in MQL4-Programmen jedes Mal die Umwandlung WideCharToMultiByte durchgeführt. In der Regel sind die Zeichen von Zeichenketten Ein-Byte-Zeichen (allerdings in verschiedenen Kodierungen), in Südostasien sind es Mehr-Byte-Zeichen (im chinesischen Layout nimmt ein Zeichen zwischen 1 und 4 Byte ein).

Nicht nur Chinesen, sondern auch Europäer würden die 1251 Code Page nicht verstehen.

Hier ist der Trick: Wir erstellen ein Objekt mit einem kyrillischen Namen, dann auf Klick behandelt es in OnChartEvent, aber sein Name ist dort nicht sichtbar.

Wir werden heute in der fünften Stunde nachsehen, ob es hier ein Problem geben wird.

 
Vitaly Muzichenko:

Hier ist die Sache: Wir erstellen ein Objekt mit einem kyrillischen Namen, dann auf Klick behandelt es in OnChartEvent, aber Sie können nicht sehen, seinen Namen dort.

Heute werden wir in FÜNF nachsehen, ob es hier ein Problem geben wird.

Es wird in Fiver funktionieren.

Und es gibt eine Lösung für Ihren Fall in Quaternary.

Aufruf von MQLSetInteger(MQL_CODEPAGE,CP_ACP) in OnInit;

Dann sind die String-Konvertierungen "hin und her" ausreichend


MQLSetInteger - Проверка состояния - Справочник MQL4
MQLSetInteger - Проверка состояния - Справочник MQL4
  • docs.mql4.com
Функция MQLSetInteger() предназначена для изменения текущей кодовой страницы в запущенной mql4-программе. Это может понадобиться в тех случаях, когда для запускаемых mql4-программ терминал устанавливает по умолчанию кодовую страницу, отличающаяся от той, которая использовалась при её компиляции. Например, mql4-программа скомпилирована на...
 
Bitte sagen Sie mir, wenn Sie wissen, was ich falsch mache:

dieser Code läuft auf 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 erzeugt einen Fehler:
2017.10.11 14:35:23.352 11111111111111111111111111 (EURUSD,M30) kann Indikator 'Gleitender Durchschnitt' nicht laden [4302]

Wenn ich sie ausdrucke, wird -1 erzeugt;

 
Money_Man:
Bitte sagen Sie mir, was ich falsch mache:

dieser Code läuft auf EURUSD 30m



Terminal gibt einen Fehler:
2017.10.11 14:35:23.352 11111111111111111111111111 (EURUSD,M30) kann Indikator 'Gleitender Durchschnitt' nicht laden [4302]



Und so:

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

?

 
Money_Man:
Bitte sagen Sie mir, was ich falsch mache:

dieser Code läuft auf EURUSD 30m



das Terminal gibt einen Fehler:
2017.10.11 14:35:23.352 11111111111111111111111111 (EURUSD,M30) kann Indikator 'Gleitender Durchschnitt' nicht laden [4302]


Was bedeutet der Fehler 4302?