Adding features to an ea orderClose, Highertrend filters, moneymgmt, trailing TP

Trabajo finalizado

Plazo de ejecución 22 horas
Comentario del Cliente
Excellent developer knows what he is talking about and is easy to communicate with great reviser and able to get all the tasks done on time. i will return with my next work.
Comentario del Ejecutor
Great customer. I look forward to working with you again.

Tarea técnica

Hello, 


i am a experienced programmer but I am newish to mql 4 and mql 5 i have been trying to add some code to my EA so it can close orders after three day but this not working.


I have created one of my first EA that is profitable, but there is a big flaw in this EA. it has massive drawdown, which cut massive profit, I found that that the orders that do this can be fixed through two rules, order max open time and higher timeframe filters, both options will be implemented but the closing order older then three days would be the best first fix. other features like trailing take profit and compounding lots size will further increase profits.

It is late and I need some sleep, but i would love it if someone could help me with this i have so amazing backrest with this EA as the rules are simple..


the next set of feature i am trying to add is...

trailing takeprofit in step of 50 points

higher trend filters up, down consolidation so trade, wait

close trades after three days.



this is the function code...


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
    // Open new buy order if none exist
    if(OrdersTotal() == 0)
    {
        int buyTicket = OrderSend(_Symbol, OP_BUY, 0.01, Ask, 3, 0, Ask+10*_Point, NULL, 0, 0, clrGreen);
        if(buyTicket < 0)
        {
            Print("Buy order failed. Error: ", GetLastError());
        }
        else
        {
            Print("Buy order opened. Ticket: ", buyTicket);
        }
    }
    
    // Check and close orders older than 60 minutes
    int maxDuration = 60 * 60; // 60 minutes in seconds
    
    for(int i = OrdersTotal()-1; i >= 0; i--) // Loop backwards for safety
    {
        if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
            if(OrderSymbol() == _Symbol) // Only process orders for this symbol
            {
                int duration = TimeCurrent() - OrderOpenTime();
                
                if(duration >= maxDuration)
                {
                    // Determine correct close price based on order type
                    double closePrice = (OrderType() == OP_BUY) ? Bid : Ask;
                    
                    // Attempt to close the order
                    bool closed = OrderClose(
                        OrderTicket(),
                        OrderLots(),
                        closePrice,
                        5,        // Slippage
                        clrRed    // Closing arrow color
                    );
                    
                    if(!closed)
                    {
                        Print("Failed to close order #", OrderTicket(),
                              " Error: ", GetLastError(),
                              " Type: ", OrderType(),
                              " Ask: ", Ask,
                              " Bid: ", Bid);
                    }
                    else
                    {
                        Print("Closed order #", OrderTicket(),
                              " after ", duration/60, " minutes");
                    }
                }
            }
        }
        else
        {
            Print("OrderSelect failed for index ", i, " Error: ", GetLastError());
        }
    }
}
//+------------------------------------------------------------------+

the ea code....

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Print initialization message
   Print("EA initialized successfully");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
// --- input parameters
input int HigherTimeframeIndex = 1; // e.g., 1 for H1 if current timeframe is M5
input int  TimeframeLength = 1; // e.g., 1 if current timeframe is M5 (5 minutes)
input int  HigherTimeframePeriod = 60; //e.g., 60 minutes for H1 timeframe
string INDICATOR_CALC_ERROR;
string INDICATOR_CALC_FINISHED;
string INDICATOR_REQUIRED_MORE_DATA;

void OnTick()
  {
  
  double previous_high = iHigh(_Symbol,_Period,1);
      double previous_low = iLow(_Symbol,_Period,1);
      double current_high = iHigh(_Symbol,_Period,1);
      double current_low = iLow(_Symbol,_Period,1);
      double current_Open = iOpen(_Symbol,_Period,0);
      double current_Close = iClose(_Symbol,_Period,0);
      int trendStatus = GetHigherTimeframeTrend(PERIOD_H4);
      string HTS = "";
      
//--- Debugging information
   static int lastTickTime = 0;
   if(TimeCurrent() == lastTickTime) return; // Only run once per tick
   lastTickTime = TimeCurrent();
   
   string TradingSignal = CheckEntryEMA();
   string Filter = CheckEntrySTOCHASTIC();
   

//--- Print signals for debugging
   Print("EMA Signal: ", TradingSignal, " | Stochastic Filter: ", Filter);
   
//---- check higher time frame
   
//--- Buy condition
   if((TradingSignal == "buy") && (Filter == "buy") && (OrdersTotal() <= 0))
     {
      double stopLoss = Ask - 1500 * _Point;
      double takeProfit = Ask + 50 * _Point;
      
      if(current_high>=previous_high && current_low<previous_low && current_Close >= current_Open){
      
      int ticket = OrderSend(_Symbol, OP_BUY, 0.03, Ask, 3, stopLoss, takeProfit, "EMA+Stoch Buy", 0, 0, Green);
      
         if(ticket < 0)
           {
            Print("Buy Order Failed. Error: ", GetLastError());
           }
         else
           {
            Print("Buy Order Placed. Ticket: ", ticket);
           }
        }
      }
//--- Sell condition
   if((TradingSignal == "sell") && (Filter == "sell") && (OrdersTotal() <= 0))
     {
       stopLoss = Bid + 1500 * _Point;
       takeProfit = Bid - 50 * _Point;
       
      
       if(previous_high<=current_high && previous_low>=current_low){
       
       ticket = OrderSend(_Symbol, OP_SELL, 0.03, Bid, 3, stopLoss, takeProfit, "EMA+Stoch Sell", 0, 0, Red);
      
      if(ticket < 0)
        {
         Print("Sell Order Failed. Error: ", GetLastError());
        }
      else
        {
         Print("Sell Order Placed. Ticket: ", ticket);
        }
     }
    }
  }
//+------------------------------------------------------------------+

string CheckEntryEMA()
  {
   string signal = "";
   double ma20 = iMA(NULL, 0, 8, 0, MODE_EMA, PRICE_CLOSE, 0);
   double ma50 = iMA(NULL, 0, 13, 0, MODE_EMA, PRICE_CLOSE, 0);
   double ma20_prev = iMA(NULL, 0, 8, 0, MODE_EMA, PRICE_CLOSE, 1);
   double ma50_prev = iMA(NULL, 0, 13, 0, MODE_EMA, PRICE_CLOSE, 1);

   if(ma20 > ma50 && ma20_prev <= ma50_prev)
      signal = "buy";
   else if(ma20 < ma50 && ma20_prev >= ma50_prev)
      signal = "sell";
      
   return signal;
  }
  
// Higher time frame trend Reversal, consolidation and breakout.

string CheckEntrySTOCHASTIC()
  {
   string signal = "";
   double K0 = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 0);
   double D0 = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 0);
   double K1 = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_MAIN, 1);
   double D1 = iStochastic(NULL, 0, 5, 3, 3, MODE_SMA, 0, MODE_SIGNAL, 1);

   if(K0 < 35 && D0 < 35 && K0 > D0 && K1 < D1)
      signal = "buy";
   else if(K0 > 65 && D0 > 65 && K0 < D0 && K1 > D1)
      signal = "sell";
      
   return signal;
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Function to get higher time frame trend direction                |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Function to analyze higher timeframe trend                       |
//+------------------------------------------------------------------+
/*
Returns:
 1 = Strong Uptrend
 2 = Weak Uptrend
 0 = Ranging/No Clear Trend
-1 = Weak Downtrend
-2 = Strong Downtrend
*/
int GetHigherTimeframeTrend(int higherTimeframe, int maPeriod = 50, double rangeThreshold = 0.005)
{
      // hts
      string HTS = "";
    // Get moving averages
    double maFast = iMA(NULL, higherTimeframe, maPeriod, 0, MODE_EMA, PRICE_CLOSE, 0);
    double maSlow = iMA(NULL, higherTimeframe, maPeriod*2, 0, MODE_EMA, PRICE_CLOSE, 0);
    double currentPrice = iClose(NULL, higherTimeframe, 0);
    
    // Get recent price range (last 20 bars)
    double highestHigh = iHigh(NULL, higherTimeframe, iHighest(NULL, higherTimeframe, MODE_HIGH, 20, 0));
    double lowestLow = iLow(NULL, higherTimeframe, iLowest(NULL, higherTimeframe, MODE_LOW, 20, 0));
    double rangeSize = (highestHigh - lowestLow) / lowestLow;
    
    // Check for ranging market
    if(rangeSize < rangeThreshold) 
    {
        return 0; // Market is ranging
    }
    
    // Determine trend strength
    if(currentPrice > maFast && maFast > maSlow)
    {
        // Strong uptrend conditions
        if(currentPrice > maFast * (1 + rangeThreshold/2) && maFast > maSlow * (1 + rangeThreshold/2))
            return 2; // Strong uptrend
        return 1; // Weak uptrend
        HTS = "buy";
        return HTS;
        printf(HTS);
    }
    else if(currentPrice < maFast && maFast < maSlow)
    {
        // Strong downtrend conditions
        if(currentPrice < maFast * (1 - rangeThreshold/2) && maFast < maSlow * (1 - rangeThreshold/2))
            return -2; // Strong downtrend
        return -1; // Weak downtrend
        HTS = "sell";
        return HTS;
        printf(HTS);
    }
    return HTS = "NoTrade";
    return 0; // No clear trend
}

Archivos adjuntos:

Han respondido

1
Desarrollador 1
Evaluación
(292)
Proyectos
365
30%
Arbitraje
37
27% / 65%
Caducado
10
3%
Trabajando
Ha publicado: 10 ejemplos
2
Desarrollador 2
Evaluación
(3)
Proyectos
6
17%
Arbitraje
0
Caducado
1
17%
Libre
Ha publicado: 3 ejemplos
3
Desarrollador 3
Evaluación
(34)
Proyectos
35
40%
Arbitraje
0
Caducado
3
9%
Libre
4
Desarrollador 4
Evaluación
Proyectos
0
0%
Arbitraje
0
Caducado
0
Libre
5
Desarrollador 5
Evaluación
(206)
Proyectos
333
35%
Arbitraje
66
12% / 58%
Caducado
87
26%
Libre
6
Desarrollador 6
Evaluación
(274)
Proyectos
403
28%
Arbitraje
40
40% / 50%
Caducado
1
0%
Libre
7
Desarrollador 7
Evaluación
(2)
Proyectos
7
0%
Arbitraje
3
0% / 33%
Caducado
1
14%
Trabaja
8
Desarrollador 8
Evaluación
(47)
Proyectos
67
37%
Arbitraje
5
40% / 40%
Caducado
1
1%
Libre
9
Desarrollador 9
Evaluación
(361)
Proyectos
644
26%
Arbitraje
92
72% / 14%
Caducado
12
2%
Trabaja
Ha publicado: 1 ejemplo
10
Desarrollador 10
Evaluación
(12)
Proyectos
9
33%
Arbitraje
11
0% / 100%
Caducado
2
22%
Libre
11
Desarrollador 11
Evaluación
(1)
Proyectos
0
0%
Arbitraje
4
0% / 75%
Caducado
0
Libre
12
Desarrollador 12
Evaluación
(22)
Proyectos
28
7%
Arbitraje
9
33% / 33%
Caducado
1
4%
Trabaja
13
Desarrollador 13
Evaluación
(252)
Proyectos
462
26%
Arbitraje
139
20% / 60%
Caducado
100
22%
Libre
14
Desarrollador 14
Evaluación
(10)
Proyectos
14
43%
Arbitraje
0
Caducado
3
21%
Libre
15
Desarrollador 15
Evaluación
(2)
Proyectos
2
0%
Arbitraje
3
0% / 100%
Caducado
1
50%
Libre
16
Desarrollador 16
Evaluación
(271)
Proyectos
553
50%
Arbitraje
57
40% / 37%
Caducado
227
41%
Trabaja
Solicitudes similares
1. EA OVERVIEW I need an Expert Advisor for METATRADER 4/5 that executes a directional trend- following + scaling strategy with multiple modes : Swing, Intraday, and Aggressive ( Martingale - style scaling) 2. ENTRY LOGIC Explain clearly: - EA opens first trade based on a defined signal ( let developer add indicator – based entry) - Direction: BUY or SELL allowed ( no restriction)
PROJECT: Automatic Gold and Forex Trading Robot for MetaTrader 5 (MQL5) I want a fully automated Expert Advisor (EA) for MetaTrader 5 that can analyze the market and automatically open, manage and close trades on Gold and selected Forex currency pairs. 1. TRADING INSTRUMENTS - Gold: XAUUSD - Forex: EURUSD, GBPUSD and USDJPY, subject to broker availability. - Allow the user to enable or disable each trading symbol. -
Hello, I want to create a custom Expert Advisor (EA) for MetaTrader 5 based on 3 main confirmations: Market Structure & Price Action: Identify high time-frame trend direction (HL/LH). Chart Pattern: Detect classic continuous/reversal patterns (e.g. Cup and Handle, Double Bottom/Top) on trading timeframe. Volume Profile (PoC): Confirm entry when price breaks/retests the Point of Control (PoC) level. Risk Management &
I am looking for a highly skilled trading strategist and MQL5 developer with genuine experience in researching, designing, testing, and implementing systematic trading strategies. My primary interest is XAUUSD (Gold), although proven experience with other financial markets is also welcome. I am not looking for someone who simply converts trading rules into code. I want to identify a professional who understands
We’re looking for an investment partner to help fund AegisGoldAIPro , an algorithmic trading platform being developed for MetaTrader 5, initially focused on gold. We’re building a modular system that combines market-structure analysis with planned AI-assisted decision support, risk controls, and automated execution. What we are building is not just a basic trading robots that depend on only one indicator or strategy
Looking for a Complete Forex & Gold Signal System — Telegram Automation + Performance Tracking I’m looking for a complete automated trading signal solution for Forex pairs, including EUR/USD, GBP/USD and others, as well as gold (XAU/USD). Requirements: • An average of 2–3 quality signals per day across the selected instruments. Quality matters more than generating signals just to meet a quota. • A high win rate
I need a robot that will grow small accounts to bigger amounts like this one in this link, https://youtu.be/d38pMbJihew?si=3NeIOVyrlwDr4X_o. Please click the link and watch how this EA grow small accounts. Then create a robot like that. I will test it on demo first then if it does what i want, i will take it. Please it must be simply to use. It must set targets, for example, once it reaches $500 profit, it must
Here is a professional, detailed requirements specification draft for your MQL5 freelance order based on your prompt: ​ Strategy Objective: Develop an automated Expert Advisor (EA) featuring a 1:3 Risk-to-Reward ratio optimized for a small starting budget. ​ Core Trading Logic: ​Execute automatic Buy and Sell trades using high-probability entry signals. ​Target a strict 90% theoretical win-rate structure through
i want to fix my gold martingale bot MT5. RSI 14 ENTRY 30 BUY 70 SELL Lot 0.02 0.04 0.07 TP 150 for all SL 90 30 30 once total daily profit is 200$ stop trading stop trading once 2 consecutives total losses stop trading if spread exceeded 30 and between hour 15 & 17 PM Move SL to breakeven point once the profit exceeded 50 from from breakeven thanks
MarketMind Breakout Pro XAUUSD H1 — Donchian Breakout EA Project type: Personal EA development and backtesting Platform: MetaTrader 5 Instrument: XAUUSD Timeframe: H1 Strategy: Donchian Channel breakout with EMA 200 Project overview This project evaluates a Donchian breakout trading strategy for XAUUSD on the H1 timeframe. The system uses channel-based breakout conditions and an EMA 200 trend filter. Historical

Información sobre el proyecto

Presupuesto
30 - 50 USD
Plazo límite de ejecución
de 1 a 20 día(s)