Fehler, Irrtümer, Fragen - Seite 1701

 
pako:
Gibt es Fische in den Tikes?
Genau das möchte ich herausfinden.
 
fxsaber:
Genau das möchte ich herausfinden.

Es macht nur Sinn, es mit einem Lmax zu versuchen. Und selbst das ist fraglich.

Haben Sie es mit Volumen, Gefühlen und Glas versucht? Für mich schmeckt es besser. Am liebsten handele ich mit dem Band und dem Glas, aber so etwas kann ich auf dem Forex nicht finden.

 
Комбинатор:

Es macht nur Sinn, es mit einem Lmax zu versuchen. Und das ist zweifelhaft.

Haben Sie es mit Volumen, Gefühlen und Glas versucht? Für mich schmeckt es besser. Am liebsten handle ich mit Ribbon und Gauge, aber das gibt es bei Forex nicht.

Ich möchte die Börse ausprobieren. Irgendwie ist mir bis jetzt alles klar, was ich dort tun soll. Und es ist nicht klar, warum dies nicht einmal in Form von Indikatoren geschieht.

Nur Bugs bremsen mich aus.

 
void OnStart()
  {
//---
   Print("-----------------------------   ");
   Print("DBL_MAX= ", DBL_MAX);
   Print("IntegerToString(int(DBL_MAX) )= ", IntegerToString(int(DBL_MAX) ) );
   Print("IntegerToString(uint(MathAbs(DBL_MAX) ) )= ", IntegerToString(uint(MathAbs(DBL_MAX) ) ) );
  }

Ich führe ein Skript wie dieses aus

und erhalten

DBL_MAX= 1.797693134862316e+308

IntegerToString(int(DBL_MAX) )= -2147483648

IntegerToString(uint(MathAbs(DBL_MAX) ) )= 0

------

Frage: Warum erhalten wir eigentlich eine negative Zahl, wenn wir eine positive Double-Zahl in int umwandeln?

 
Print("-----------------------------   ");
   Print("DBL_MAX= ", DBL_MAX);
   Print("IntegerToString(int(DBL_MAX) )= ", IntegerToString(int(DBL_MAX) ) );
   Print("IntegerToString(uint(MathAbs(DBL_MAX) ) )= ", IntegerToString(uint(MathAbs(DBL_MAX) ) ) );
   Print("---");
   Print("int(DBL_MAX)= ", int(DBL_MAX) );
   Print("uint(DBL_MAX)= ", uint(DBL_MAX) );
Oder es ist immer noch das Gleiche.
 
fxsaber:
Ich habe eine Bewerbung ausgefüllt, obwohl ich es leid bin, das so oft zu tun.
Beantwortet und sofort geschlossen

Der Autor des Indikators hat den Link absichtlich auf sich selbst verschlüsselt.

Man kann diesen "Hack" entweder verbieten oder es dem Gewissen desjenigen überlassen, der ihn benutzt.

Sie sind bisher die erste Person, die seit mehreren Jahren durch diese Funktion an der Nutzung des Terminals gehindert wird.

Wie viele Indikatoren können im Idle-Modus ausgeführt werden und wir haben keine Ahnung davon? Es gibt überhaupt keine Kontrolle.

Ich verstehe die regelmäßige Pathetik in Ihren Beiträgen nicht wirklich. Es handelt sich eindeutig nicht um ein massives oder ernsthaftes Problem.

1) Nur bewusst können Sie einen Indikator mit dem angegebenen Verhalten schreiben. Wer bringt Sie dazu, einen solchen Code zu schreiben und einen solchen Indikator zu verwenden? Oder führen Sie andere Programme aus, ohne deren Code zu kennen?

2) Er ist nicht bösartiger als viele andere Indikatoren mit weniger offensichtlichen logischen Fehlern.

3) Wenn Sie das Terminal neu starten, wird der Indikator entladen und startet nicht erneut. Wenn Sie versehentlich einen solchen Indikator starten - starten Sie das Terminal neu. Und lassen Sie es nicht mehr laufen.

Ich sollte die Möglichkeit haben, mich selbst (den Indikator) zu löschen, wenn mindestens eine Kopie gestartet wird, auch wenn diese andere Eingabeparameter hat. Zu diesem Zweck musste ich den Griff selbst herausfinden. Leider wusste ich zu diesem Zeitpunkt noch nicht, dass dies bei MQL in 100% der Fälle unmöglich ist. Ich beschloss daher, einen nicht sehr cleveren Trick auszuprobieren.

Ich bin alle Griffe durchgegangen. Wenn er mit dem Zufallswert übereinstimmt, den ich vor der Überprüfung in meinen Indikator geschrieben habe, bedeutet das automatisch, dass der Handle mir gehört und ich mich gegebenenfalls selbst löschen kann.

Aus diesen Überlegungen heraus wurde ein so harmloser Code geschrieben, der bei den Entwicklern eine so zweideutige, aber offensichtlich negative Reaktion hervorrief. Das können Sie nicht tun. Was haben Sie getan? Nun, ich lese den Wert meines Puffers durch den CopyBuffer. Ist das illegal?!

Machen Sie die Community darauf aufmerksam, dass Sie auf diese Weise eine unkontrollierte Ausführung von beliebigem Code im Hintergrund auch auf dem Terminal ohne Diagramme erstellen können. Hier ist ein kleiner Tipp. Ob es sich um einen Fehler handelt oder nicht, ist wahrscheinlich eine Frage der Terminologie. Soweit ich weiß, können die Bauherren hier nichts architektonisch verändern. Das ist der Grund, warum es so viel Ärger gibt. Anders kann ich mir diese Reaktion nicht erklären.

Es wird sowieso niemand etwas sagen. Ein solcher Rechen würde sich in der Hilfe gut widerspiegeln.

 
Если вы случайно запустили такой индикатор - Starten Sie das Terminal neu. Und lassen Sie es nicht mehr laufen.
Das kann man nicht wissen. Das gibt's doch nicht!
 
Dmytro Zelenskyy:
Oder es ist immer noch dasselbe.

Der Typ int hat eine Größe von 4 Bytes. Der Typ double hat eine Größe von 8 Bytes. Sie dürfen das nicht tun - versuchen Sie, aus 8 Bytes 4 Bytes zu machen - das kann zu Unsinn führen - besonders in diesem Fall, wenn der DBL_MAX-Wert außerhalb der int-Werte liegt.

Wenn du die Zahl double d=123456.1258 nimmst und versuchst, int daraus zu machen - dann wird die Zahl funktionieren, aber du kannst es trotzdem nicht auf diese Weise machen.

 
Karputov Vladimir:

Der Typ int hat eine Größe von 4 Bytes. Der Typ double hat eine Größe von 8 Bytes. Sie dürfen das nicht tun - versuchen Sie, aus 8 Bytes 4 Bytes zu machen - das kann zu Unsinn führen - besonders in diesem Fall, wenn der DBL_MAX-Wert außerhalb der int-Werte liegt.

Wenn Sie die Zahl double d=123456.1258 nehmen und versuchen, daraus int zu erhalten, wird die Zahl funktionieren, aber Sie können es trotzdem nicht tun.

Ok, wie man richtig konvertieren double zu int mit Erhaltung des Vorzeichens (die Zahl spielt keine Rolle, wenn es außerhalb der Grenze geht dann begrenzen Sie es zu int)

 
Dmytro Zelenskyy:

OK, wie man richtig konvertieren double zu int mit dem Zeichen intakt (die Zahl spielt keine Rolle, wenn es außerhalb der Grenze ist, dann begrenzen Sie es zu int)

int

Der Ganzzahltyp int hat eine Größe von 4 Byte (32 Bit). Der Mindestwert beträgt -2 147 483 648, der Höchstwert 2 147 483 647. Auf dieser Grundlage,

   int A=(int)2147483647.0;
   int B=(int)2147483646.2;
   int C=(int)2147483647.2;
   int D=(int)2147483648.0;
   Print("A: ",IntegerToString(A),", B: ",IntegerToString(B),", C: ",IntegerToString(C),", D: ",IntegerToString(D));

sehen, was zurückgegeben wird:

A: 2147483647, B: 2147483646, C: 2147483647, D: -2147483648

Ich denke, das Prinzip ist klar.


Grund der Beschwerde: