Correção de EA basedo em MAXD Intradey

MQL5 전문가 Forex

작업 종료됨

실행 시간 17 시간
피고용인의 피드백
Cliente muito compreensivo :), espero ter mais negócios com ele!
고객의 피드백
Desenvolvedor rápido atencioso muito educado. com certeza recomendo a toda comunidade.

명시

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.

응답함

1
개발자 1
등급
(37)
프로젝트
38
11%
중재
0
기한 초과
0
무료
2
개발자 2
등급
(562)
프로젝트
931
47%
중재
301
59% / 25%
기한 초과
123
13%
작업중
3
개발자 3
등급
(99)
프로젝트
153
31%
중재
9
11% / 44%
기한 초과
0
로드됨
4
개발자 4
등급
(47)
프로젝트
79
11%
중재
4
25% / 75%
기한 초과
2
3%
무료
5
개발자 5
등급
(11)
프로젝트
17
59%
중재
2
0% / 100%
기한 초과
2
12%
무료
6
개발자 6
등급
(6)
프로젝트
7
14%
중재
1
100% / 0%
기한 초과
0
무료
7
개발자 7
등급
(251)
프로젝트
402
38%
중재
82
41% / 20%
기한 초과
70
17%
로드됨
비슷한 주문
Warlen Mendes 30+ USD
Robo que dê lucro e um bom desempenho e com facilidade de operação, e instalação no mercado de forex, para garantir uma renda diária, semanal, mensal e anual, para termos uma liberdade financeira futuramente
Preciso de um EA que use estratégia valida para usar em prop firm que não faça a utilização de grid nem martingale, se possível posso ate explicar minha estratégia para tentar utilizar ela no robô
Acabei de criar a estratégia mas eu não sei programar mql5 e mql4 então eu preciso de ajuda , é porque eu não entendo o funcionamento do tradeview e quero usar o metatrader 5 e metatrader 4 porque ja cnheço bem
SEMPRE QUE O INDICADOR MOSTRAR A EXAUSTÃO NA FORÇA DE UMA PARIDADE GOSTARIA QUE FIZESSE A ENTRADA.. OU SEJA O INDICADOR VAI MOSTRAR UMA DEFASAGEM NAS FORÇAS DA PARIDADE E AMBAS AS FORÇAS SAINDO DO CENTRO DO INDICADOR, QUANDO AMBAS MOSTRAR A EXAUSTÃO, VOLTANDO PARA O CENTRO DO INDICADOR, SERIA ONDE FAÇO AS MINHAS ENTRADAS.. E GOSTARIA DE AUTOMATIZAR MEU OPERACIONAL. VOU DEIXAR UMA IMAGEM ABAIXO E PARA MAIS DUVIDAS
Gostaria de um robô nos mesmos parâmetros do Trend Catcher with Alert MT5. M1 - M30 - H1 - H4 O Captador de Tendências: A Estratégia do Captador de Tendências com Indicador de Alerta é uma ferramenta versátil de análise técnica que auxilia os traders na identificação de tendências de mercado e potenciais pontos de entrada e saída. Apresenta uma Estratégia dinâmica do Captador de Tendências, adaptando-se às condições
1. Objetivo da Estratégia Maximizar os lucros com operações de curto prazo. Aproveitar cada sinal de entrada afim de rentabilizar o maximo possivel, sem deixar passar nenhuma oportunidade que o mercado me der. 2. Mercado e Instrumentos Forex (GBP/JPY) 3. Time Frame Gráficos de 5 minutos 4. Indicadores e Padrões EMA 7 (Media Exponencial de 7); EMA 20 (Media Exponencial de 20); VWAP Diária (Preço Médio Ponderado po
Preciso que ele faça varia compras e vendas com baixa escalas de compra e venda no valor do lote de 0.01 a 0.20, com media de 50 pontos. Exemplo, compro a cota buy do lote em 8.0001 e venda quando chegar a 8.0051, se o robô viu na analise que ainda da pra comprar novamente ele já compra, caso não o mesmo esquema ele abre uma ordem de compra como sell e não varia de 50 pontos, só que abre varias vezes ao dia. E o

프로젝트 정보

예산
30+ USD
개발자에게
27 USD