Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 107

 

FEAR:

gute Antwort

Und das Wichtigste: die richtige...
 
VladislavVG:


bool SLowTen = (Open[1]==Low[1]); // kein unterer Schatten einer Haussekerze

Suchen Sie im Forum nach dem richtigen Vergleich von reellen Zahlen.

Jeder kann einen Künstler beleidigen, Sie hätten es richtig schreiben müssen. Ich mag Kritik sehr gerne - eine konstruktive Kritik. Ich weiß selbst, was hässlicher Code ist.

Ich habe noch eine Frage dazu - wie kann man in eine Bedingung schreiben, dass die Größe einer Kerze mehr als 60 Punkte (in fünf Ziffern) beträgt.

 
alexey1979621:

Jeder kann sich von einem Künstler beleidigt fühlen, Sie hätten es richtig schreiben müssen. Ich mag Kritik sehr gerne - konstruktive Kritik. Ich kenne den hässlichen Code selbst.

Eine andere Frage ist, wie man die Bedingung, dass die Größe der Kerze größer als 60 Punkte (fünfstellig) ist, einträgt.


Vergleich doppelt:

if (NormalizeDouble(p1-p2,Digits)<0.5*Point) {
   // Значит равны
   }

Wie kann man unter der Bedingung verschreiben, dass die Größe der Kerze mehr als 60 Pips (auf fünf Ziffern) beträgt.

if (размер_свечи>60*Point) {}
 
artmedia70:

Vergleich doppelt:

Wie man in der Bedingung, dass die Größe der Kerze ist mehr als 60 Pips (auf einem fünfstelligen) zu verschreiben.


Verzeihen Sie meine Unbeholfenheit, aber p1 und p2 sind High bzw. Low? Und was bedeutet 0,5?

Angewandt auf meinen bestehenden Code

   double STelo = MathAbs(Close[1]-Open[1])/Point; // тело бычьей свечи
   double SHighTen = (High[1]-Close[1])/Point; // верхняя тень бычьей свечи
   bool SLowTen = (Open[1]==Low[1]);    // отсутствие нижней тени бычьей свечи
  
   
   double Razmer_1 = (High[1]-Low[1])/Point; // размер свечи

        
   if(Volume[0]>1) return;

   if (Open[1]<Close[1] && SHighTen > 5*STelo && SLowTen == true && Razmer_1 > 60*Point)


Я правильно должен прописать: 
   double STelo = MathAbs(Close[1]-Open[1])/Point; // тело бычьей свечи
   double SHighTen = (High[1]-Close[1])/Point; // верхняя тень бычьей свечи
   bool SLowTen;

   if (NormalizeDouble(Open[1]-Low[1],Digits)<0.5*Point)  // отсутствие нижней тени бычьей свечи
  
   
   double Razmer_1 = (High[1]-Low[1])/Point; 

        
   if(Volume[0]>1) return;

   if (Open[1]<Close[1] && SHighTen > 5*STelo && SLowTen == true && Razmer_1 > 60*Point) // продажа
 
alexey1979621:

Jeder kann sich von einem Künstler beleidigt fühlen, Sie hätten es richtig schreiben müssen. Ich mag Kritik sehr gerne - konstruktive Kritik. Ich kenne den hässlichen Code selbst.

Nur noch eine Frage dazu - wie schreibt man in die Bedingung, dass die Größe der Kerze mehr als 60 Punkte (in fünf Ziffern) beträgt.



Dies ist ein Grundwissen, das Sie verstehen müssen und nicht nur nachschlagen können. Die Frage wird im Forum so oft wiedergekäut, dass nur die ganz Faulen die Antwort nicht finden und herausfinden können. Übrigens ist es für Sie sehr viel nützlicher.

Aber was ist mit der Hässlichkeit des Codes - das ist nichts für mich. Meiner Meinung nach ist es ganz normal, zusätzliche Variablen einzuführen, um den Code lesbarer zu machen.

 
artmedia70:

Vergleich doppelt:



In diesem Fall.

if (NormalizeDouble(p1-p2,Digits)<0.5*Point) {
   

NormalizeDouble() ist überflüssig ;).

 
VladislavVG:


In diesem Fall

NormalizeDouble() ist überflüssig ;).

Und dann erklären Sie ihm, warum es hier keine Normalisierung und normalisierte Preise bei Handelsaufträgen gibt? Deshalb habe ich die Normalisierung hier eingebaut, damit er nicht die Augen verdreht, wenn er nicht normalisierte Preise in Handelsaufträgen sendet.
 
artmedia70:
Und dann erklären Sie ihm, warum es hier keine Normalisierung gibt, aber bei Preisen in Handelsaufträgen mit Normalisierung? Deshalb habe ich die Normalisierung hier eingefügt, damit er nicht die Augen verdreht, wenn er nicht normalisierte Preise im Handelsauftrag sendet.


)))))))))))))))))) ja, das ist ein Argument.
 
VladislavVG:

)))))))))))))))))) ja, das ist ein Argument.
Ich denke, er wird mit der Zeit lernen, wo er muss und wo er nicht muss. Zugleich wird er sofort wissen, dass eine Normalisierung notwendig ist. Und wenn es möglich ist, darauf zu verzichten, dann auf der nächsten Stufe des Lernens... ;) Aus solchen Überlegungen heraus...
 
Leute, bitte helft mir. Es sind jetzt schon fünf Tage vergangen und ich kann es nicht herausfinden. Ich habe meinen EA so gestaltet, dass er den Stop Loss einer Order ändert, wenn die richtigen Kriterien ausgelöst werden. Und Stop-Loss - das sollte gesetzt werden, Take-Profit der letzten geschlossenen Bestellung. Aber wenn die Änderung beginnt, setzt der Roboter immer einen Stop Loss von 1,0000. Ich verstehe nicht, was los ist. Ich habe mir bereits das Hirn zermartert. Hat jemand eine Variante, wie man den Take-Profit des vorherigen Auftrags gegen den Stop-Loss des aktuellen Auftrags aufrechnen kann?