Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Warum stürzen Sie sich auf diese zweite Quelle?)
Wenn ich anfange, in der Sache zu antworten, lautet die Antwort entweder etwas von"separat herausgerissenen Phrasen" oder"Ich bin nicht die Art von Person, die denkt, dass sie immer mit allem Recht hat". Das ist bereits klar.
Was die Sache mit dem Tischtennis angeht, so ist das eine etwas seltsame Position. Sie interessieren sich für ein Thema, Sie erhalten Antworten und Leitfragen, und Sie fangen an, sie entweder zu hinterfragen oder abzulehnen. Brauchen Sie oder wer braucht das Thema überhaupt? Ich persönlich brauche diese Ergebnisse nicht, und das Ergebnis Ihrer Wahl interessiert mich nicht. Das Thema an sich schien der Aufmerksamkeit wert zu sein, aber der polemische Eifer des Autors lässt Zweifel an der Zweckmäßigkeit seiner Beibehaltung aufkommen.
Warum sollte das so sein? Sie haben dort OnTimer als dritte Nummer. Sie wurden bereits zu diesem Thema zitiert: Sie müssen lediglich eine Methode implementieren, die den Test korrekt durchführt. Es gibt eine. Dies ist die Funktion OnTimer () mit einem Mindestintervall. Sie müssen also etwas anderes im Sinn haben.
Davor haben Sie das geschrieben:
Aber das ist nicht dasselbe:
Eigentlich versuchen Sie, den Moment zu "erwischen", in dem neue Balken auf allen Symbolen ticken, und es ist offensichtlich, dass der beste Weg, dies zu tun, ist, das OnTick-Ereignis zu verwenden.
Die Sache ist, ich bin nicht versuchen, "fangen" Ticks in OnTimer(). In OnTimer() wird die Prüfung auf einen neuen Balken für jedes Symbol einzeln durchgeführt. Diese Prüfung wird in einem im Timer festgelegten Intervall (in Sekunden) durchgeführt.
Ein solches Ereignis wie ein Tick wird in der Funktion OnTick() und in dem von Konstantin Gruzdev vorgeschlagenen Schema, d.h. in der Funktion OnChartEvent() empfangen. In OnChartEvent() können wir jedes Ereignis verfolgen, einschließlich der Bildung eines neuen Balkens in einem beliebigen Zeitrahmen.
Es gibt kein Problem mit dem Timer. Jetzt teste ich den Multiwährungs-EA auf folgende Weise
1. Ich optimiere die Parameter für jedes Symbol separat, indem ich den EA an das Symbol anhänge, dessen Parameter optimiert werden. Der Optimierungsprozess wird mit der Funktion OnTick() durchgeführt. Zum Zeitpunkt der Optimierung der Parameter für ein Symbol werden alle anderen Symbole deaktiviert, d.h. sie nehmen nicht am Test teil und es wird nur mit dem Symbol gehandelt, dessen Parameter optimiert werden.
2. Nach der Optimierung der Parameter für alle Symbole müssen wir alle Symbole auf einmal testen. Ich verschiebe den Code in die Funktion OnTimer() (vorerst), aktiviere den Timer für erste Tests (60 Sekunden) und analysiere das erzielte Ergebnis. Wenn ich zufrieden bin, optimiere ich das Geldmanagementsystem und andere Teilsysteme. Dann schalte ich die Endprüfung ein (Timer 10 Sekunden) und erhalte meiner Meinung nach das genaueste Ergebnis. Meine Ansichten und Schlussfolgerungen beruhen auf den Ergebnissen der Tests aller Methoden und dem Vergleich dieser Ergebnisse untereinander.
Vermarkter:
Wenn es für Sie wichtig ist, würde ich trotzdem empfehlen, bei den Entwicklern nachzufragen, was die Entsprechung der fxt-Datei in Five ist. Ich habe bereits geschrieben, dass für verschiedene Tests wahrscheinlich unterschiedliche Tick-Basen erzeugt werden.
Das ist eine interessante Vermutung. Das könnte sogar der Fall sein. Eine Antwort der Entwickler wäre daher willkommen.
Es hat sich herausgestellt, dass die fliegende Erzeugung von Ticks schneller ist, als sie von der Festplatte zu lesen.
In mt5 gibt es keine fxt-Dateien. Jetzt werden die Ticks nicht mehr in eine Datei geschrieben, sondern aus der Minutenhistorie im laufenden Betrieb modelliert.
Es hat sich herausgestellt, dass die fliegende Erzeugung von Ticks schneller ist, als sie von der Festplatte zu lesen.
Hallo Renat. Ich danke Ihnen für Ihre Antwort. Das ist eine großartige Nachricht.
Ich sehe nichts großartig, es stellt sich heraus, dass in mt5 Sie nicht auf echte Ticks testen können
Wenn ich anfange, in der Sache zu antworten, lautet die Antwort entweder etwas in der Art von"gesondert herausgegriffene Phrasen" oder"Ich bin nicht die Art von Person, die denkt, dass sie immer mit allem Recht hat". Das ist bereits klar.
Nein. Es scheint, dass Sie immer noch nichts verstanden haben. Und nun werde ich es Ihnen zum vierten Mal erklären. Lassen Sie uns den Dialog wieder in Gang bringen.
Alles begann mit diesem Moment:
Yedelkin:
Achten Sie auf den Teil des Codes:
Hier können Sie sehen, dass Sie ein bestimmtes "Spy Control Panel MCM" an zwei verschiedenen Zeichen "aufhängen". Sie haben also verschiedene Symbole als Signalquellen. Aber Sie behaupten, dass "wir auf EURUSD handeln", d.h. die Quelle des Signals ist ein und dasselbe Symbol. Lassen Sie uns entscheiden.
Darauf habe ich Ihnen geantwortet:
tol64:
Oh, das kommt immer näher. Es scheint, dass eine Variante aufgetaucht ist, wo ich mich irre)). Ich werde eine Weile darüber nachdenken und dann ausführlich darüber schreiben...
Gedacht. Antwort:
tol64:
Es wird nur auf EURUSD gehandelt.
In meinen Tests berücksichtige ich das Schema von Konstantin Gruzdev - Implementation of the Multicurrency Mode in MetaTrader 5. ))) Alles ist definiert. Die angehängten Dateien enthalten den Spy Control Panel MCM Indikator und den exSpy Control Panel MCM Expert Advisor. Wenn Sie den Expert Advisor auf einem Chart installieren, können Sie sehen, wie er funktioniert. Das Protokoll zeigt deutlich die spezifizierten Ereignisse, die der Expert Advisor von verschiedenen Symbolen erhält. Alles ist klar, nichts ist vermischt.
Ich habe jetzt versucht, in OnChartEvent() das Symbol anzugeben, von dem die ID empfangen wird, aber das hat die Ergebnisse nicht verändert. Ich habe das zweite Zeichen aus OnInit() entfernt, um die Möglichkeit auszuschließen, dass die falschen Ereignisse empfangen werden. Der Test wurde nun mit dieser Variante durchgeführt:
...
Code
...
Bilder
...
Die Ergebnisse stimmen nicht überein. Es gibt kein zweites Symbol mehr, die Signale kommen nur vom EURUSD. Doch damit ist das Problem leider nicht gelöst.
Die Kernaussage war:"Es gibt kein zweites Symbol mehr, die Signale kommen nur vom EURUSD. Aber das hat das Problem leider nicht gelöst."
Siehst du? Das Entfernen der zweiten Quelle hat das Problem nicht gelöst. Die Situation wurde vereinfacht und Sie hätten die zweite Quelle weglassen können, aber Sie haben weiterhin das ursprüngliche Beispiel zitiert, anstatt zu versuchen, die folgende Frage zu lösen. Wie kommt es, dass wir, wenn wir nur ein Symbol haben (eine einzige Quelle), aber (im Testmodus) von einem anderen Symbol handeln, nicht identische Varianten erhalten?
Hier ist der Beitrag, in dem Sie dies zum Ausdruck gebracht haben:
Yedelkin:
Beginnen wir mit der richtigen Formulierung. Im ersten Beispiel hätten Sie "Handel mit EURUSD" gewählt. Tatsächlich kamen die Benutzerereignisse von zwei Symbolen, und im Event-Handler wurden TradeSignalCounter()+TradePerformer() aufgerufen, wenn Ereignisse von einem dieser beiden Symbole empfangen wurden. Wir können davon ausgehen, dass die Ereigniswarteschlange immer voll war.
Nun haben Sie eine der Signalquellen entfernt, aber aus irgendeinem Grund die Prüfung "if(sparam == Symbol_01)" in den Eventhandler eingetragen. Aber die nächste Frage ist anders. Dem Code nach zu urteilen, wird das Lizar-Schema im Modus "Alle Ticks" verwendet und die Funktionen TradeSignalCounter()+TradePerformer() werden bei jedem Tick von der Signalquelle (EURUSD) aufgerufen. Interesting hat bereits auf einen möglichen Überlauf der Ereigniswarteschlange hingewiesen. Ich frage mich, welches Instrument als Symbol_01-Parameter dieser beiden Funktionen verwendet wird und ob Sie versucht haben, die Periodizität der Ereignisse in Lizars Schema zu ändern.
Ich habe es Ihnen ein zweites Mal erklärt (Sie nennen es aus irgendeinem Grund "wegzaubern"):
tol64:
Ja, genau das wollte ich tun. Denn jede unserer Handlungen wird durch unseren Wunsch ausgelöst. In diesem Fall habe ich genau das bekommen, was ich wollte. Das heißt, wir haben nur mit EURUSD gehandelt, weil die Funktion TradePerformer() für jedes Symbol im Array der Symbole prüft, ob es erlaubt ist, zu handeln. Diese Option befindet sich in externen Variablen und zu dieser Zeit war der Handel mit dem GBPUSD-Symbol verboten. Benutzerereignisse kamen von zwei Symbolen, aber im Event-Handler erlaubte die TradePerformer()-Funktion wiederum nur den Handel mit dem EURUSD-Symbol. Die Funktion TradePerformer() enthält auch eine Funktion, die feststellt, ob ein neuer Balken für ein bestimmtes Symbol, in diesem Fall EURUSD, aufgetreten ist. Ihre Annahme, dass die Ereignis-Warteschlange immer voll war, ist richtig, aber in diesem Fall wurde alles separat verarbeitet, und eine Verspätung von einem Tick ist beim Testen von Tagesbalken nicht signifikant.
Das Entfernen einer Signalquelle, die an der Prüfung nicht beteiligt sein sollte, bestätigte nur, dass alles richtig gemacht worden war. Die Prüfung "if(sparam == Symbol_01)" blieb bestehen, als ich die Ergebnisse überprüfte, ohne eine Signalquelle zu löschen, die nicht geprüft werden sollte, von der sie aber geprüft werden sollte. Diese Prüfung erwies sich eigentlich sogar als überflüssig. Die Ergebnisse haben sich nicht verändert. Das EURUSD-Symbol wird als Parameter Symbol_01 verwendet. Ich habe versucht, die Häufigkeit der Ereignisse zu ändern, aber es hat sich nichts geändert. Genauer gesagt, kann ich sagen, dass der Modus "Alle Zecken" am genauesten ist.
Kernaussage:"Dieser Test erwies sich sogar als überflüssig. Die Ergebnisse haben sich nicht verändert."
Dies ist das zweite Mal, dass Sie "nicht bemerkt haben", dass das Problem nicht das ist, worauf Sie hinweisen, und dies ist das zweite Mal, dass ich Ihnen das Gleiche geantwortet habe, aber noch deutlicher.
Sie fuhren fort:
Yedelkin:
"...alles wurde vorher richtig gemacht" - das gehört in die Kategorie der Selbstgefälligkeit. Es war von Anfang an falsch. Offensichtlich messen Sie einem Phänomen wie dem "Überlauf der Ereigniswarteschlange" keine Bedeutung bei. Insbesondere, wenn es um die post-itische Übertragung von Ereignissen geht. Schauen Sie sich die Referenzmaterialien und das Forum zu diesem Thema an. Das Schlüsselwort ist "Warteschlange".
Da die Funktionen TradeSignalCounter()+TradePerformer() Ereignisse von nur einer Signalquelle verarbeiten, hat sich der Zustand der Warteschlange und ihr möglicher Überlauf in keiner Weise verändert. Mit anderen Worten: Das "Verbot der Verarbeitung von Ereignissen nach GBRUSD-Symbol" hat die entsprechenden Ereignisse nicht aus der Warteschlange entfernt. Zum dritten Mal weise ich auf das Problem hin: "Ein möglicher Überlauf in der Warteschlange der Ereignisse wurde bereits von Interesting angedeutet" :) Wenn Sie glauben, dass es sich nur um "einen Tick zu spät" handelt, worauf stützen sich dann solche Schlussfolgerungen?
"...In diesem Fall wurde alles getrennt behandelt". Das Problem ist, dass in der ursprünglichen Version der Event-Handler Funktionen aufrief, wenn Ereignisse von beiden Signalquellen empfangen wurden, und diese Funktionen dann bereits das Signal von der "unnötigen" Quelle herausfilterten. Aber die Funktionen wurden jedes (!) Mal aufgerufen.
Es spielt keine Rolle, in welchem Zeitraum der Event-Handler getestet wird. Wenn Lizars Schema Signale auf Tick-by-Tick-Basis erzeugt, dann wird auch die Ereigniswarteschlange auf Tick-by-Tick-Basis bewertet, nicht einmal pro Tag.
"Ich habe versucht, die Häufigkeit der Ereignisse zu ändern, aber das hat nichts gebracht. Genauer gesagt kann ich sagen, dass der Modus mit allen Zecken am genauesten ist." Könnten Sie mir ein paar Vergleichs-Screenshots zu Lizars Nicht-Steak-Modi geben?
Und ich habe Ihnen zum dritten Mal auf die höflichste Art und Weise geantwortet. Und die Smileys, die Sie offenbar als Spott empfunden haben, drücken in Wirklichkeit meine Freundlichkeit Ihnen gegenüber aus. Ich werde versuchen, sie nirgendwo anders unterzubringen, da sie so zweideutig sind.
tol64:
Guten Morgen! ))
Abgesehen von diesem gesondert herausgegriffenen Satz habe ich auch geschrieben: "...ich schließe nie aus, dass ich irgendwo falsch liege, und ich prüfe immer alles. Aber selbst nach den härtesten Kontrollen, wenn auf den ersten Blick alles richtig aussieht, kann ich nicht ausschließen, dass irgendwo ein Fehler vorliegt". Ich sollte hinzufügen, dass ich nicht zu den Menschen gehöre, die glauben, dass sie immer mit allem Recht haben. )))
Ich habe mir das Timer-Thema angeschaut. Die wichtigsten Punkte, die ich hervorgehoben habe, sind:
1. Während ein Ereignis verarbeitet wird, können die anderen nicht verarbeitet werden.
2. Wenn der Ereignisstapel überläuft, werden alte Ereignisse aus der Warteschlange entfernt, ohne verarbeitet zu werden.
Gehen wir sie der Reihe nach durch. Es gibt eine Aufzählung von Ereignissen:
...
Code
...
Während der Initialisierung geben wir an, von welchem Zeichen wir das Ereignis empfangen und welches Ereignis wir empfangen:
...
Code
...
Wir akzeptieren also nur das Ereignis CHARTEVENT_TICK von EURUSD. Es gibt keine anderen Symbole.
Der Test hat begonnen. Wenn ein Ereignis eintritt, ruft das Programm die Funktion OnChartEvent() auf, deklariert Arrays von Variablen für die Handelssignale und prüft auf das Ereignis. Wenn es sich um ein benutzerdefiniertes Ereignis handelt, ermittelt das Programm das Signal in TradeSignalCounter(), prüft dann in der Funktion TradePerformer(), ob ein neuer Balken aufgetreten ist und entscheidet dann in Abhängigkeit davon über weitere Bedingungen. Die Funktion hat aufgehört zu funktionieren und funktioniert nur noch, wenn ein Ereignis im EURUSD-Chart eingetreten ist. Mit anderen Worten: eine Zecke in diesem Fall.
...
Code
...
Die Ausführung dieser Funktionen erfolgt sehr schnell. Die Warteschlange hat keine Zeit, überzulaufen, und wir verpassen keine wichtigen Ereignisse. Und wenn die Warteschlange sogar überläuft und Ereignisse verpasst werden, was verpassen wir dann? Eine Zecke, zwei Zecken, drei? Und was ist damit? In den Tagesbars ist sie unbedeutend.
Was haben Sie an dieser zweiten Quelle auszusetzen?))) Es gibt keine zweite Quelle mehr. Es gibt einen - EURUSD, aber der Expert Advisor handelt auf EURUSD vom GBPUSD-Chart aus. Und die Ergebnisse sind identisch falsch. Eine Kopie. Das heißt, sie sind dieselben, als ob die zweite Quelle vorhanden wäre. )))
-----------
Führen Sie den Test am besten selbst durch, zeigen Sie die Testergebnisse vor und schreiben Sie (kurz) auf, was Sie getan haben, um die richtigen Testergebnisse zu erhalten, wenn Sie das natürlich schaffen. Der einfachste Experte ist für diesen Test ausreichend. Einstieg bei jeder Bedingung, Stop Loss, Take Profit. Das können die Tagesbarren der letzten 10 Jahre sein. Und Sie werden es selbst sehen. Einige Zeiträume werden übereinstimmen, andere nicht. Öffnen Sie die Ergebnistabelle und sehen Sie, wo die Diskrepanz liegt.
Und danach schreiben Sie:
Yedelkin:
Über das Ping-Pong - eine etwas seltsame Position. Sie interessieren sich für ein bestimmtes Thema, Sie erhalten Antworten und stellen Suggestivfragen, die Sie entweder in Frage stellen oder ablehnen. Brauchen Sie oder wer braucht das Thema überhaupt? Ich glaube nicht, dass irgendjemand Ihre Arbeit für Sie erledigen wird. Mir persönlich sind die Ergebnisse egal, und die Folgen Ihrer Entscheidungen interessieren mich wenig. Das Thema selbst scheint der Aufmerksamkeit wert zu sein, aber der polemische Eifer des Autors lässt Zweifel an der Zweckmäßigkeit seiner Beibehaltung aufkommen.
Dann gibt es noch Fragen.
1. Was für eine Reaktion haben Sie erwartet, wenn Sie immer wieder das Gleiche wiederholen, nämlich dass es bereits irrelevant ist und Sie bereits dreimal eine Antwort erhalten haben?
2. Wenn Sie meine Antworten als Argument verstanden haben, dann irren Sie sich, denn ich habe geantwortet und erklärt, was ich tue. Aber Sie haben es als Argument aufgefasst, weil Sie selbst argumentiert haben. )))
3. ich verlasse mich nie darauf, dass jemand anderes meine Arbeit erledigt.
4. ich bin nicht der Einzige, der das Thema braucht, sondern alle, die auf dieses Problem stoßen werden. Wenn Sie es nicht brauchen, warum haben Sie dann den Dialog aufgenommen? Mein polemischer Eifer war nur eine Folge, die Ursache kam von Ihnen.
---
Ich werde Ihr Verhalten nicht unter psychologischen Gesichtspunkten analysieren, sonst müssen wir beide aus der Atmosphäre fliegen. Versuchen wir also, den Dialog kurz und bündig zu halten. Aber wenn Sie es nicht brauchen, ist es besser, nicht weiterzumachen. Weil: Bitte beachten Sie die Regeln. )))
Natürlich bin ich persönlich nicht daran interessiert, die Besonderheiten der Weltanschauungen anderer Menschen zu analysieren. Ich habe meine Schlussfolgerungen über Ihren polemischen Eifer bereits oben dargelegt. Dem ist nichts hinzuzufügen.
... Dem ist nichts hinzuzufügen.
Ja, das sollten Sie besser nicht. Andernfalls wird es sich nur als leeres Geschwätz herausstellen. Lassen Sie uns zum Thema zurückkehren.
---
Ich habe eine weitere Reihe von Tests durchgeführt. Die zuvor vorgestellten Testergebnisse wurden nur im Modus - Eröffnungspreise - erzielt. Meiner Meinung nach konnte ich in diesem Modus nur mit der Funktion OnTimer() korrekte Ergebnisse erzielen. Alle anderen Methoden lieferten nicht die richtigen Ergebnisse.
Diesmal habe ich Tests im Modus Alle Zecken ab Anfang 2011 durchgeführt. Gleichzeitig war es interessant zu sehen, wie lange diese oder jene Methode dauern würde. Beim automatischen Testen von Expert Advisors für die Meisterschaft muss ein Expert Advisor beispielsweise im Modus "Alle Ticks" nicht länger als 15 Minuten getestet werden. Für diesen Test habe ich einen einfachen Expert Advisor erstellt, der mit 12 Währungspaaren handelt. Die einzigen Bedingungen, die er enthält, sind Stop Loss, Take Profit und Trailing Stop. Es gibt keine Positionserweiterung und -verengung, kein Geldmanagementsystem, das gehandelte Lot ist fest (0,1). Der Expert Advisor ist ohne einen einzigen Zyklus geschrieben, er ist so weit wie möglich vereinfacht. Der Arbeitszeitrahmen für alle Symbole ist H8.
Ich habe die Parameter für jedes Symbol einzeln optimiert, und zwar mit OnTick(). Ich habe nicht gewartet, bis die Optimierung abgeschlossen war. Nach 100 Durchläufen habe ich die Optimierung gestoppt und mich für die Option mit dem geringsten Risiko und nicht für die beste Option entschieden.
Die Prozessorfrequenz, mit der die Tests durchgeführt wurden, beträgt 2 GHz. Hier steht, worauf Sie sich konzentrieren sollen.
Außerdem werde ich das Wort "identisch" durch "fast identisch" ersetzen, da keine exakte Übereinstimmung angestrebt wird, aber bei einer visuellen Analyse des Diagramms sollten die Unterschiede nicht auffällig sein.
---
Testergebnisse:
Die Funktion OnTimer() wurde für den ersten Test verwendet, da sie beim letzten Mal fast identische Ergebnisse lieferte. Das Ergebnis wird nun als Referenz für einen Vergleich dienen.
OnTimer()
Das Intervall des Timers beträgt 60 Sekunden.
Der Test dauerte 27 Minuten.
---
Timer-Intervall 300 Sekunden:
Die Ergebnisse sind fast identisch. Die Testdauer beträgt 26 Minuten.
---
Timer-Intervall 28800 Sekunden - 8 Stunden (Zeitrahmen verwendet).
Die Ergebnisse sind fast identisch. Die Dauer des Tests beträgt 25 Minuten.
Ich habe auch Tests mit Intervallen von 1800 und 3600 Sekunden durchgeführt, die Ergebnisse sind ebenfalls konsistent.
-----------
OnChartEvent()
Der Zeitraum von 1 Minute ist CHARTEVENT_NEWBAR_M1.
Die Ergebnisse sind fast identisch. Die Dauer des Tests beträgt 37 Minuten.
---
Zeitraum von 1 Minute - CHARTEVENT_NEWBAR_H1.
Die Ergebnisse sind fast identisch. Testdauer 27 Minuten.
---
Zeitraum von 1 Minute - CHARTEVENT_NEWBAR_H8.
Die Ergebnisse sind fast identisch. Die Dauer des Tests beträgt 27 Minuten.
----------
OnTick()
Die Ergebnisse sind fast identisch. Die Testdauer beträgt 72 Minuten.
-----------------
Im Modus "Alle Zecken" zeigten alle Methoden fast identische Ergebnisse. OnTick() erwies sich als die längste Variante. Die Testdauer vonOnTimer() und OnChartEvent() ist fast identisch.
Bericht:
Unterm Strich:
In meinem Fall kann selbst der einfachste Multicurrency Expert Advisor, der mit 12 Währungspaaren auf einem sehr großen Zeitrahmen (H8) handelt, nicht in die Meisterschaft aufgenommen werden, da er den Test (15 Minuten für den Test) nicht bestehen wird. Wir müssen uns den "Appetit verkneifen" oder nach Methoden suchen, um den Code des Expert Advisors maximal zu optimieren.
---
Ich frage mich, ob jemand einen Schnelltest mit 12 Paaren durchgeführt hat? Wie lange dauert Ihr Test?
Ich frage mich, ob jemand einen Schnelltest mit 12 Paaren durchgeführt hat? Wie lange dauert Ihr Test?
capr2011 auf EURUSD:H1 jedes Tick 2011.01.01-2011.08.01
4. Start
beendet in 3 min 21 sec
5. Statistik
1233 kb an Protokolldateien
100 Abschlüsse, 200 Geschäfte, Gewinn 83043,82 USD