mt5-fxpro-crypto/Teste_Configuracao.mq5
2025-07-31 08:03:35 -03:00

311 lines
No EOL
10 KiB
MQL5

//+------------------------------------------------------------------+
//| Teste_Configuracao.mq5 |
//| Script para testar configurações FXPro |
//| ADA/USD Verification |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property script_show_inputs
//--- Parâmetros de entrada
input bool TestSymbolInfo = true; // Testar informações do símbolo
input bool TestAccount = true; // Testar informações da conta
input bool TestIndicators = true; // Testar criação de indicadores
input bool TestConnection = true; // Testar conexão com servidor
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
Print("===============================================");
Print(" TESTE DE CONFIGURAÇÃO - ADA/USD FXPRO");
Print("===============================================");
bool allTestsPassed = true;
if(TestSymbolInfo)
{
Print("\n🔍 TESTANDO INFORMAÇÕES DO SÍMBOLO...");
if(!TestSymbol())
allTestsPassed = false;
}
if(TestAccount)
{
Print("\n💰 TESTANDO INFORMAÇÕES DA CONTA...");
if(!TestAccountInfo())
allTestsPassed = false;
}
if(TestIndicators)
{
Print("\n📊 TESTANDO CRIAÇÃO DE INDICADORES...");
if(!TestIndicatorCreation())
allTestsPassed = false;
}
if(TestConnection)
{
Print("\n🌐 TESTANDO CONEXÃO COM SERVIDOR...");
if(!TestServerConnection())
allTestsPassed = false;
}
Print("\n===============================================");
if(allTestsPassed)
{
Print("✅ TODOS OS TESTES PASSARAM!");
Print("✅ AMBIENTE CONFIGURADO CORRETAMENTE");
Print("✅ PRONTO PARA USAR O EA ADA/USD");
}
else
{
Print("❌ ALGUNS TESTES FALHARAM!");
Print("❌ VERIFIQUE AS CONFIGURAÇÕES ANTES DE USAR");
}
Print("===============================================");
}
//+------------------------------------------------------------------+
//| Testar informações do símbolo |
//+------------------------------------------------------------------+
bool TestSymbol()
{
string symbol = _Symbol;
bool success = true;
Print("Símbolo atual: ", symbol);
// Verificar se é ADA/USD
if(StringFind(symbol, "ADA") == -1)
{
Print("⚠️ AVISO: Símbolo não contém 'ADA'. Símbolo atual: ", symbol);
}
// Testar informações básicas do símbolo
double tickSize = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);
double tickValue = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE);
double minLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);
int digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
Print("📏 Tamanho do tick: ", DoubleToString(tickSize, digits));
Print("💵 Valor do tick: ", DoubleToString(tickValue, 5));
Print("📦 Lote mínimo: ", DoubleToString(minLot, 2));
Print("📦 Lote máximo: ", DoubleToString(maxLot, 2));
Print("📦 Passo do lote: ", DoubleToString(lotStep, 2));
Print("🔢 Dígitos: ", digits);
// Verificar configurações específicas da FXPro para ADA/USD
if(tickSize != 0.00001)
{
Print("⚠️ AVISO: Tick size esperado 0.00001, atual: ", DoubleToString(tickSize, digits));
}
if(minLot != 0.01)
{
Print("⚠️ AVISO: Lote mínimo esperado 0.01, atual: ", DoubleToString(minLot, 2));
}
// Testar preços atuais
double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
double bid = SymbolInfoDouble(symbol, SYMBOL_BID);
double spread = ask - bid;
if(ask > 0 && bid > 0)
{
Print("💹 Ask: ", DoubleToString(ask, digits));
Print("💹 Bid: ", DoubleToString(bid, digits));
Print("📊 Spread: ", DoubleToString(spread, digits), " (", DoubleToString(spread/tickSize, 1), " pontos)");
if(spread > 0.001)
{
Print("⚠️ AVISO: Spread alto: ", DoubleToString(spread, digits));
}
}
else
{
Print("❌ ERRO: Não foi possível obter preços atuais");
success = false;
}
return success;
}
//+------------------------------------------------------------------+
//| Testar informações da conta |
//+------------------------------------------------------------------+
bool TestAccountInfo()
{
bool success = true;
// Informações da conta
string company = AccountInfoString(ACCOUNT_COMPANY);
string server = AccountInfoString(ACCOUNT_SERVER);
string name = AccountInfoString(ACCOUNT_NAME);
long leverage = AccountInfoInteger(ACCOUNT_LEVERAGE);
double balance = AccountInfoDouble(ACCOUNT_BALANCE);
double equity = AccountInfoDouble(ACCOUNT_EQUITY);
double margin = AccountInfoDouble(ACCOUNT_MARGIN);
double freeMargin = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
Print("🏢 Corretora: ", company);
Print("🖥️ Servidor: ", server);
Print("👤 Nome da conta: ", name);
Print("⚖️ Alavancagem: 1:", leverage);
Print("💰 Saldo: $", DoubleToString(balance, 2));
Print("💰 Equity: $", DoubleToString(equity, 2));
Print("💰 Margem usada: $", DoubleToString(margin, 2));
Print("💰 Margem livre: $", DoubleToString(freeMargin, 2));
// Verificar se é FXPro
if(StringFind(company, "FxPro") == -1 && StringFind(server, "FxPro") == -1)
{
Print("⚠️ AVISO: Não parece ser uma conta FXPro");
Print("⚠️ Corretora detectada: ", company);
}
// Verificar alavancagem
if(leverage != 50)
{
Print("⚠️ AVISO: Alavancagem esperada 50:1, atual: 1:", leverage);
}
// Verificar saldo mínimo
if(balance < 100)
{
Print("⚠️ AVISO: Saldo baixo para trading. Recomendado: $300+ USD");
}
return success;
}
//+------------------------------------------------------------------+
//| Testar criação de indicadores |
//+------------------------------------------------------------------+
bool TestIndicatorCreation()
{
bool success = true;
string symbol = _Symbol;
// Testar criação de indicadores
int handleMA = iMA(symbol, PERIOD_H1, 21, 0, MODE_EMA, PRICE_CLOSE);
int handleRSI = iRSI(symbol, PERIOD_H1, 14, PRICE_CLOSE);
if(handleMA == INVALID_HANDLE)
{
Print("❌ ERRO: Não foi possível criar indicador MA");
success = false;
}
else
{
Print("✅ Indicador MA criado com sucesso");
IndicatorRelease(handleMA);
}
if(handleRSI == INVALID_HANDLE)
{
Print("❌ ERRO: Não foi possível criar indicador RSI");
success = false;
}
else
{
Print("✅ Indicador RSI criado com sucesso");
IndicatorRelease(handleRSI);
}
// Testar dados históricos
MqlRates rates[];
int copied = CopyRates(symbol, PERIOD_H1, 0, 10, rates);
if(copied > 0)
{
Print("✅ Dados históricos disponíveis: ", copied, " candles");
Print("📅 Último candle: ", TimeToString(rates[copied-1].time));
}
else
{
Print("❌ ERRO: Não foi possível obter dados históricos");
success = false;
}
return success;
}
//+------------------------------------------------------------------+
//| Testar conexão com servidor |
//+------------------------------------------------------------------+
bool TestServerConnection()
{
bool success = true;
// Verificar conexão
bool connected = TerminalInfoInteger(TERMINAL_CONNECTED);
long ping = TerminalInfoInteger(TERMINAL_PING_LAST);
if(connected)
{
Print("✅ Conectado ao servidor");
Print("🏓 Ping: ", ping, " ms");
if(ping > 100)
{
Print("⚠️ AVISO: Ping alto (>100ms). Pode afetar execução de ordens");
}
}
else
{
Print("❌ ERRO: Não conectado ao servidor");
success = false;
}
// Verificar permissões de trading
bool tradingAllowed = TerminalInfoInteger(TERMINAL_TRADE_ALLOWED);
bool autoTradingEnabled = TerminalInfoInteger(TERMINAL_MQID);
if(tradingAllowed)
{
Print("✅ Trading permitido no terminal");
}
else
{
Print("❌ ERRO: Trading não permitido no terminal");
success = false;
}
// Verificar horário de mercado
MqlDateTime time_struct;
TimeToStruct(TimeCurrent(), time_struct);
Print("⏰ Hora do servidor: ", TimeToString(TimeCurrent()));
Print("📅 Dia da semana: ", time_struct.day_of_week, " (1=Segunda, 5=Sexta)");
if(time_struct.day_of_week == 0 || time_struct.day_of_week == 6)
{
Print("⚠️ AVISO: Fim de semana - mercado fechado");
}
return success;
}
//+------------------------------------------------------------------+
//| Função auxiliar para verificar EA permissions |
//+------------------------------------------------------------------+
void CheckEAPermissions()
{
Print("\n🔐 VERIFICANDO PERMISSÕES DO EA...");
bool dllAllowed = TerminalInfoInteger(TERMINAL_DLLS_ALLOWED);
bool tradeAllowed = TerminalInfoInteger(TERMINAL_TRADE_ALLOWED);
Print("DLL Permitido: ", dllAllowed ? "Sim" : "Não");
Print("Trading Permitido: ", tradeAllowed ? "Sim" : "Não");
if(!tradeAllowed)
{
Print("❌ Para usar o EA, habilite o Auto Trading (Ctrl+E)");
}
}