//+------------------------------------------------------------------+ //| Calcular o lucro total e a contagem de transações para o período selecionado. //+------------------------------------------------------------------+ 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); // Por que essa linha não é mais baixa do que a próxima? if (HistoryDealGetInteger(deal_ticket, DEAL_ENTRY) != 1) continue; // E quanto aos negócios CloseBy e IN-commission? if (deal_time >= start_date && deal_time <= end_date) // Por que não 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); // Filtragem por tipo de transação (compra ou venda) bool type_filter = (deal_type == 0 || deal_type == 1); // Filtragem de caracteres bool symbol_filter = (StringFind(current_symbols, "ALL") != -1) || (StringFind(current_symbols, deal_symbol) != -1); // É caro verificar a primeira condição todas as vezes no loop. // Filtragem por Magiks bool magic_filter_all = (StringFind(current_magics, "ALL") != -1); // É caro verificar todas as vezes em um loop. // Dividir a string com mages em uma matriz string magic_values[]; int count = StringSplit(current_magics, ',', magic_values); // Isso também deveria ter sido retirado do loop. // Verificar se há "Empty" e magia 0 bool magic_filter_empty = false; for (int j = 0; j < count; j++) // Dear Cycle. { if (magic_values[j] == "Empty" && deal_magic == 0) // É mais econômico verificar a segunda condição primeiro. { magic_filter_empty = true; break; } } // Verificação de uma magia específica bool magic_filter_exact = false; for (int j = 0; j < count; j++) { if (IntegerToString(deal_magic) == magic_values[j]) // Por que comparar variáveis de cadeia de caracteres entre si? { magic_filter_exact = true; break; } }
Alguns comentários sobre o código.
Bom trabalho. Obrigado por compartilhar.
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Painel para cálculo do lucro histórico:
Esse script CalculateHistoryProfit versão 1.0 foi projetado para calcular o lucro de um período especificado usando um painel de gráfico.
Author: Sergey Porphiryev