Nützliche Funktionen von KimIV - Seite 99

 
TarasBY писал(а) >>
Ich habe einen Fehler in der Funktion TypeNearPos festgestellt, wenn die Bedingung erfüllt ist:
Marktpreis = Preis des offenen Auftrags, dann wird dieser Auftrag von dieser Funktion nicht berücksichtigt.
Ich musste diese einfache Bedingung in den Code einfügen.
Diese Bedingung ist auch in Funktionen wie TypeNearPos() und PriceOpenNearPos() nützlich.


Es ist sinnvoller, ti mit Null in der Bedingung zu vergleichen, anstatt pp

if (ti==0 || pp>MathAbs(OrderOpenPrice()-mi)/p)
{
   pp=MathAbs(OrderOpenPrice()-mi)/p;
   ti=OrderTicket();
}
Aber wenn wir die Bedingung so lassen, wie sie ist, sollten wir die Schleife besser mit break statt return verlassen.
if (pp==0 || pp>MathAbs(OrderOpenPrice()-mi)/p)
{
   pp=MathAbs(OrderOpenPrice()-mi)/p;
   ti=OrderTicket();
   if (pp==0)
      break;
}
 
Hallo, Igor. Hallo, alle zusammen.
Igor, ich spreche zu Ihnen als ausgezeichneter Spezialist und Experte auf Ihrem Gebiet.
Mein Problem stellt sich im Wesentlichen wie folgt dar:
Ich verwende fünf Indikatoren in meinem TS, einer davon ist TRAP. Es entfernt alle unnötigen "Geräusche" sehr gut, aber es ist genauso "gut". Er verfügt über drei Zeichenpuffer: 0 für die Signallinie, 1 und 2 für die zweifarbige Karte. Wenn die TRAP-Signallinie nach unten zeigt und ein rotes Diagramm darunter zu sehen ist - Verkaufen. Wenn die Signallinie ansteigt und das Diagramm blau ist - Kaufen.
Manuell ist alles in Ordnung, aber wenn ich versuche, die Daten aus dem Expert Advisor abzurufen, beginnen die Qualen und dauern bis heute an.
Das Design...
   TRAPsig0=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,0,0);  // Сигнальная линия,       0 бар
   TRAPsig1=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,0,1);  // Сигнальная линия,       1 бар
   TRAPmnR0=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,1,0);  // Буфер цвета 1 (красн.), 0 бар
   TRAPmnR1=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,1,1);  // Буфер цвета 1 (красн.), 1 бар
   TRAPmnB0=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,2,0);  // Буфер цвета 2 (син.),   0 бар
   TRAPmnB1=iCustom(NULL,0,"TRAP",12,5,0,4,0.5,2,1);  // Буфер цвета 2 (син.),   1 бар
...liest die Daten, aber die Daten sind überhaupt nicht das, was ich erwartet habe. Ich habe versucht, Daten aus allen drei Puffern für die Balken 0 - 7 zu lesen und auf dem Bildschirm anzuzeigen. Der Nullbalken enthält 2147483647, der erste Balken den Preis, der zweite Balken den Preis, der dritte Balken den Preis, der vierte Balken wieder 2147483647 usw. Gleichzeitig ändern sich nicht alle Daten auf Tick-by-Tick-Basis, sondern nur dann, wenn sie sich ändern. Manchmal nach längerer Zeit, manchmal schnell, und sie ändern ihren Inhalt nach einem seltsamen System, das ich noch nicht verstanden habe. Wenn es dort zuerst einen Preis gibt, dann kann es diese mysteriöse Zahl sein, oder es kann ein anderer Preis sein oder derselbe (obwohl die Linie nach oben geht und der Preis nach oben gehen sollte), usw. ...
Kurzum, alle meine Versuche, diese Lektüre zu systematisieren, haben dazu geführt, dass mein Hirn bereits mit der Systematisierung der Sanitarier beschäftigt sein sollte.... :)
Ich schreie um Hilfe... Igor, vielleicht kannst du mich beraten, wie ich diesen Indikator überlisten kann?
Oder einer der Gurus, die sich bereits mit diesem Problem befassen.
Hilfe bitte, die ganze Arbeit kostet...
Vielen Dank im Voraus!
Der Indikator selbst befindet sich im Anhänger:
Dateien:
trap.ex4  4 kb
 
keine Null-Bar verwenden.... Er bildet sich gerade, d.h. der Indikatorwert ändert sich mit jedem Tick....
 

Übrigens - wo ist Igor selbst? Er hat sich seit vier oder fünf Monaten nicht mehr blicken lassen!

 
kharko >>:
не используйте нулевой бар.... Он только формируется, а значит, значение индикатора меняется с каждым тиком....

Die Sache ist die, ich habe es auf dem ersten und zweiten und dritten Weg versucht... jeden Balken bis zu sieben auf jedem Puffer ausprobiert. Die Signale sind nicht richtig. Das Signal, das den Preis anzeigt, sagen wir, 1,3478 kann bis zum nächsten Anstieg des Preises auf das Niveau von 1,3478 gehalten werden, und dann scharf zu 1,3486 oder der Preis verschwindet und ein unbekannter Wert von 2147483647 erscheint, kann es von einem Balken zum anderen in den Messwerten aller drei Puffer wandern... So Gott will... Es kann in den Messwerten von drei Puffern in verschiedenen Balken vorhanden sein, und wenn Sie den Preis eines Balkens ändern, wird dieser Messwert auf einen anderen Balken oder Puffer übertragen... Ich konnte seine Logik nicht überbieten...

 
artmedia70 >>:

вообще цена пропадает и появляется непонятное значение 2147483647...

2147483647 ist 0x7FFFFFFFF.

Spezielle Konstanten, die verwendet werden, um den Zustand von Parametern und Variablen anzugeben. Kann die folgenden Werte annehmen:

EMPTY_VALUE 0x7FFFFFFFF Standardwert, Zeiger auf einen leeren Wert. Verwendet in benutzerdefinierten Indikatoren
 
artmedia70 писал(а) >>

Die Sache ist die, ich habe es auf dem ersten, zweiten und dritten Weg versucht... jeden Balken bis zu sieben auf jedem Puffer ausprobiert. Die Signale sind falsch. Das Signal, das den Preis anzeigt, sagen wir, 1,3478 kann bis zum nächsten Anstieg des Preises auf das Niveau von 1,3478 gehalten werden, und dann scharf werden 1,3486 oder der Preis verschwindet und ein unbekannter Wert 2147483647 erscheint, kann es von einem Balken zum anderen in den Messwerten aller drei Puffer wandern... So Gott will... Es kann in den Messwerten von drei Puffern in verschiedenen Balken vorhanden sein, und wenn Sie den Preis eines Balkens ändern, wird dieser Messwert auf einen anderen Balken oder Puffer übertragen... Ich konnte seine Logik nicht überbieten...


Öffnen Sie das Datenfenster (Strg+D), fahren Sie mit der Maus über Ihren Indikator und sehen Sie nach, was er an Balken hat. Es ist nicht auf Null Bars berechnet, und über EMPTY_VALUE Sie bereits geschrieben worden.

 
PapaYozh >>:


откройте окно данных (Ctrl+D), поводите мышью по своему индикатору и посмотрите что он имеет в барах. На нулевом баре он не рассчитан, а про EMPTY_VALUE Вам уже написали.

Oh, Scheiße! Man lebt und lernt! Und ich habe einen nicht handelsbezogenen Expert Advisor erstellt, der diese Daten in einem Diagramm dargestellt hat... :))) Eine Teekanne, und die war auch noch kochend heiß... :)
Es ist alles so einfach geworden... Vielen Dank!!!!

 
PapaYozh >>:


Логичнее, в условии сравнивать с нулём не pp, a ti

Если же оставить условие как есть, то из цикла лучше выходить не по return, а по break.

Erklären Sie warum: "Es ist besser, die Schleife mit break statt return zu verlassen."
Ich verlasse eine Funktion mit return, aber eine Schleife verlasse ich nur mit break. Was ist der Trick?

 

Hilfe, bitte... Ich habe schon alles versucht... Ich kann nicht....=( Ich muss den Schnittpunkt der Indikatoren finden... Alle Tipps, die ich bekommen habe, haben mir nicht geholfen...=( vielleicht können Sie helfen...

Dateien:
lastlast.mq4  13 kb
Grund der Beschwerde: