Debug / Fix Coding For EA

Trabalho concluído

Tempo de execução 5 minutos
Comentário do cliente
Abu is an excellent coder and easy to work with.
Comentário do desenvolvedor
Nice meeting you.. above and beyound.. 100% recommended 🌟🌟🌟🌟🌟

Termos de Referência

I have a strategy EA in mq4 that I wrote and it has several problems I can't resolve.  The strategy is a long only breakout trading strategy designed to run on a basic bar chart.  It is fairly simple and does not have any elaborate money management, pyramiding, targets or stop losses.  It has roughly 100 lines of code.  The logic is there and it compiles OK (with one warning) but is not generating the expected trades in the strategy tester.  I previously coded this EA in Excel and it should be generating 50-100 trades per year on 30 min bars, but it's not.  I've tried to adapt code I found in the mql5 forums but it's not working right. 

I need this EA to do the following:

  1. Reference the last bar close[1] versus the highest close[2 and 3], lowest close[2] and moving average[1].  I tried to populate arrays with these values, but got array value access errors.  So I switched to using the shift parameter e.g. iMA(NULL,0,bar period,length,shift,...) but I don't think it's the same values and isn't working. I'd like to store these values in arrays and access them to compare to the last bar close[1].
  2. Enter and exit long trades on the current bar open
  3. Use the external variable EAid to identify trades and positions created by this EA, and only trade those.  (EAid is used as variable for MagicNumber)
  4. Allow only one open unfilled trade order at a time.   
  5. Allow only one open filled position at a time.  No pyramiding if the EA strategy conditions are met a second time after a position is opened.
  6. Trade only once per bar so it doesn't keep sending new orders on the current bar.
  7. Check for available account margin to enter a new trade and not allow trade orders if there is insufficient capital in the account
  8. Specify external variables to input / optimize: HH and HC lookback, MA length, Lots, Slippage, EAid, a variable to trade at market or max spread, a time variable to specify maximum time an entry order can be open before it's cancelled
  9. I generally trade at market, but may want to trade the EA with a maximum bid-ask spread (which I assume will result in some missed trades).  I would like an external variable to specify either, and if max spread is chosen, to use the Slippage value.  I would also like to specify the max time an entry order can be open, then have the EA automatically cancel that order if it's not filled within the specified time. 
  10. If the trade screen / symbol where the EA is running is closed or the EA is stopped with open orders or positions, then automatically cancel open orders and sell all positions in that screen at market.  If this is not possible (e.g. MetaTrader crashes, or is shut down too fast without sending orders, or the Internet goes out) then the EA should check for open positions when it is reopened. 
  11. All entry and exit trades should be displayed on the chart.

Problems to fix on this EA:

  • The EA only generates a single trade in strategy testing at the beginning of the test period and doesn't close the trade according to the exit conditions.  I'm expecting 50-100 trades per year on 30 minute bars.
  • Code the HC, LC and MAVG arrays correctly so they store the historical values for 4 past bars, and these values are accessed correctly in the entry / exit logic
  • Warning "return value of 'OrderSelect' should be checked"  (I eliminated this warning with some code found in the forums but I don't know if it's right)
  • Warning "return value of 'OrderClose' should be checked"
  • Keep the code that's good (including code I commented out but didn't know how to use) and delete the code that's wrong or useless
  • General cleanup of variables, etc. 
  • Any other problems 
  • Save as version 1.1 in mq5 format (it's currently in mq4 cuz I just started it that way for no reason)

My EA code is below, warts and all...


//+------------------------------------------------------------------+

//|                                       BreakoutModel_v1_FOREX.mq4 |

//|                             Copyright 2020, Lawrence H. Klamecki |

//|                                                                  |

//+------------------------------------------------------------------+

#property copyright "Copyright 2020, Lawrence H. Klamecki"

#property link      ""

#property version   "1.0"

#property strict


//--- input parameters

//extern allows you to change these variables from the strategy tester

extern int      Lookback=10;     //LOOKBACK PERIOD FOR HIGHEST HIGH AND LOWEST LOW

extern int      MAlen=50;        //SIMPLE MOVING AVERAGE LENGTH

extern double   Lots=0.1;       //FIXED NUMBER OF LOTS TO TRADE 1 LOT = 100,000 CURRENCY

extern int      Slip=10;       //SLIPPAGE PER TRADE = LOTS * PIP SIZE * PIP SPREAD  EX: 0.1 LOTS * $10 * 5 PIPS =  $5

int             EAid=1007;     //ID OF THIS EXPERT ADIVISOR USED TO IDENTIFY THE SOURCE OF ORDERS IT GENERATES

int  BarsCount, i, n, halt1, total ;

//extern double   StartEquity=1000.00;       //STARTING EQUITY IN USD

//extern double   Leverage=10.0;       //LEVERAGE USED PER TRADE

//int      Shift=1;   //SHIFT (0=current bar, 1 = last bar, 2 = 2 bars ago etc)



// START EA CODE

int start()

{

   //double HC[4];     //HC ARRAY CONTAINING 4 HIGHEST CLOSE VALUES

   //double LC[4];     //LC ARRAY CONTAINING 4 LOWEST CLOSE VALUES

   //double MAVG[4];   //MAVG ARRAY CONTAINING 4 MAVG VALUES

   double HC1, HC2, HC3, LC1, LC2, MAVG1;

   int ticket;

   int cnt = 0; 

   

   

   //POPULATE ARRAYS WITH LAST 4 HC AND LC VALUES i.e. positions 0 to 3

   //for (n = 0; n < 4; n++)  

   

   //NOTE - I SWITCHED TO SHIFTED VALUES BELOW INSTEAD OF ARRAY VALUES TO GET EA TO COMPILE.  LAST PARAMETER IS BAR SHIFT.

   // INSTEAD OF SHIFTED HC1, HC2, HC3 ETC I WANT TO USE HISTORICAL HC[1], HC[2], HC[3] ETC VALUES FROM ARRAYS IN ENTRY-EXIT LOGIC


      HC1 = Close[Highest(NULL, 0, MODE_CLOSE, Lookback, 1)];  //HIGHEST CLOSE[1] IN LOOKBACK PERIOD

      HC2 = Close[Highest(NULL, 0, MODE_CLOSE, Lookback, 2)];  //HIGHEST CLOSE[2] IN LOOKBACK PERIOD

      HC3 = Close[Highest(NULL, 0, MODE_CLOSE, Lookback, 3)];  //HIGHEST CLOSE[3] IN LOOKBACK PERIOD

      LC1 = Close[Lowest(NULL, 0, MODE_CLOSE, Lookback, 1)];  //LOWEST CLOSE[1] IN LOOKBACK PERIOD

      LC2 = Close[Lowest(NULL, 0, MODE_CLOSE, Lookback, 2)];  //LOWEST CLOSE[2] IN LOOKBACK PERIOD

      MAVG1 = iMA(NULL,0,MAlen,0,MODE_SMA,PRICE_CLOSE,1);   //MOVING AVERAGE VALUE[1] (SYMBOL(NULL=CHART SYMBOL),BAR PERIOD(0=BAR PERIOD OF CHART),LENGTH,MA SHIFT(+FWD,-BACK),MA TYPE,PRICE,VALUE SHIFT)

      

   //LONG ENTRIES

   //CHECK THAT EA HAS NO OPEN ORDERS

   if(OrdersTotal()<1) 

   {

     //THEN CHECK THAT EA HAS NO OPEN POSITIONS (THIS EA DOES NOT ALLOW PYRAMIDING)

     //TBD -- HOW TO CODE THIS?

     

     //THEN CHECK FOR INSUFFICIENT FUNDS IN ACCOUNT

     if(AccountFreeMargin()<(1000*Lots))

         {

         Print("Insufficient funds to enter new trade. Free Margin = ", AccountFreeMargin());

         return(0);  //exit

         }

     

     //THEN IF LONG TRADE CRITERIA ARE MET OPEN BUY ORDER

     //ENTER LONG IF CLOSE[1] > HIGHEST CLOSE[2] AND CLOSE[1] < HIGHEST CLOSE[3] AND CLOSE[1] > MAVG[1]

     //REFERENCE HIGHEST CLOSE, LOWEST CLOSE AND MAVG VALUES FROM ARRAYS ABOVE

     if((Close[1]>HC2) && (Close[2]<HC3) && (Close[1]>MAVG1))  //NOTE - THESE VARIABLES ARE THE SHIFTED VALUES I CREATED TO GET THE EA TO COMPILE.  I WANT TO USE HISTORICAL ARRAY VALUES IN THE ENTRY-EXIT LOGIC.

         //OPEN BUY TICKET

         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,"BREAKOUT OPEN",EAid,0,Green);  //SYMBOL,BUY OR SELL OPERATION,LOTS,BID/ASK PRICE,SLIPPAGE,STOP LOSS,TARGET PROFIT(e.g. Ask+TakeProfit*Point),ORDER TEXT,MAGIC NUMBER,DATETIME EXPIRATION,COLOR

         if(ticket>0) 

            {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 

               Print("BUY order opened : ",OrderOpenPrice());

            }

         else Print("Error opening BUY order : ",GetLastError()); 

         return(0); // exit

         }

   

   else if(OrdersTotal()>0) 

     {

     //LONG EXITS

     for(cnt=0;cnt;)

         {

         if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))break;

         if(OrderType()!=OP_BUY && OrderSymbol()!=Symbol() && OrderMagicNumber()!=EAid){continue;}

         if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==EAid)  // check for open long position, symbol & EAid

            {

            //EXIT IF EXISTING POSITION AND LAST CLOSE < PREVIOUS LOWEST CLOSE OR LAST CLOSE < LAST MAVG

            if(Close[1]<LC2 || Close[1]<MAVG1)    //NOTE - THESE VARIABLES ARE THE SHIFTED VALUES I CREATED TO GET THE EA TO COMPILE.   I WANT TO USE HISTORICAL ARRAY VALUES IN THE ENTRY-EXIT LOGIC.

               {

               OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slip,Gray);  //CLOSE LONG POSITION

               if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slip,Gray)==FALSE)

                  Print("Error closing BUY order : ",GetLastError()); 

               return(0); // exit

               }

            }

         }

      return(0); //exit

      }

   return(0); //exit

   }

return(0); //exit

}


//CODE PREVENTING MULTIPLE ORDERS FOR THE SAME SYMBOL ON THE SAME BAR - HOW TO USE THIS?

//int ticket(){

//  for (int t=0;t<OrdersTotal();t++)

//  {

//    if(OrderSelect(t,SELECT_BY_POS,MODE_TRADES))

//      if(OrderSymbol()==Symbol())return OrderTicket();

//  }

// return -1;

// }


//ALTERNATIVE CODE FOR EXITING OPEN POSITIONS - HOW TO USE THIS?

//   if(OrdersTotal()>0)

//   {

//      for(i=1; i<=OrdersTotal(); i++)   

//         {

//            if (OrderSelect(i-1,SELECT_BY_POS)==true)

//            {

//               if(OrderMagicNumber()==EAid) {halt1=1;} //IF THIS EA HAS AN ORDER OPEN THEN HALT!

//               {

               //LONG ENTRIES

               //ENTER LONG IF NO POSITION AND LAST CLOSE > PREVIOUS HIGHEST CLOSE 

               //AND PREVIOUS CLOSE < PREVIOUS PREVIOUS HIGHEST CLOSE AND LAST CLOSE > LAST MAVG

               //REFERENCE HC, LC AND MAVG VALUES FROM ARRAYS ABOVE USING POSITION VARIABLE IN BRACKETS [n]

//               if((Close[1]>HC[2]) && (Close[2]<HC[3]) && (Close[1]>MAVG[1]) && (halt1!=1))

//                  {

//                  int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,"BREAKOUT OPEN",MagicNumber1,0,Green);

//                  }

//               }

//            }

//         }

//   }  

// }  


Respondido

1
Desenvolvedor 1
Classificação
(23)
Projetos
45
20%
Arbitragem
25
28% / 48%
Expirado
12
27%
Livre
2
Desenvolvedor 2
Classificação
(174)
Projetos
199
12%
Arbitragem
38
37% / 34%
Expirado
5
3%
Trabalhando
Publicou: 2 códigos
3
Desenvolvedor 3
Classificação
(206)
Projetos
333
35%
Arbitragem
66
12% / 58%
Expirado
87
26%
Livre
4
Desenvolvedor 4
Classificação
(60)
Projetos
82
44%
Arbitragem
27
11% / 70%
Expirado
8
10%
Livre
5
Desenvolvedor 5
Classificação
(54)
Projetos
53
17%
Arbitragem
7
0% / 100%
Expirado
5
9%
Livre
6
Desenvolvedor 6
Classificação
(2656)
Projetos
3374
68%
Arbitragem
77
48% / 14%
Expirado
342
10%
Trabalhando
Publicou: 1 código
7
Desenvolvedor 7
Classificação
(271)
Projetos
553
50%
Arbitragem
57
40% / 37%
Expirado
227
41%
Trabalhando
8
Desenvolvedor 8
Classificação
(55)
Projetos
92
24%
Arbitragem
8
75% / 13%
Expirado
44
48%
Livre
9
Desenvolvedor 9
Classificação
(297)
Projetos
476
40%
Arbitragem
105
40% / 24%
Expirado
81
17%
Ocupado
Publicou: 2 códigos
10
Desenvolvedor 10
Classificação
(69)
Projetos
146
34%
Arbitragem
13
8% / 62%
Expirado
26
18%
Livre
Publicou: 6 códigos
Pedidos semelhantes
Pro firm setup 30+ USD
Hi, I am starting a futures prop firm. Are you able to help me get data feed for this with no delays and can handle many traders on the platform. Additionally, are you able to handle charts for us
Mam kody EA Bot. Chciałbym je dokończyć, dopracować i ukończyć projekty. Chciałbym otrzymać pliki SET po ukończeniu EA. Jeśli jesteś zainteresowany, skontaktuj się ze mną. Szukam doświadczonego programisty do stworzenia dedykowanego doradcy eksperckiego (EA) do tradingu. Programista powinien posiadać solidną wiedzę z zakresu MT5, logiki strategii, wskaźników, zarządzania ryzykiem i backtestingu. Doświadczenie w
I am looking for an experienced developer to create a custom Expert Advisor (EA) for trading. The developer should have strong knowledge of MT4/MT5, strategy logic, indicators, risk management, and backtesting. Experience in building reliable and professional trading robots is preferred. Please contact me if you have done similar projects before. 9817724000
5.20buy-20.5sell 50 - 1000 USD
⸻ 🧠 Professional AI Prompt (Clear English Version) Act as a professional algorithmic trading engineer with deep expertise in developing automated trading systems for TradingView and MetaTrader. You have strong knowledge of market behavior, trend analysis, and risk management. Your task is to design a fully automated trading strategy based on the following requirements: ⸻ 🎯 Entry Conditions: • Open a BUY trade
I need a skilled MQL5 developer to build a fully functional Expert Advisor (EA) for MetaTrader 5 based on a simple but strict trading strategy. The EA will use EMA 50/200 trend detection combined with breakout and retest logic for entries. It must operate only during London and New York sessions and include solid risk management (fixed % risk, SL/TP, trade limits, and basic protection rules). APPLY ONLY IF YOU HAVE
VWAP BB Sniper EA Quantum VWAP Scalper SmartFlow FX Bot Institutional Edge EA 🧠 PRODUCT OVERVIEW VWAP + Bollinger Bands Auto Trading System A high-precision forex scalping bot designed to capture institutional price movements using: VWAP (fair value tracking) Bollinger Bands (volatility & entry timing) 👉 Built for fast, consistent intraday profits
Hello traders, I have Quantum queen v3.52, which is the latest version, available for $500 only. The price on the platform is around $1800, but I am offering it for a much lower price for serious buyers. Details: Product: Quantum queen Version: v3.52 Price: $500 Condition: Serious buyers only
EA for prop firms 30 - 500 USD
Hi, I am looking to purchase a MT5 EA that can show consistent profitability 5% each month with drawdown less than 9%. I am not ready to build a new one from scratch as i do not have the strategy in mind yet so i do not want to take the risk of building one but not sure if it works. Only apply if you have an existing proven and tested EA that can sell to me together with the source code. The Ea is for prop firm even
Early Killer EA 30+ USD
It must have automated stop loss. Something that can end poverty and kill the market early.It must take the trades for me whenever I start it it must work on tradeport ea
I WANT TO CONVERT MY INDICATOR TO ROBOT, BUT I DONT HAVE THE SOURCE CODE , THE PROGRAMMER WILL DEVELOP THE SOURCE CODE FOR THE JOB. THE STRAGY IS SIMPLE , THE ROBOT WILL EXECUTE A TRADE WHEN THE SIGNAL FROM THE INDICATOR APPEARS. BUY SIGNAL IS WHEN THE ARROW APPEAS ON THE LOWER ZONE ( SUPPORT ZONE) SELL SIGNAL WHEN THE ARROW APPEARS ON THE UPPER ZONE ( RESISTANCE ZONE).THE ROBOT WILL HAVE THE FOLLWING FEATURES (1)

Informações sobre o projeto

Orçamento
50 - 100 USD
Prazo
de 1 para 3 dias