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
評価
(258)
プロジェクト
322
30%
仲裁
34
26% / 65%
期限切れ
10
3%
仕事中
2
開発者 2
評価
(3)
プロジェクト
6
17%
仲裁
0
期限切れ
1
17%
パブリッシュした人: 3 codes
3
開発者 3
評価
(27)
プロジェクト
29
38%
仲裁
0
期限切れ
3
10%
4
開発者 4
評価
プロジェクト
0
0%
仲裁
0
期限切れ
0
5
開発者 5
評価
(206)
プロジェクト
333
35%
仲裁
66
12% / 58%
期限切れ
87
26%
6
開発者 6
評価
(274)
プロジェクト
403
28%
仲裁
40
40% / 50%
期限切れ
1
0%
7
開発者 7
評価
(2)
プロジェクト
7
0%
仲裁
3
0% / 33%
期限切れ
1
14%
仕事中
8
開発者 8
評価
(47)
プロジェクト
67
37%
仲裁
5
40% / 40%
期限切れ
1
1%
9
開発者 9
評価
(361)
プロジェクト
644
26%
仲裁
92
72% / 14%
期限切れ
12
2%
仕事中
パブリッシュした人: 1 code
10
開発者 10
評価
(12)
プロジェクト
9
33%
仲裁
11
0% / 100%
期限切れ
2
22%
11
開発者 11
評価
(1)
プロジェクト
0
0%
仲裁
4
0% / 75%
期限切れ
0
12
開発者 12
評価
(19)
プロジェクト
24
8%
仲裁
9
33% / 33%
期限切れ
1
4%
取り込み中
13
開発者 13
評価
(250)
プロジェクト
460
26%
仲裁
139
20% / 60%
期限切れ
100
22%
仕事中
14
開発者 14
評価
(10)
プロジェクト
14
43%
仲裁
0
期限切れ
3
21%
15
開発者 15
評価
(2)
プロジェクト
2
0%
仲裁
3
0% / 100%
期限切れ
1
50%
16
開発者 16
評価
(271)
プロジェクト
553
50%
仲裁
57
40% / 37%
期限切れ
227
41%
仕事中
類似した注文
Gold robot 3000+ USD
I really liked this training platform. I want to start a good business with this funding amount."I like crypto trading. Does it provide a demo account that is good for learning?"
Gold robot 3000+ USD
Hello, I am looking for someone who can help me to build a MT4/MT5 forex EA, by analyzing the trading history. You are responsible to find out trading logic behind the EA and Build a new EA that accurately replicates the existing strategy. I need someone who has proven previous experience to build a new EA by reverse engineering. Thanks
I am looking for an experienced MT4/MT5 developer to analyze my trading history and replicate the strategy in a new Expert Advisor (EA). The developer must have proven experience in reverse engineering strategies, analyzing trading data, and developing EAs across various trading methodologies. A deep understanding of XAUUDS and BTCUSD behavior, as well as chart analysis, is essential. Please note that we do not have
Title: MT5 Forex Trading Robot Development I need a MetaTrader 5 (MT5) Expert Advisor (EA) for automated Forex trading. Requirements: 1. The robot must be fully automated and capable of opening and closing trades without manual intervention. 2. Compatible with MetaTrader 5 (MT5). 3. Adjustable lot size, Stop Loss, and Take Profit settings. 4. Built-in risk management based on account balance. 5. Ability to trade
Risk management EA 30 - 200 USD
Looking to develop risk management EA for personal use probably commercially in the future. I want the EA to have a display panel with 0.1, 0.2, 0.5,1,2,3 percent risk management button. I also want BE, partial closure of 0.25,0.5,0.75 and full closure panel on both profit and loss. I’ll also like to include trailing stop, 2 trades max per day and BE+spread option. I’ll be attaching the image for a guidance on what
Sierra Chart Alerts to MT5 via Webhook (Alert Manager File Version) Objective: Create a Custom Study (ACSIL / C++) that monitors alerts from the Alert Manager file and forwards any valid alert directly to MT5 via an HTTP POST (Webhook) in JSON format. Additional Note: The study should allow adding any modifications in the future and provide clear insights into the alert points in Sierra Chart. 1. Data Flow Diagram
Ea.Mix 30+ USD
I am in need of a good scalping bot for gold or any currency pair. If you have one that is working, reach out. You must be able to provide a trial version so I can test the bot myself
A bot takes trades every few seconds until hit the profit with the same lots , i am attaching a picture as well. If anyone can do that please contact me i will give the account details
MT5 Expert Advisor Development Project Overview I am looking for an experienced MQL5 developer to build a custom MetaTrader 5 Expert Advisor based on a grid-cycle trading framework. This is not a standard grid EA . The system combines: Session-based trade initiation Multi-filter signal generation Dynamic grid management Advanced basket management State-machine-driven trade lifecycle management Dynamic take-profit

プロジェクト情報

予算
30 - 50 USD
締め切り
最低 1 最高 20 日