Socorre, alguem pode me ajudar a resolver esses erros, não sei nada de programação, estou tentando no chatgbp, mais ele não consegue resolver os erros do codigo que ele escreveu.
input double LotSize = 1.0; // Tamanho do lote definido pelo usuário
int trade_count = 0;
datetime last_trade_day = 0;
ulong last_ticket = 0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
EventSetTimer(60); // Define o temporizador para verificar a cada minuto
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
// Verifica se o símbolo é o mini índice e está pronto para negociação
if (StringFind(Symbol(), "WIN") != -1 && IsTradeAllowed())
{
double Point = SymbolInfoDouble(Symbol(), SYMBOL_POINT);
datetime time = TimeCurrent();
MqlDateTime tm;
TimeToStruct(time, tm);
// Verifica se é 09:00 da manhã e se ainda não executou as operações do dia
if (tm.hour == 9 && tm.min == 0 && !TradingDoneToday())
{
// Obtém o primeiro candle do dia
MqlRates rates[];
int copied = CopyRates(Symbol(), PERIOD_M1, 0, 1, rates);
if (copied > 0)
{
double candle_body = MathAbs(rates[0].close - rates[0].open);
double candle_range = rates[0].high - rates[0].low;
if (candle_body >= 70.0 * Point && candle_body <= 500.0 * Point)
{
double body_percentage = candle_body / candle_range;
if (body_percentage >= 0.7)
{
if (rates[0].close > rates[0].open) // Candle de compra
{
PlaceTrade(ORDER_TYPE_BUY);
}
else // Candle de venda
{
PlaceTrade(ORDER_TYPE_SELL);
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Coloca uma ordem de trade |
//+------------------------------------------------------------------+
void PlaceTrade(ENUM_ORDER_TYPE order_type)
{
double Point = SymbolInfoDouble(Symbol(), SYMBOL_POINT);
double price = (order_type == ORDER_TYPE_BUY) ? SymbolInfoDouble(Symbol(), SYMBOL_ASK) : SymbolInfoDouble(Symbol(), SYMBOL_BID);
double sl = (order_type == ORDER_TYPE_BUY) ? price - 300 * Point : price + 300 * Point;
double tp = (order_type == ORDER_TYPE_BUY) ? price + 100 * Point : price - 100 * Point;
MqlTradeRequest request;
MqlTradeResult result;
ZeroMemory(request);
ZeroMemory(result);
request.action = TRADE_ACTION_DEAL;
request.symbol = Symbol();
request.volume = LotSize; // Usa o tamanho do lote definido pelo usuário
request.type = order_type;
request.price = price;
request.sl = sl;
request.tp = tp;
request.deviation = 2;
request.magic = 0;
request.comment = "";
if (!OrderSend(request, result))
{
Print("Erro ao colocar ordem: ", GetLastError());
}
else
{
Print("Ordem colocada com sucesso: ", result.order, " Ponto de entrada: ", price);
last_ticket = result.order;
// Incrementa contador de trades realizados hoje
IncrementTradeCount();
}
}
//+------------------------------------------------------------------+
//| Função para verificar se as operações do dia já foram feitas |
//+------------------------------------------------------------------+
bool TradingDoneToday()
{
MqlDateTime tm;
TimeToStruct(TimeCurrent(), tm);
int today = tm.day;
if (last_trade_day != today)
{
trade_count = 0;
last_trade_day = today;
}
return trade_count >= 3;
}
//+------------------------------------------------------------------+
//| Função para incrementar o contador de trades |
//+------------------------------------------------------------------+
void IncrementTradeCount()
{
trade_count++;
}
//+------------------------------------------------------------------+
//| Verifica se a negociação é permitida |
//+------------------------------------------------------------------+
bool IsTradeAllowed()
{
if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) || !AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
{
Print("Negociação não permitida.");
return false;
}
if (Symbol() == "" || StringFind(Symbol(), "WIN") == -1)
{
Print("Símbolo não encontrado ou não é WIN.");
return false;
}
return true;
}
//+------------------------------------------------------------------+
//| Verifica o resultado da ordem |
//+------------------------------------------------------------------+
void CheckOrderResult(ulong order_id)
{
if (HistorySelect(OrderGetInteger(order_id, ORDER_TIME_SETUP), TimeCurrent()))
{
if (OrderSelect(order_id, SELECT_BY_TICKET, MODE_HISTORY))
{
double result_profit = OrderGetDouble(ORDER_PROFIT);
if (result_profit > 0)
{
Print("Resultado: Gain de ", result_profit);
}
else
{
Print("Resultado: Loss de ", result_profit);
}
}
else
{
Print("Erro ao selecionar ordem: ", GetLastError());
}
}
}
//+------------------------------------------------------------------+
//| Verifica o resultado da última ordem |
//+------------------------------------------------------------------+
void OnTick()
{
if (last_ticket != 0)
{
CheckOrderResult(last_ticket);
last_ticket = 0; // Reseta o ticket após checar o resultado
}
}
Arquivos anexados:
WhatsApp_Image_2024-07-11_at_15.23.25.jpeg
104 kb
- preciso e ajuda para finalizar um projeto de EA que estou fazendo
- EA NÃO LANÇA TP E NEM SL
- Ordem para modificar o Stop e o Profit não funcionando, HELPPP
Eu acredito que é melhor você recorrer ao serviço de Freelance, menu acima.
Esqueça o CHATGPT para MQL5, ele mistura código do MQL5 com MQL4 e gera código incompleto e errado.
Aprenda a programar ou use o serviço de freelancer.
rodineisantiago santiago:
Pelos erros apontados na imagem anexada, dá pra perceber que foram utilizadas funções/sintaxe da MQL4... Veja se as sugestões listadas nesse tópico podem lhe ajudar:
Sugestões sobre como maximizar a eficiência do ChatGPT para o desenvolvimento de códigos em MQL4 ou MQL5 - Expert Advisors e Negociação Automatizada - Fórum de negociação algorítmica MQL5![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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