//+------------------------------------------------------------------+ //| Seçilen dönem için toplam karı ve anlaşma sayısını hesaplayın | //+------------------------------------------------------------------+ 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); // Neden bu satır diğerinden daha aşağıda değil? if (HistoryDealGetInteger(deal_ticket, DEAL_ENTRY) != 1) continue; // CloseBy anlaşmaları ve IN-commission ne olacak? if (deal_time >= start_date && deal_time <= end_date) // Neden HistorySelect değil? { 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); // İşlem türüne göre filtreleme (alış veya satış) bool type_filter = (deal_type == 0 || deal_type == 1); // Karakter filtreleme bool symbol_filter = (StringFind(current_symbols, "ALL") != -1) || (StringFind(current_symbols, deal_symbol) != -1); // Döngüde her seferinde ilk koşulu kontrol etmek pahalıya mal olur. // Magiks ile Filtreleme bool magic_filter_all = (StringFind(current_magics, "ALL") != -1); // Bir döngü içinde her seferinde kontrol etmek pahalıdır. // Dizeyi büyücülerle birlikte bir diziye böl string magic_values[]; int count = StringSplit(current_magics, ',', magic_values); // Bu da döngüden çıkarılmalıydı. // "Empty" ve magick 0 olup olmadığını kontrol edin bool magic_filter_empty = false; for (int j = 0; j < count; j++) // Sevgili Döngü. { if (magic_values[j] == "Empty" && deal_magic == 0) // Önce ikinci koşulu kontrol etmek daha ucuzdur. { magic_filter_empty = true; break; } } // Belirli bir büyüyü kontrol edin bool magic_filter_exact = false; for (int j = 0; j < count; j++) { if (IntegerToString(deal_magic) == magic_values[j]) // Dize değişkenleri neden birbirleriyle karşılaştırılsın? { magic_filter_exact = true; break; } }
Kod hakkında bazı yorumlar.
İyi iş çıkardınız. Paylaştığınız için teşekkürler.
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Geçmiş Kar Hesaplama Paneli:
Bu CalculateHistoryProfit komut dosyası sürüm 1.0, bir grafik paneli kullanarak belirli bir dönem için karı hesaplamak üzere tasarlanmıştır.
Author: Sergey Porphiryev