Könnte mal bitte jemand in Worten erklären, was das alles bedeutet (ist kaum möglich zu recherchieren, wegen der Symbolik) ?
Die unklaren Statements sind gekennzeichnet !
public List<DeltaInfo> deltaInfos = new List<DeltaInfo>(); -> Klar !
for (int i=0; i<CurrentBar-1; i++) -> Klar !
{
var candle = GetCandle(i);
var delta = candle.Delta;
DeltaInfo item = new DeltaInfo()
{
Nubmer = i,
Delta = delta
};
deltaInfos.Add(item);
}
//Unklar
var positive = deltaInfos.Where(h => h.Delta > 0).Average(h => h.Delta);
var negative = deltaInfos.Where(h => h.Delta < 0).Average(h => h.Delta);
var ControlPositive = deltaInfos.Where(h => h.Delta > positive * Multiplier).ToList();
var ControlNegative = deltaInfos.Where(h => h.Delta > negative * Multiplier).ToList();
dann schau mal hier: https://learn.microsoft.com/de-de/dotnet/csharp/language-reference/operators/lambda-operator
Hab bei Google "C# ⇒" eingegeben, war gleich der erste Treffer.
Nebenbei sei auch erwähnt, dass dort Linq verwendet wird.
Doku:
https://learn.microsoft.com/de-de/dotnet/csharp/linq/
Anbei solltest du dir mal ein C# Buch o.ä. besorgen.
Die letzten Themen von dir sind alles Grundlagen.
Hier wäre es für dich hilfreicher erstmal C# zu lernen, dann erübrigen sich die Fragen zu den Grundlagen nach einer Weile.
T-Virus
Min Problem ist, dass ich mit meinen C/C++-Background in einem recht umfangreichen und schlecht bis gar nicht dokumentierten C# Umfeld (z.B. kaum vorhandene API doku) eine plug in dll entwickeln muss und in den Grundlagenveranstaltungen idr einfache Dinge wie Schleifen etc. vermittelt werden. Auch ist es für mich schwer die vielen möglichen und unterschiedlichen Schweibweise für Codeanweisungen unter einen Hut zu bekommen.
Hääää, "schlecht bis gar nicht dokumentiert"????? Also, dem muss ich widersprechen. Schau mal hier: https://learn.microsoft.com/de-de/dotnet/api/?view=net-7.0 und noch tausende andere Seiten. Man muss sich natürlich damit beschäftigen.
Ich meine doch nicht die offizielle c# doku, sondern die API-Doku, mit der ich zurechkommen muss und in der hunderte proprietäre Klassen und Funktionen zur Anwendung kommen, die teilweise auch noch obfuscated sind und die der Hersteller nicht beschreibt, und das für einen C# Neuling.
Auch ist es für mich schwer die vielen möglichen und unterschiedlichen Schweibweise für Codeanweisungen unter einen Hut zu bekommen.
Dir würde es im Prinzip schon helfen, wenn Du Dir einmal die Zeit nehmen würdest, den Einstieg in C# zu suchen und mal die gesamte Einsteiger Doku ein mal zu lesen - dafür ist sie da. Man merkt an Deinen Beiträgen, dass das bisher nicht erfolgt sein kann.
Du wirst Dir niemals alles merken können, aber Du wirst Dich an Dinge erinnern, dass Du das schonmal in der Doku gesehen hast und schneller eine Lösung für Deine Probleme zu finden.
Aktuell verfolgst Du einen Try-and-Error-Weg, der erfahrungsgemäß in den meisten Fällen frustriert, Zeit kostet - und oft scheitert.
mit der ich zurechkommen muss und in der hunderte proprietäre Klassen und Funktionen zur Anwendung kommen, die teilweise auch noch obfuscated sind und die der Hersteller nicht beschreibt, und das für einen C# Neuling.
Das ist nicht unsere Schuld.
Wenn du Probleme mit den Api von Dritten hast, dann musst du dich an diese wenden.
Dort muss dir dann eine Doku bereitgestellt werden oder zu mindestens Support gegeben werden.
Falls das nicht passiert, such nach einer Alternative die auch dokumentiert ist und bei der du auch Support bekommst.
Verschwende keine Zeit mit undokumentierten Api von dritten, wenn es bessere Alternativen gibt!
T-Virus
Das ist nicht unsere Schuld.
Hat niemand behauptet.
Aber der Abschnitt hier lautet ja "Grundlagen c#", weshalb ist es dann anrüchig Grundlagenfragen zu stellen ?
Wenn ich ein spezifisches Problem habe kann es durchaus hilfreich sein einen Tipp zu bekommen, mit dem man sich dann selbst weiterhelfen kann, ein Verweis auf das gesamte C#-Werk erscheint mir da weniger effizient zu sein.
Aber grundätzlich hast du natürlich recht (wenn man Zeit hat, kann und sollte man von Null anfangen).
Ich bring nun fast 20 Jahre Leuten C# bzw .NET bei.
Beobachtung ist eindeutig: die Leute, die nach try and error Vorgehen, können den Leuten, die einen strukturellen Lernweg verfolgen, nicht im Ansatz das Wasser reichen. Sie kommen nicht richtig voran, sind frustriert, bauen schlechten Code. Viele bekommen die Kurve, nicht alle.
Ich hab selbst so angefangen und kann sagen: war doof.
Wenn du meinst, dass so ein Vorgehen weniger effizient ist, dann wünsche ich dir trotzdem viel Erfolg.
Zeit hat man immer, denn das Stolpern von issue zu issue kostet mehr Zeit als das Lernen.
Vorgeschobene Ausrede. Auch nicht zum ersten Mal gehört 😃
Hallo cprogrammer
Zitat von cprogrammer
//Unklar var positive = deltaInfos.Where(h => h.Delta > 0).Average(h => h.Delta); var negative = deltaInfos.Where(h => h.Delta < 0).Average(h => h.Delta); var ControlPositive = deltaInfos.Where(h => h.Delta > positive * Multiplier).ToList(); var ControlNegative = deltaInfos.Where(h => h.Delta > negative * Multiplier).ToList();
.Where und .Average sind Linq-Methoden.
Das mit dem ⇒ ist ein Lambda-Statement.
Mit diesen Stichworten solltest du alles Nötige finden.
Zitat von cprogrammer
Aber der Abschnitt hier lautet ja "Grundlagen c#", weshalb ist es dann anrüchig Grundlagenfragen zu stellen ?
Du kannst hier gerne solche Fragen stellen, und du bekommst ja auch die Antworten. Aber eben auch diejenigen, die du nicht hören willst. Und auch wenn Abt manchmal etwas harsch ist, würde ich mir seine Worte zu Herzen nehmen.
Viele Grüße
Alf
Aber der Abschnitt hier lautet ja "Grundlagen c#", weshalb ist es dann anrüchig Grundlagenfragen zu stellen ?
Ich würde Linq und Lambda-Ausdrücke jetzt nicht unbedingt als Grundlagen ansehen wollen. Die setzen schon ein wenig Basiswissen über C# und .NET voraus.
Was den eigentlichen Code angeht. Einfache englisch-Kenntnisse reichen hier doch um zumindest erkennen zu können, was passiert. Man muss es ja quasi nur von links nach rechts lesen. Daher sehe ich hier auch nicht, dass dies schlecht dokumentiert sei. Aus meiner Sicht ist dieser Teil alleine durch Verwendung der Linq-Abfragen sehr gut lesbar und damit dokumentiert.
Nur mal am Beispiel der ersten Code-Zeile:
var positive = deltaInfos.Where(h => h.Delta > 0).Average(h => h.Delta);
In dieser Zeile werden aus der Auflistung 'deltaInfos' alle Delta-Werte größer 0 ermittelt und anschließend der Durchschnitt gebildet. Der Durchschnitt wird hier dann der variable positive zugewiesen.
Auch wenn ich annehme, dass du das mittlerweile selbst heraus gefunden hast, wollte ich das zur Erläuterung hier noch einmal aufnehmen.
Zitat von inflames2k
Ich würde Linq und Lambda-Ausdrücke jetzt nicht unbedingt als Grundlagen ansehen wollen. Die setzen schon ein wenig Basiswissen über C# und .NET voraus.
Eigentlich ist die einzige Voraussetzung, dass man sich einmal den Guide sowie die Methoden selbst durchliest.
Ich geb Dir aber in einem Punkt recht: mit einem Try-and-Error-Vorgehen und dem aktiven Verweigern den C# Guide zu lesen, sind Lambdas und Linq durchaus eine Hürde. Ist und bleibt ein Konzept.
Ansonsten ist es ein guter Hinweis der Lernkategorisierung, dass die meisten Tutorials und Guides - auch in anderen Sprachen - generell Lambdas und Linq unter den Einsteiger-Basics führen, dass sie auch ein solches sind. Davon sind Spezalitäten eher ausgenommen, was hier aber nicht der Fall ist.