Correção de EA basedo em MAXD Intradey

MQL5 Esperti Forex

Lavoro terminato

Tempo di esecuzione 17 ore
Feedback del dipendente
Cliente muito compreensivo :), espero ter mais negócios com ele!
Feedback del cliente
Desenvolvedor rápido atencioso muito educado. com certeza recomendo a toda comunidade.

Specifiche

Olá, eu preciso de um desenvolvedor experiente em MQL5 para corrigir um código de Expert Advisor que está com erros de compilação. O código é para uma estratégia baseada no indicador MACD e tem parâmetros de risco definidos pelo usuário. O código está anexado a este pedido. Por favor, me diga quanto tempo e quanto custa para fazer esse trabalho.

#define MagicNumber 12345
//---
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>


// Parâmetros de entrada
input int MagicNumber = 12345;  // Número mágico para identificar as operações do robô
input double RiskPercentage = 1.0;  // Percentual de risco por operação (1.0 = 1%)
input int StopLoss = 20;  // Valor do stop-loss em pips
input int TakeProfit = 30;  // Valor do take-profit em pips


// Função de inicialização do robô
int OnInit()
{
    // Definir o risco por operação com base no saldo da conta
    double AccountBalance = AccountBalance();
    double RiskAmount = AccountBalance * RiskPercentage / 100.0;
    double OneLotValue = MarketInfo(Symbol(), MODE_TICKVALUE);

    // Definir o tamanho do lote com base no risco por operação e no valor de um lote
    double LotSize = RiskAmount / (OneLotValue * StopLoss);

    // Definir as configurações do risco
    SetRiskParameters(Symbol(), StopLoss, TakeProfit, LotSize);

    return (INIT_SUCCEEDED);
}

// Função para abrir uma posição de compra
void BuySignal()
{
    // Verificar se não há nenhuma posição aberta
    if (PositionsTotal() == 0)
    {
        // Gerar sinal de compra do MACD
        if (iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1) > iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1))
        {
            // Calcular o tamanho do lote com base no risco por operação
            double LotSize = GetRiskLotSize(Symbol());

            // Abrir uma posição de compra
            int ticket = OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, Bid - StopLoss * Point, Bid + TakeProfit * Point, "Buy", MagicNumber, 0, Blue);
        }
    }
}

// Função para abrir uma posição de venda
void SellSignal()
{
    // Verificar se não há nenhuma posição aberta
    if (PositionsTotal() == 0)
    {
        // Gerar sinal de venda do MACD
        if (iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1) < iMACD(Symbol(), 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 1))
        {
            // Calcular o tamanho do lote com base no risco por operação
            double LotSize = GetRiskLotSize(Symbol());

            // Abrir uma posição de venda
            int ticket = OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, Ask + StopLoss * Point, Ask - TakeProfit * Point, "Sell", MagicNumber, 0, Red);
        }
    }
}

// Função para gerenciar o risco da posição
void SetRiskParameters(string symbol, int stopLoss, int takeProfit, double lotSize)
{
    // Definir as configurações de stop-loss e take-profit
    int slippage = MarketInfo(symbol, MODE_SPREAD) + StopLevel * Point;
    double stopLossPrice = stopLoss * Point;
    double takeProfitPrice = takeProfit * Point;

    // Definir as configurações de risco para a posição atual
    for (int i = 0; i < OrdersTotal(); i++)
    {
        if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if (OrderSymbol() == symbol && OrderMagicNumber() == MagicNumber)
            {
                if (OrderType() == OP_BUY)
                {
                    OrderModify(OrderTicket(), OrderOpenPrice(), stopLossPrice, takeProfitPrice, 0, Blue);
                }
                else if (OrderType() == OP_SELL)
                {
                    OrderModify(OrderTicket(), OrderOpenPrice(), stopLossPrice, takeProfitPrice, 0, Red);
                }
            }
        }
    }
}

// Função para calcular o tamanho do lote com base no risco por operação
double GetRiskLotSize(string symbol)
{
    double AccountBalance = AccountBalance();
    double RiskAmount = AccountBalance * RiskPercentage / 100.0;
    double OneLotValue = MarketInfo(symbol, MODE_TICKVALUE);
    double LotSize = RiskAmount / (OneLotValue * StopLoss);
    return LotSize;
}

// Função de execução contínua do robô
void OnTick()
{
    // Verificar os sinais de entrada
    BuySignal();
    SellSignal();
}

// Função de encerramento do robô
void OnDeinit(const int reason)
{
    // Encerrar todas as posições abertas
    for (int i = PositionsTotal() - 1; i >= 0; i--)
    {
        if (PositionSelectByTicket(PositionGetTicket(i)))
        {
            if (PositionMagicNumber() == MagicNumber)
            {
                OrderClose(PositionGetTicket(i), PositionGetDouble(POSITION_VOLUME), PositionGetDouble(POSITION_CLOSE), 3, Violet);
            }
        }
    }
}


Obrigado.

Con risposta

1
Sviluppatore 1
Valutazioni
(39)
Progetti
40
10%
Arbitraggio
0
In ritardo
0
Gratuito
2
Sviluppatore 2
Valutazioni
(564)
Progetti
933
47%
Arbitraggio
302
59% / 25%
In ritardo
125
13%
Caricato
3
Sviluppatore 3
Valutazioni
(110)
Progetti
171
33%
Arbitraggio
12
25% / 33%
In ritardo
0
In elaborazione
4
Sviluppatore 4
Valutazioni
(47)
Progetti
79
11%
Arbitraggio
4
25% / 75%
In ritardo
2
3%
Gratuito
5
Sviluppatore 5
Valutazioni
(11)
Progetti
17
59%
Arbitraggio
2
0% / 100%
In ritardo
2
12%
Gratuito
6
Sviluppatore 6
Valutazioni
(6)
Progetti
7
14%
Arbitraggio
1
100% / 0%
In ritardo
0
Gratuito
7
Sviluppatore 7
Valutazioni
(261)
Progetti
425
38%
Arbitraggio
86
44% / 19%
In ritardo
71
17%
Caricato
Ordini simili
DINÂMICA OPERACIONAL TIPOS DE MÉDIAS: EXPONENCIAIS. TEMPO GRÁFICO: “X” MINUTOS DINÂMICA DO TRADE: QUANDO AS MÉDIAS “A”EXP DO “X” MINUTOS + “B”EXP DO “X” MINUTOS + “C” EXP E “D” ARITMETICA DO “X” MINUTOS ESTÃO ALINHADAS NA MESMA DIREÇÃO NESTA ORDEM TANTO QUANTO PARA QUEDA, QUANTO PARA ALTA. ***O ALINHAMENTO DA “C”EXP E “D” ARITMETICA DO “X” MINUTOS NÃO É RELEVANTE SE UMA ESTÁ NA FRENTE OU ATRAS DA OUTRA EM
Olá, preciso de um programador experiente que esteja disposto a executar o trabalho, porém quero alguém que seja dedicado e rápido, o projeto é relativamente simples, porém o robô precisa ter um código extremamente "limpo" para execução rápidas, deve possuir: Lote; Trailing Stop; Stop Loss; Slippage; Spread Máximo; Meta diária de ganho; Meta diária de Perda; Horário de negociação; A Estratégia está na imagem em
EA que efetue compra e venda com base no estocástico, que seja programável lote, trailing stop e quantidade de pontos para ganho. Estocástico programável também. Que possa também programar horário das operações
olá. preciso de um expert bem especifico. ele deve ter as funcionalidades basicas, stop loss, take profit, breakevean, stop movel. com opção de configurar em pips. ele deve funcionar em qualquer ativo forex. ele deve operar de segunda a sexta, no horario especificado. e deve operar somente day trade. ou seja encerrar as ordem no final do dia. ele deve operar forex. e deve ter a opção de mudar o tipo de ponto para
instalacao do Phyton no pc remotamente e das bibliotecas abaixo: Algumas bibliotecas serão necessárias para o desenvolvimento do meu projeto. Os seguintes comandos no prompt de comando para instalar as principais bibliotecas: Copy code pip install numpy pip install pandas pip install matplotlib pip install flask pip install requests pip install scikit-learn pip install sqlalchemy e a integracao e comunicacao com o
Hello I need a developer to add a news filter to my code, and also convert this code to MT5 (MQ5). The code is simple. Attached a example of a simple news filter
PRECISO DE UM SIMPLES PAINEL QUE FAÇA UM CÁLCULO DE ABERTURA MENOS O FECHAMENTO DO CANDLE ANTERIOR DOS PRINCIPAIS ATIVOS DO FOREX E MOSTRE EM UM PAINEL O RESULTADO DESSE CÁLCULO
Robot limited 30+ USD
I need an order-limiting robot for MT4 or MT5. Either one is fine. I’m following a copy trade, but there’s a problem. The trader opens many orders at once, and I don't want that. I want a robot that limits the number of open orders in my account. So, I want to limit the number of orders that will open in my MT4 or MT5. Instead of opening 10 orders, I only want it to open 1. I want a robot with these parameters: Order

Informazioni sul progetto

Budget
30+ USD
Per lo sviluppatore
27 USD