Helfen Sie mir, das Programmieren zu lernen. - Seite 7

 
Aleksei Stepanenko:

Was für ein Schwachsinn...

Ja, Dmitrys Zyklusaufruf ist nicht der eleganteste, aber er hat einen interessanten Code geschrieben, um die Zahl der Woche aus dem Datum zu ermitteln. Wenn ich es benutze, denke ich immer mit einem freundlichen Wort daran.

Aber, Dimitri, du musst höflicher zu den Leuten sein, sanfter.

Ich bin höflich zu den Menschen.

 

Der Code von Dmitri hat nicht überlebt, aber hier ist eine Überarbeitung, die darauf basiert:

//получаем номер недели в году
int GetWeekNumber(datetime eTime)
   {
   MqlDateTime eDate;
   //получаем дату начала года
   TimeToStruct(eTime,eDate);
   eDate.mon=1;
   eDate.day=1;
   eDate.hour=0;
   eDate.min=0;
   eDate.sec=0;
   datetime StartTime=StructToTime(eDate);
   //возвращаем дату назад в структуру, чтобы определить день недели начала года
   TimeToStruct(StartTime,eDate);
   return(int((eTime-StartTime+86400*eDate.day_of_week)/604800));
   }
 
Dmitry Fedoseev:

Ich bin höflich zu den Menschen.

Warum diese Aggression, Dimitri?

Ich habe lediglich gefragt, wie man PositionsTotal() in der Schleife korrekt verwendet. Und zwar nicht Sie persönlich, sondern ganz allgemein. Und du bist einfach ausgerastet. Was ist los, Dimitri?

Ich hoffe, ich habe mich nicht auf Ihre Bemerkung über die Entmenschlichung Ihrer Gesprächspartner bezogen?

 
Aleksei Stepanenko:

Der Code von Dmitri hat nicht überlebt, aber hier ist eine Überarbeitung, die darauf basiert:

Oh weh! Es ist eine großartige Schöpfung eines genialen Geistes! Unglaublich! Vielen Dank für die Mitteilung. Ich muss noch wachsen und zu solch kolossalen Höhen aufsteigen! Das ist wie ein Hackertrick. Das ist erstaunlich. Ich verstehe nicht, was da geschrieben steht. Das ist der perfekte Code. Schade, dass Sie es ein wenig verändert haben, es leuchtet nicht so hell, wie es könnte.

 
Nikolay Mitrofanov:

Oh weh! Dies ist eine großartige Schöpfung eines genialen Geistes!

Was für ein Geächteter!

 
Dmitry Fedoseev:

Was auch sehr lustig ist, ist, dass sich wieder einmal alle aufregen - ach, was habe ich für einen falschen Code für einen Neuling geschrieben... und jeder erzählt mir alles darüber... Erstaunlich!

Das ist nie geschehen. Niemand hat den Kodex kritisiert. Es geht um Vorlieben und Ansichten über die Schleife.

Und im Moment ist mit PositionsTotal() bereits ein Streit darüber entbrannt.

Sie haben den Eindruck, dass Sie wegen des Codes angegriffen werden. Aber in Wirklichkeit interessiert das niemanden.

Es gibt nicht viele Varianten, was richtig sein sollte und was gleichzeitig funktionieren würde. Es ist eine Frage der Wahl.


Und jetzt, mit meinem wunderbaren Expert Advisor, der Ihnen zeigt, welcher Ansatz für Schleifen (von drei häufig verwendeten) zu wählen ist, verschwindet die Notwendigkeit, über die Ankündigung von Schleifen zu streiten) Ist das nicht eine tolle Nachricht, Dmitry?

Freuen wir uns zusammen über unseren gemeinsamen Erfolg! Wir haben gemeinsam eine lange und jahrhundertealte Kontroverse im MQL-Forum gelöst! Endlich! Es leben alle Programmierer und Sympathisanten!

 
Tio Nisla:
Ich wollte schon früher hinzufügen, dass, wenn die Funktion somefunc() neben der Rückgabe eines Betrags noch andere Manipulationen durchführt, z.B. Handelsparameter berechnet, eine solche Verwendung schwer zu fangende Artefakte verursachen und einen Code-Autor in einen Stupor führen kann: "Ht? Wie kommt es, dass er viermal auftaucht? O_o F$#@!!! Sollte es nicht dreimal da sein? Warum belügt mich mein EA?". Das habe ich "Shithcod" genannt, worüber ein Experte bis in die Haarwurzeln empört war. Ich habe es nicht erwähnt, weil es offensichtlich ist, aber Sie haben es für mich getan. Aber Sie haben nicht berücksichtigt, dass die Adressierung über einen dynamisch berechneten Index ohne Neuinitialisierung des Arrays etwas anderes ist. Im nackten System führt dies in der Regel zu GPF, in Plus mit intelligenten Zeigern und Arrays zu einer Exception und ihrem Handler. In mql ist nicht klar, wohin das führt.

Es sollte nicht drei Mal sein, sondern einmal.

Können Sie zeichnen, wie man das macht?

 
Dmitry Fedoseev:

Ich bin höflich zu den Menschen.

Dimitri, das ist ein Spezialist von sehr hohem Niveau.

 
Nikolay Mitrofanov:

Ich schreibe über das Verständnis bei der Entwicklung. Erst studieren - dann handeln.

Im Gegenteil, Sie schreiben: erst handeln, dann denken und kämmen.

Es scheint dasselbe zu sein. Aber warum schreiben sie dann Codebeispiele und Dokumentation?) Ist es so, dass die Menschen weniger Schaden anrichten würden? Ich denke, das ist genau der Grund. Was meinen Sie dazu?

Lernen während der Entwicklung? Eigentlich geht es hier um die ersten Schritte der Programmierung. Wenn man den ersten EA schreibt, ist es am besten, zuerst Ergebnisse zu erzielen und sich dann später Gedanken über die Schönheit und Kürze des Codes zu machen.

Ich verlasse dieses Dialogfeld jetzt. Es ist alles nutzlos.

 
Aleksei Stepanenko:

Der Code von Dmitri hat nicht überlebt, aber hier ist eine Überarbeitung, die darauf basiert:

Ich denke, es sollte einfacher sein, etwa so

return ((int)(day_of_year/7))

Die laufende Nummer des Tages des Jahres steht in der StrukturMqlDateTime