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

작업 종료됨

실행 시간 22 시간
피고용인의 피드백
Great customer. I look forward to working with you again.
고객의 피드백
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.

명시

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
}

파일:

응답함

1
개발자 1
등급
(250)
프로젝트
313
28%
중재
34
26% / 62%
기한 초과
10
3%
작업중
2
개발자 2
등급
(3)
프로젝트
6
17%
중재
0
기한 초과
1
17%
무료
게재됨: 3 코드
3
개발자 3
등급
(15)
프로젝트
16
25%
중재
1
0% / 0%
기한 초과
2
13%
작업중
4
개발자 4
등급
프로젝트
0
0%
중재
0
기한 초과
0
무료
5
개발자 5
등급
(206)
프로젝트
333
35%
중재
66
12% / 58%
기한 초과
87
26%
무료
6
개발자 6
등급
(272)
프로젝트
401
27%
중재
39
41% / 49%
기한 초과
1
0%
무료
7
개발자 7
등급
(2)
프로젝트
4
0%
중재
2
0% / 0%
기한 초과
1
25%
작업중
8
개발자 8
등급
(47)
프로젝트
67
37%
중재
5
40% / 40%
기한 초과
1
1%
무료
9
개발자 9
등급
(361)
프로젝트
643
26%
중재
92
72% / 14%
기한 초과
12
2%
작업중
게재됨: 1 코드
10
개발자 10
등급
(12)
프로젝트
9
33%
중재
11
0% / 100%
기한 초과
2
22%
무료
11
개발자 11
등급
(1)
프로젝트
0
0%
중재
4
0% / 75%
기한 초과
0
무료
12
개발자 12
등급
(18)
프로젝트
22
9%
중재
6
33% / 50%
기한 초과
1
5%
작업중
13
개발자 13
등급
(250)
프로젝트
460
26%
중재
140
20% / 59%
기한 초과
100
22%
작업중
14
개발자 14
등급
(10)
프로젝트
14
43%
중재
0
기한 초과
3
21%
무료
15
개발자 15
등급
(2)
프로젝트
2
0%
중재
3
0% / 100%
기한 초과
1
50%
무료
16
개발자 16
등급
(270)
프로젝트
552
49%
중재
57
40% / 37%
기한 초과
227
41%
작업중
비슷한 주문
I am looking for a professional MQL5 developer to build a MetaTrader 5 Expert Advisor from scratch. The EA will be called LadyKiller EA. It must trade only the following instruments: • XAUUSD (Gold) • US30 / Dow Jones Index Requirements: • Strong and reliable buy and sell entry logic • Stop Loss and Take Profit system • Risk management (lot size control) • Maximum trades protection • Drawdown protection • Trend
I need an mql5 EA which can be used with 100$ capital very low drawdown The EA should be high frequency trading special for XAUUSD and btcusd or binary options but also the EA should be testable via strategy tester and demo test for five days is needed NO SELECTION CAN BE DONE WITHOUT TESTING when applying make sure you send the backtester results with demo EA testable via strategy tester
Do you need a profitable and well-structured trading strategy converted into a fully automated Expert Advisor on the MT5 platform? I specialize in developing advanced, high-performance EAs with: ✅ Smart entry & exit logic ✅ Risk-based lot size calculation ✅ Break-even & trailing stop system ✅ Spread & session filters ✅ Daily drawdown protection ✅ Prop firm (FTMO-style) risk compliance ✅ Fully automated trade
Hello, I'm looking to find out the cost of creating a mobile trading robot. I've tried to describe it as thoroughly as possible in the following document. I look forward to your response. I'd like to know the costs, delivery time, and how you plan to implement it before making a decision
I have an existing MT5 Expert Advisor (“E-Core”). I need an experienced MQL5 developer to integrate a structured risk management upgrade and a higher timeframe trend filter into the current code. Two files will be provided: 1️⃣ E-Core Source Code (Current Version) 2️⃣ Update Instructions File (contains exact inputs, functions, and logic to integrate) The developer must: Integrate the update logic
I have a working MT5 Expert Advisor. I am NOT looking to change the strategy logic. I only need professional optimization and performance improvement. Requirements: • Parameter optimization • Risk adjustment • Max drawdown reduction • Forward testing report • Optimization for Gold (XAUUSD) Please provide previous optimization reports
DO NOT RESPOND TO WORK WITH ANY AI. ( I CAN ALSO DO THAT ) NEED REAL DEVELOPING SKILL Hedge Add-On Rules for Existing EA Core Idea SL becomes hypothetical (virtual) for the initial basket and for the hedge basket . When price hits the virtual SL level , EA does not close the losing trades. Instead, EA opens one hedge basket in the opposite direction. Original basket direction Hedge basket direction (opposite) Inputs
Hello, I am a user of the "BUY STOP SELL STOP V6" trading bot, which is an advanced Grid System bot. The bot is primarily designed for Gold (XAUUSD), but I want it to work on all currency pairs. "The bot contains a privacy/protection code that prevents it from running on other accounts or being modified on any platform, as it has a client account number lock mechanism" --- Bot Description & Current Settings Bot Type
Hello, I have a breakout EA with reversal logic. I own the full source code for both MT4 and MT5 versions. I need the modifications implemented for both MT4 and MT5 versions. I need several modifications: – Multiple reversals with configurable parameters – Breakeven functionality – Entry only after candle close beyond range + offset – Time-based activation – Alternative offset calculation logic – Automatic close at
Hi I have a simple task (hopefully) I have a custom strategy that I built with the help of Claude Anthropic - everything is finished and I zipped it with power shell but when importing it NT8 gives me the error message that the file was made from an older, incompatible version or not a NinjaScript. My folder structure is correct as far I can see so I don't know what the issues is and it's costing me too much to go

프로젝트 정보

예산
30 - 50 USD
기한
에서 1  20 일