3 Stimmen

Microsoft Chart Control - Großes rotes X (schlecht), wenn ich Finanzformeln verwende

Ich habe Microsofts .Net-Diagrammsteuerungen in einem anderen Beitrag hier entdeckt, und bis jetzt liebe ich sie. Für alle, die es brauchen, hier ist der Link: http://code.msdn.microsoft.com/mschart

Ich mache alles während der Laufzeit, wie z. B. das Erstellen von Serien und das Einfügen in einen Diagrammbereich. Ich kann erfolgreich ein Candlestick-Diagramm erstellen, indem ich es mit einem X-Wert und 4 Y-Werten versorge, und wenn ich es dem Diagramm wie folgt hinzufüge:

// "Price" is the .Name property of this series
chart1.Series.Add(priceseries);

Es funktioniert großartig. Als Nächstes habe ich mir die Beispiele angesehen, die mit diesem schönen Steuerelement für die Finanzformeln geliefert wurden. Die Probe sagt, um den gleitenden Durchschnitt Formel verwenden (nur mit diesem als Beispiel, ich kann nicht bekommen, eine von ihnen zu arbeiten), der Code ist dies:

chart1.DataManipulator.FinancialFormula(FinancialFormula.MovingAverage,"5","Input","Simple");

Wobei "5" die zu verwendende Periode ist, die ich also beliebig wählen kann. "Input" ist die Reihe der Datenquelle und "Simple" ist die Reihe der Ausgabe. Um dies in eine Art und Weise, die mit meinem Code funktioniert zu drehen, habe ich eine Schaltfläche erstellt und tat dies:

    private void button1_Click(object sender, EventArgs e)
    {
        chart1.DataManipulator.FinancialFormula(FinancialFormula.MovingAverage, "5", "Price", "SMA");     
    }

Schön einfach, nicht wahr? Nun, sobald ich auf diese Schaltfläche klicken, mein Diagramm-Steuerelement zeigt ein großes, rotes, unglücklich X und NICHT die gleitenden Durchschnitt Serie (die ich benannt "SMA") auf dem Diagramm in irgendeiner Weise, Form, oder Form.

Um den obigen Code zu ergänzen, habe ich versucht, die "SMA"-Serie im Voraus zu erstellen, und ich habe versucht, die "SMA"-Serie zum Diagramm hinzuzufügen, nachdem ich den Financialformula-Aufruf durchgeführt habe, und beide enden mit dem großen, gemeinen roten X. Wenn ich den Beispielcode noch einmal durchgehe, scheint es, dass die einzelne Codezeile alles ist, was benötigt wird, um die zusätzliche Datenserie zu generieren, aber ich komme nicht weiter! Es hilft auch nicht, dass das rote X keinerlei Debugging-Informationen enthält :(

Irgendwelche Ideen, wie man das große X loswerden und stattdessen die neue Datenreihe anzeigen kann?

Aktualisierung: Nur als Test, ich entfernt das Bit über das Hinzufügen der Serie zu Chart1, dann fügte ich die chart1.DataManipulator Bit direkt nach ihm. Wie erwartet, erscheint die anfängliche Serie, die alle meine anfänglichen Daten hat, nicht (weil ich den Teil entfernt habe, der sie zum Diagramm hinzufügt), aber wenn die nächste Codezeile die Formelanwendung ausführt - kein großes rotes X. Es werden keine Daten angezeigt, aber auch kein Fehlercode - also schätze ich, dass das eine Verbesserung ist? Dies führt mich zu der Annahme, dass es entweder ein Problem mit dem ursprünglichen Datensatz gibt, auf den ich die Formel anwende, oder etwas, das mit der Ansicht/den Grenzen des Diagrammsteuerelements selbst zu tun hat. Wenn ich etwas mehr auf dieser Spur finde, werde ich es als zweites Update veröffentlichen.

3voto

Bill Sambrone Punkte 4044

Ich habe die Ursache für mein Problem entdeckt:

priceseries.IsXValueIndexed = true;

Ich habe dies zunächst getan, um alle leeren Datenpunkte auszulassen (was bei einem Aktienkursszenario die Wochenenden wären). Als ich den Wert auf false änderte, funktionierte die Anwendung der Formel plötzlich einwandfrei. Der Nachteil ist, dass ich leere Stellen für Wochenenddaten habe, für die es keine Daten gibt! Aber das ist ein anderes Problem, das ich selbst lösen kann.

Für alle anderen, die dieses Problem haben, finden Sie in diesem Referenzartikel weitere Informationen: http://msdn.microsoft.com/en-us/library/dd456699(VS.100).aspx

Der Hinweis, dass Sie Ihre Daten zunächst gruppieren sollten, ist kein Scherz. Lassen Sie keine Datenpunkte aus!

2voto

Das ist mir auch passiert.

Bei der Verwendung von FinancialFormulas (insbesondere FinancialFormula.ExponentialMovingAverage) sollte Series ChartType auf SeriesChartType.Line gesetzt werden.

In meinem Code wurde es auf SeriesChartType.FastLine gesetzt und dies warf OverflowException von System.Drawing.dll

1voto

t0mm13b Punkte 33393

Das große rote X steht für die Kontrolle, bei der ein Problem bei der Ausführung/Interpretation der Formel aufgetreten ist und die den Geist aufgegeben hat. Vielleicht war die Formel zu komplex und umfangreich, als dass das Chart-Steuerelement sie hätte verarbeiten können... Vielleicht gibt es eine aktuellere Version des Codes, die diese Einschränkung aufgehoben hat. Es gibt bestimmt etwas auf codeplex.de für diese.

Dies kann auch zur Entwurfszeit passieren, wenn ein Formular entworfen wird und ein Steuerelement darauf gezogen wird, ein paar Eigenschaften hier und da festgelegt werden und ein großes rotes X zu erhalten, war dies ein häufiges Vorkommen, wenn ein Steuerelement zur Entwurfszeit auch fehlschlägt.

Ich hoffe, das hilft, Mit freundlichen Grüßen, Tom.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X