//+------------------------------------------------------------------+ //| Berechnung des Gesamtgewinns und der Anzahl der Geschäfte für den ausgewählten Zeitraum | //+------------------------------------------------------------------+ void CalculateProfit() { total_profit = 0; total_deals = 0; HistorySelect(0, TimeCurrent()); int total_orders = HistoryDealsTotal(); for (int i = total_orders - 1; i >= 0; i--) { ulong deal_ticket = HistoryDealGetTicket(i); datetime deal_time = (datetime)HistoryDealGetInteger(deal_ticket, DEAL_TIME); // Warum ist diese Zeile nicht niedriger als die nächste? if (HistoryDealGetInteger(deal_ticket, DEAL_ENTRY) != 1) continue; // Was ist mit CloseBy-Geschäften und IN-Provisionen? if (deal_time >= start_date && deal_time <= end_date) // Warum nicht HistorySelect? { string deal_symbol = HistoryDealGetString(deal_ticket, DEAL_SYMBOL); int deal_magic = (int)HistoryDealGetInteger(deal_ticket, DEAL_MAGIC); int deal_type = (int)HistoryDealGetInteger(deal_ticket, DEAL_TYPE); // Filterung nach Transaktionsart (Kauf oder Verkauf) bool type_filter = (deal_type == 0 || deal_type == 1); // Zeichenfilterung bool symbol_filter = (StringFind(current_symbols, "ALL") != -1) || (StringFind(current_symbols, deal_symbol) != -1); // Es ist teuer, die erste Bedingung jedes Mal in der Schleife zu prüfen. // Filterung durch Magiks bool magic_filter_all = (StringFind(current_magics, "ALL") != -1); // Es ist teuer, jedes Mal in einer Schleife zu prüfen. // Aufteilung der Zeichenkette mit Magiern in ein Array string magic_values[]; int count = StringSplit(current_magics, ',', magic_values); // Auch dies sollte aus der Schleife herausgenommen werden. // Prüfung auf "Leer" und Magie 0 bool magic_filter_empty = false; for (int j = 0; j < count; j++) // Lieber Zyklus. { if (magic_values[j] == "Empty" && deal_magic == 0) // Es ist billiger, zuerst die zweite Bedingung zu prüfen. { magic_filter_empty = true; break; } } // Suche nach einer bestimmten Magie bool magic_filter_exact = false; for (int j = 0; j < count; j++) { if (IntegerToString(deal_magic) == magic_values[j]) // Warum werden String-Variablen miteinander verglichen? { magic_filter_exact = true; break; } }
Einige Anmerkungen zum Code.
Gute Arbeit. Danke fürs Teilen.
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
Panel zur Berechnung des historischen Gewinns:
Dieses Skript CalculateHistoryProfit Version 1.0 wurde entwickelt, um den Gewinn für einen bestimmten Zeitraum mit Hilfe eines Diagrammpanels zu berechnen.
Author: Sergey Porphiryev