Fehler, Irrtümer, Fragen - Seite 1151

 

Wer Probleme oder Fragen zur Conversion-Abrechnung des Partnerprogramms hat - schreiben Sie mir, ich werde es testen:

    1. Tablette (Windows 8.1)
    2. PC (Windows 8.1)
    3. Smartphone(Android)
 

Ich habe ein Problem mit der Funktion StringConcatenate() in MQL4. In der Zeichenkette erscheint ein Block von Nullen. Dies zeigt sich bei der Ausgabe der Zusammenfassung in eine Datei.

void OnStart()
  {
//---
  string sample = "0123456789ABCDEF";
  string s = "";
  for(int i=0;i<260;i++)
  {
   s = StringConcatenate(s, sample);
   Print(StringBufferLen(s), " ", StringLen(s), " ", s);
  } 
  Print(s);
  }

Das Terminal schreibt Folgendes

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3872 3872 ???????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3856 3856 ???????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3840 3840 ???????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3824 3824 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3808 3808 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily: 3792 3792 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

 
Nullen bedeuten Null-Bytes von einigen Kilobytes
 
Luckhuman:

Ich habe ein Problem mit der Funktion StringConcatenate() in MQL4. In der Zeichenkette erscheint ein Block von Nullen. Dies zeigt sich bei der Ausgabe der Zusammenfassung in eine Datei.

Danke für den Beitrag, korrigiert. Der Fix wird in der nächsten Build enthalten sein.
 
Bitte erklären Sie, warum auf der Registerkarte Handel die aktuellen Preise (das ist die Spalte Preis rechts von SL/TP - nicht zu verwechseln mit dem offenen Preis links von SL/TP!) für Marktpositionen und schwebende Aufträge für dasselbe Instrument und denselben Typ (z. B. Kauf) unterschiedlich angezeigt werden? Theoretisch sollte der aktuelle Preis für das Symbol derselbe sein, zumindest bei mehreren offenen Aufträgen ändert er sich synchron (stimmt überein).
 
marketeer:
Bitte erklären Sie, warum auf der Registerkarte Handel die aktuellen Preise (das ist die Spalte Preis rechts von SL/TP - nicht zu verwechseln mit dem offenen Preis links von SL/TP!) für Marktpositionen und schwebende Aufträge für dasselbe Instrument und denselben Typ (z. B. Kauf) unterschiedlich angezeigt werden. Der aktuelle Preis im Symbol sollte derselbe sein, zumindest bei mehreren offenen Aufträgen ändert er sich synchron (stimmt überein).

Denn es gibt einen Geldkurs und einen Briefkurs:

bid_ask

In der Abbildung gibt es eine offene Position(Verkauf) und zwei schwebende Aufträge(Verkaufslimit und Kauflimit). Für eine offene Position(Verkauf) wird der aktuelle Preis Ask angegeben, für einVerkaufslimit der aktuelle Preis Bid. Für das Kauflimit wird der aktuelleBriefkurs angegeben.

 
Ich habe keine Registerkarte "Kalender". Terminal MetaTrader 5 x64 build 946 gestartet (MetaQuotes Software Corp.). Demo-Konto auf dem MetaQuotes-Demo-Server. Außerdem gibt es mehrere echte Konten im Terminal.

Und sie fehlt nur auf dem Laptop. Auf einem Tablet und einem PC gibt es eine Registerkarte Kalender.


 
Beim Starten von MT4 im Indikator schlägt init() fehl, weil MarketInfo(xxx, MODE_TICKVALUE) Null zurückgibt (für alle Symbole). Es ist klar, dass der Tick-Wert an die Kontowährung gebunden ist, aber das Terminal zeigt schon vor der Anmeldung Fenster an. Dann stellt sich heraus, dass kein wertgebundenes Skript richtig funktioniert - ist das eine Funktion oder ein Fehler?
 
Woher weiß ich, ob ein Indikator selbst im Diagramm platziert ist oder ob er von einem anderen Indikator über iCustom aufgerufen wird?
 
marketeer:
Wenn Sie MT4 im Indikator starten, findet init() nicht statt, weil MarketInfo(xxx, MODE_TICKVALUE) Null zurückgibt (für alle Symbole). Es ist klar, dass der Tick-Wert an die Kontowährung gebunden ist, aber das Terminal zeigt Fenster vor der Anmeldung an. Dann stellt sich heraus, dass kein wertgebundenes Skript richtig funktioniert - ist das eine Funktion oder ein Fehler?

MetaTrader 4. Version: 4.00 Build 654.

Versuchen Sie, Symbol() anstelle von xxx und OnInit() anstelle von init() zu verwenden:

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//--- превращение динамических массивов в индикаторные буферы
   SetIndexBuffer(0,ExtMapBufferEMA,INDICATOR_DATA);
//--- MarketInfo
   Print("Symbol=",Symbol());
   Print("Минимальная дневная цена=",MarketInfo(Symbol(),MODE_LOW));
   Print("Максимальная дневная цена=",MarketInfo(Symbol(),MODE_HIGH));
   Print("Время поступления последней котировки=",(MarketInfo(Symbol(),MODE_TIME)));
   Print("Последняя поступившая цена предложения=",MarketInfo(Symbol(),MODE_BID));
   Print("Последняя поступившая цена продажи=",MarketInfo(Symbol(),MODE_ASK));
   Print("Размер пункта в валюте котировки=",MarketInfo(Symbol(),MODE_POINT));
   Print("Количество цифр после запятой в цене инструмента=",MarketInfo(Symbol(),MODE_DIGITS));
   Print("Спрэд в пунктах=",MarketInfo(Symbol(),MODE_SPREAD));
   Print("Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах=",MarketInfo(Symbol(),MODE_STOPLEVEL));
   Print("Размер контракта в базовой валюте инструмента=",MarketInfo(Symbol(),MODE_LOTSIZE));
   Print("Размер минимального изменения цены инструмента в валюте депозита=",MarketInfo(Symbol(),MODE_TICKVALUE));
   Print("Минимальный шаг изменения цены инструмента в пунктах=",MarketInfo(Symbol(),MODE_TICKSIZE));
   Print("Размер свопа для ордеров на покупку=",MarketInfo(Symbol(),MODE_SWAPLONG));
   Print("Размер свопа для ордеров на продажу=",MarketInfo(Symbol(),MODE_SWAPSHORT));
   Print("Календарная дата начала торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_STARTING));
   Print("Календарная дата окончания торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_EXPIRATION));
   Print("Разрешение торгов по указанному инструменту=",MarketInfo(Symbol(),MODE_TRADEALLOWED));
   Print("Минимальный размер лота=",MarketInfo(Symbol(),MODE_MINLOT));
   Print("Шаг изменения размера лота=",MarketInfo(Symbol(),MODE_LOTSTEP));
   Print("Максимальный размер лота=",MarketInfo(Symbol(),MODE_MAXLOT));
   Print("Метод вычисления свопов=",MarketInfo(Symbol(),MODE_SWAPTYPE));
   Print("Способ расчета прибыли=",MarketInfo(Symbol(),MODE_PROFITCALCMODE));
   Print("Способ расчета залоговых средств=",MarketInfo(Symbol(),MODE_MARGINCALCMODE));
   Print("Начальные залоговые требования для 1 лота=",MarketInfo(Symbol(),MODE_MARGININIT));
   Print("Размер залоговых средств для поддержки открытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINMAINTENANCE));
   Print("Маржа, взимаемая с перекрытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINHEDGED));
   Print("Размер свободных средств, необходимых для открытия 1 лота на покупку=",MarketInfo(Symbol(),MODE_MARGINREQUIRED));
   Print("Уровень заморозки ордеров в пунктах=",MarketInfo(Symbol(),MODE_FREEZELEVEL));
//---
   return(INIT_SUCCEEDED);
  }