Fehler, Irrtümer, Fragen - Seite 717

 
sergeev:
curwords = NULL
warum dann Print("next======",curwords.m_next!=NULL); keinen Fehler auslöst?
 
fellow:
Warum führt Print("next======",curwords.m_next!=NULL); nicht zu einem Fehler?

denn

curwords.m_next!=NULL


Setzen Sie beim Erstellen von Objekten die Referenzen auf Null?

Es ist nicht NULL, wenn es erstellt wird.

Die Entwickler haben Ihnen die Funktion CheckPointer zur Verfügung gestellt.

 
MoneyJinn:
Das Element mit dem Index 0 wird gelöscht, während das jüngste Element des Arrays gelöscht werden sollte, d.h. mit dem Index (n-1), wobei n die Größe des Arrays ist.
Warten Sie. Erstens haben Sie geschrieben"ArrayResize() Fehler, wenn Array Größe reduziert wird, wenn ArraySetAsSeries() = true". Das heißt, das "frischeste" Element hatte einen Index von 0. Ist dies richtig?
 

zurücksetzen

int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;

Das Ergebnis ist das gleiche

Versuchen Sie es selbst

 
fellow:

Versuchen Sie es selbst

warum sollte ich es versuchen :)

bei mir funktioniert es gut :))

 

Die Symbole können nach Bedarf eingerichtet und angezeigt werden.

Das Terminal schreibt in den Benutzerordner, und ich gebe in der Verknüpfung den Schlüssel /portable an.

 
fellow:

zurücksetzen

int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;

Das Ergebnis ist das gleiche

versuchen Sie es selbst.

Bitte schreiben Sie an servicedesk. Geben Sie Betriebssystem, Bitrate und Bauart des Terminals an. Bitte fügen Sie den Quellcode bei, auf dem das Problem ständig reproduziert wird - lassen Sie uns das Problem angehen.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Yedelkin:

GUT. Dann werde ich die Nerven behalten. So heißt es in der Beschreibung der Funktion Print(), dass "Daten vom Typ double mit einer Genauigkeit von 16 Dezimalstellen nach dem Komma gedruckt werden". Es stellt sich nämlich heraus, dass die Funktion Print() etwas gerundete Daten ausgibt:

ND 0 victorg2 (EURUSD,M1) 11:04:42 Druck(b)=200.0
MP 0 victorg2 (EURUSD,M1) 11:04:42 Druck(DoubleToString(b,16))=199.999999999999999716

Danke, dass Sie das Thema angesprochen haben. Ein neues, vollständigeres Beispiel für die Druckfunktion wurde der Hilfe hinzugefügt:

Beispiel:

void OnStart()
  {
//--- выведем DBL_MAX с помощью Print(), это равносильно PrintFormat(%%.16G,DBL_MAX)
   Print("---- как выглядит DBL_MAX -----");
   Print("Print(DBL_MAX)=",DBL_MAX);
//--- теперь выведем число DBL_MAX с помощью PrintFormat()
   PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Вывод в журнал "Эксперты"
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- посмотрим как выводится тип float
   float c=(float)M_PI; // нужно явно приводить к целевому типу
   Print("c=",c, "    Pi=",M_PI, "    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
   
//--- покажем, что может произойти при арифметических операциях над вещественными типами
   double a=7,b=200;
   Print("---- перед арифметическими операциями");
   Print("a=",a,"   b=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- разделим a на b (7/200)
   a=a/b;
//--- теперь как будто восстановим значение в переменной b
   b=7.0/a; // ожидается, что b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - но это не так
//--- выведем вновь вычисленное значение b
   Print("----- после арифметических операций");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (видим, что на самом деле b уже не равно 200.0)   
 
//--- создадим очень маленькое значение epsilon=1E-013
   double epsilon=1 e-13;
   Print("---- создадим очень маленькое число");
   Print("epsilon=",epsilon); // получим   epsilon=1E-013
//--- теперь вычтем эпсилон из числа b и выведем снова значение в журнал "Эксперты"
   b=b-epsilon;
//--- выводим двумя способами
   Print("---- после вычитания epsilon из переменной b");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"
// Print(b)=199.9999999999999  (теперь значение b после вычитания эпсилон не может округлиться до 200)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (теперь значение b после вычитания эпсилон не может округлиться до 200)
  }
 

Wie kann ich den Punkt für zwei Währungen ermitteln?

für das aktuelle Instrument:

double P1=Point();

sagen wir für die Währungen Symbol1, Symbol2?

 

Die Elementgröße kann mit SymbolInfoDouble(symbol_name, property) ermittelt werden.

ENUM_SYMBOL_INFO_DOUBLE

Kennung

Beschreibung

Art der Immobilie

SYMBOL_BID

Gebot - bestes Angebot zum Verkauf

doppelt

SYMBOL_ASK

Anfrage - bestes Gebot

doppelt

SYMBOL_LAST

Preis, zu dem der letzte Abschluss getätigt wurde

doppelt

SYMBOL_POINT

Wert eines Pips

doppelt