Modify an Expert Advisor so it will trade

MQL4 Indicadores Experts Forex

Trabalho concluído

Tempo de execução 3 minutos
Comentário do cliente
I am fairly new to all this and was amazed with the skill and patience from my developer. I will always use him in the future.
Comentário do desenvolvedor
Thank you very much!

Termos de Referência

I created an EA online through EA Builder.com, but it will not initiate any trades. I keep receiving an error stating:  "OrderSend error #4051 invalid function parameter value" and "invalid lots amount for OrderSend function".I have tried every lot size I can think of, but I still get this same error message.

Here is what I want this EA to be able to do:

1.  I want to be able for it to initiate a trade, long and/or short in the lot size I can specify.

2.  I want to be able to set trading times of day in 30 minute intervals.  For example, I can turn the system on at 4pm and stop initiating trades at 6pm.

3.  That's All!


Here is the current EA that I am using that will not initiate any trades:

//+------------------------------------------------------------------+
//|                                         Strategy: RJS QQE EA.mq4 |
//|                                       Created with EABuilder.com |
//|                                        https://www.eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link      "https://www.eabuilder.com"
#property version   "1.00"
#property description ""

#include <stdlib.mqh>
#include <stderror.mqh>

int LotDigits; //initialized in OnInit
int MagicNumber = 1532634;
extern double TradeSize = 0.1;
int MaxSlippage = 3; //adjusted in OnInit
bool crossed[1]; //initialized to true, used in function Cross
bool Push_Notifications = true;
int MaxOpenTrades = 1;
int MaxLongTrades = 1;
int MaxShortTrades = 1;
int MaxPendingOrders = 1;
int MaxLongPendingOrders = 1;
int MaxShortPendingOrders = 1;
bool Hedging = false;
int OrderRetry = 5; //# of retries if sending order returns error
int OrderWait = 5; //# of seconds to wait if sending order returns error
double myPoint; //initialized in OnInit

bool Cross(int i, bool condition) //returns true if "condition" is true and was false in the previous call
  {
   bool ret = condition && !crossed[i];
   crossed[i] = condition;
   return(ret);
  }

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | RJS QQE EA @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
      if(Push_Notifications) SendNotification(type+" | RJS QQE EA @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "order")
     {
      Print(type+" | RJS QQE EA @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
      if(Push_Notifications) SendNotification(type+" | RJS QQE EA @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "modify")
     {
     }
  }

int TradesCount(int type) //returns # of open trades for order type, current symbol and magic number
  {
   int result = 0;
   int total = OrdersTotal();
   for(int i = 0; i < total; i++)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) continue;
      if(OrderMagicNumber() != MagicNumber || OrderSymbol() != Symbol() || OrderType() != type) continue;
      result++;
     }
   return(result);
  }

int myOrderSend(int type, double price, double volume, string ordername) //send order, return ticket ("price" is irrelevant for market orders)
  {
   if(!IsTradeAllowed()) return(-1);
   int ticket = -1;
   int retries = 0;
   int err = 0;
   int long_trades = TradesCount(OP_BUY);
   int short_trades = TradesCount(OP_SELL);
   int long_pending = TradesCount(OP_BUYLIMIT) + TradesCount(OP_BUYSTOP);
   int short_pending = TradesCount(OP_SELLLIMIT) + TradesCount(OP_SELLSTOP);
   string ordername_ = ordername;
   if(ordername != "")
      ordername_ = "("+ordername+")";
   //test Hedging
   if(!Hedging && ((type % 2 == 0 && short_trades + short_pending > 0) || (type % 2 == 1 && long_trades + long_pending > 0)))
     {
      myAlert("print", "Order"+ordername_+" not sent, hedging not allowed");
      return(-1);
     }
   //test maximum trades
   if((type % 2 == 0 && long_trades >= MaxLongTrades)
   || (type % 2 == 1 && short_trades >= MaxShortTrades)
   || (long_trades + short_trades >= MaxOpenTrades)
   || (type > 1 && type % 2 == 0 && long_pending >= MaxLongPendingOrders)
   || (type > 1 && type % 2 == 1 && short_pending >= MaxShortPendingOrders)
   || (type > 1 && long_pending + short_pending >= MaxPendingOrders)
   )
     {
      myAlert("print", "Order"+ordername_+" not sent, maximum reached");
      return(-1);
     }
   //prepare to send order
   while(IsTradeContextBusy()) Sleep(100);
   RefreshRates();
   if(type == OP_BUY)
      price = Ask;
   else if(type == OP_SELL)
      price = Bid;
   else if(price < 0) //invalid price for pending order
     {
      myAlert("order", "Order"+ordername_+" not sent, invalid price for pending order");
   return(-1);
     }
   int clr = (type % 2 == 1) ? clrRed : clrBlue;
   while(ticket < 0 && retries < OrderRetry+1)
     {
      ticket = OrderSend(Symbol(), type, NormalizeDouble(volume, LotDigits), NormalizeDouble(price, Digits()), MaxSlippage, 0, 0, ordername, MagicNumber, 0, clr);
      if(ticket < 0)
        {
         err = GetLastError();
         myAlert("print", "OrderSend"+ordername_+" error #"+IntegerToString(err)+" "+ErrorDescription(err));
         Sleep(OrderWait*1000);
        }
      retries++;
     }
   if(ticket < 0)
     {
      myAlert("error", "OrderSend"+ordername_+" failed "+IntegerToString(OrderRetry+1)+" times; error #"+IntegerToString(err)+" "+ErrorDescription(err));
      return(-1);
     }
   string typestr[6] = {"Buy", "Sell", "Buy Limit", "Sell Limit", "Buy Stop", "Sell Stop"};
   myAlert("order", "Order sent"+ordername_+": "+typestr[type]+" "+Symbol()+" Magic #"+IntegerToString(MagicNumber));
   return(ticket);
  }

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 5)
     {
      myPoint *= 10;
      MaxSlippage *= 10;
     }
   //initialize LotDigits
   double LotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   if(NormalizeDouble(LotStep, 5) == round(LotStep))
      LotDigits = 0;
   else if(NormalizeDouble(10*LotStep, 5) == round(10*LotStep))
      LotDigits = 1;
   else if(NormalizeDouble(100*LotStep, 5) == round(100*LotStep))
      LotDigits = 5;
   else LotDigits = 5;
   int i;
   //initialize crossed
   for (i = 0; i < ArraySize(crossed); i++)
      crossed[i] = true;
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int ticket = -1;
   double price;  
  
  
   //Open Buy Order, instant signal is tested first
   if(Cross(0, iCustom(NULL, PERIOD_CURRENT, "QQE averages histo + alerts + arrows", 1, 5, 14, 0, 4.236, 70, 30, "Alerts Settings", false, false, true, false, false, false, true, false, "alert2.wav", true, "qqe Arrows1", 1.5, false, DeepSkyBlue, Red, 233, 234, 1, 1, true, DeepSkyBlue, Red, 233, 234, 3, 3, 3, 0) > iCustom(NULL, PERIOD_CURRENT, "QQE averages histo + alerts + arrows", 1, 5, 14, 0, 4.236, 70, 30, "Alerts Settings", false, false, true, false, false, false, true, false, "alert2.wav", true, "qqe Arrows1", 1.5, false, DeepSkyBlue, Red, 233, 234, 1, 1, true, DeepSkyBlue, Red, 233, 234, 3, 3, 4, 0)) //QQE averages histo + alerts + arrows crosses above QQE averages histo + alerts + arrows
   )
     {
      RefreshRates();
      price = Ask;  
      if(IsTradeAllowed())
        {
         ticket = myOrderSend(OP_BUY, price, TradeSize, "");
         if(ticket <= 0) return;
        }
      else //not autotrading => only send alert
         myAlert("order", "");
     }
  }

Respondido

1
Desenvolvedor 1
Classificação
(192)
Projetos
232
30%
Arbitragem
1
100% / 0%
Expirado
9
4%
Livre
2
Desenvolvedor 2
Classificação
(139)
Projetos
181
24%
Arbitragem
23
22% / 39%
Expirado
13
7%
Livre
3
Desenvolvedor 3
Classificação
(167)
Projetos
191
10%
Arbitragem
37
38% / 35%
Expirado
5
3%
Trabalhando
4
Desenvolvedor 4
Classificação
(190)
Projetos
194
27%
Arbitragem
0
Expirado
3
2%
Livre
5
Desenvolvedor 5
Classificação
(188)
Projetos
212
58%
Arbitragem
9
11% / 89%
Expirado
8
4%
Livre
6
Desenvolvedor 6
Classificação
Projetos
0
0%
Arbitragem
0
Expirado
0
Livre
7
Desenvolvedor 7
Classificação
(126)
Projetos
151
48%
Arbitragem
6
83% / 17%
Expirado
2
1%
Livre
8
Desenvolvedor 8
Classificação
(54)
Projetos
53
17%
Arbitragem
7
0% / 100%
Expirado
5
9%
Livre
9
Desenvolvedor 9
Classificação
(33)
Projetos
49
12%
Arbitragem
16
0% / 88%
Expirado
10
20%
Livre
10
Desenvolvedor 10
Classificação
(66)
Projetos
143
34%
Arbitragem
11
9% / 55%
Expirado
26
18%
Trabalhando
11
Desenvolvedor 11
Classificação
(251)
Projetos
402
38%
Arbitragem
82
41% / 20%
Expirado
70
17%
Trabalhando
12
Desenvolvedor 12
Classificação
(23)
Projetos
45
20%
Arbitragem
24
29% / 42%
Expirado
12
27%
Trabalhando
13
Desenvolvedor 13
Classificação
(54)
Projetos
73
44%
Arbitragem
21
14% / 67%
Expirado
8
11%
Livre
14
Desenvolvedor 14
Classificação
(2398)
Projetos
3011
65%
Arbitragem
76
47% / 14%
Expirado
340
11%
Trabalhando
15
Desenvolvedor 15
Classificação
(769)
Projetos
1033
44%
Arbitragem
50
8% / 50%
Expirado
117
11%
Livre
16
Desenvolvedor 16
Classificação
(21)
Projetos
29
21%
Arbitragem
8
63% / 13%
Expirado
9
31%
Livre
17
Desenvolvedor 17
Classificação
(87)
Projetos
114
26%
Arbitragem
7
29% / 57%
Expirado
5
4%
Livre
18
Desenvolvedor 18
Classificação
(48)
Projetos
80
28%
Arbitragem
8
75% / 13%
Expirado
41
51%
Livre
19
Desenvolvedor 19
Classificação
(7)
Projetos
8
63%
Arbitragem
1
0% / 100%
Expirado
1
13%
Livre
20
Desenvolvedor 20
Classificação
(33)
Projetos
46
59%
Arbitragem
0
Expirado
6
13%
Livre
21
Desenvolvedor 21
Classificação
(561)
Projetos
928
48%
Arbitragem
301
59% / 25%
Expirado
123
13%
Carregado
Pedidos semelhantes
Bot name: Blues🚀ProFx The bot should work with the 5mins time frame and it must move with the market price bar when it moves up 5pips and above let 10 trades be opened in the up direction and each having a stop loss of 20pips. After every 5mins if a new candle forms in the same direction let another 10 trades be opened in the same manner. Then when the market trend changes and a bearish candle starts to form and
GOLD Edge est un EA conçu spécifiquement pour GOLD(XAUUSD) et peut également être utilisé sur n’importe quel instrument financier, n’importe quelle paire. Cet EA négocie en suivant les tendances en utilisant des moyennes mobiles et des RSI multi-périodes. Utilisez GRID trade. Cet EA se ferme avec la fonction « DD Reduce » lors du tirage vers le bas. Vous pouvez définir un stop suiveur pour la fonction « GRID trading
Hello, I need an EA for both MQL4 and MQL5 that complies with the following rules; A maximum daily drawdown of 4%. This means it should close all trades after a 4% loss and not trade for the rest of the day. It should not use martingale, No grid trading, No trade stacking (opening three or more trades at the same time in the same direction), trades should spends minutes before closing. The EA should also be able to
Hi i need a indicator be turned into forex robot THOSE TWO INDICATORS ARE REVERSAL INDICATORS I WANT THEM TO BE COMBINED BUY ON UPTREND SELL ON DOWNTREND CONTINUE TO OPEN TRADES ACCORDING TO THE TREND USING BUILT-IN RISK 1% OF THE ACCOUNT PARAMETER LOTS SIZE, STOPLOSS THE EA MUST WORK ON EVERYTIME FRAME BE ABLE TO TRADE INDICES, FX PAIRS, COMMODITIES
I want someone who can turn my trading strategy in a bot.... To execute automated trades... Strategy is simply based on two moving averages, when they cross pass. Bot must be fully automated
Hello everyone, I need a simple Hedging EA that won't open opposing trades right away. The key is to avoid Hedging with the aim to lock in a price/spread arbitrage. If you already have a profitable EA that is similar and that has result I would be more than welcome to take a look at it or if you can build one for me I am more than welcome to pay for it. It must be an MT5 EA
Seeking an expert in LSTM (Long Short-Term Memory) for MT4 to implement the most cutting-edge and advanced form of LSTM with full feature integration. The ideal candidate will possess extensive experience in leveraging LSTM technology within MT4, ensuring optimal performance and profitability. Join us in revolutionizing trading strategies with state-of-the-art LSTM algorithms tailored for MT4. Add a zig zag to the
Need an expert to create an EA based on my strategy for any broker,fast execution of opening and closing trade,also with a condition for take profit,lot size isn't fixed,it should be easy to change without editing the code for a no programmer
Hello there, I have a functional EA that I need a modification done to. Previous developer is overloaded with work and has been dragging his feet. Basically what I need is a modification to the Auto Lot option. Currently you can set a lot size per x amount of account balance and it will auto trade readjusting the lots based on account balance. What I am looking for is a modification that allows me to specify the
Please note that my budget is for both mt4 and mt5 platforms The EA should have 1. An option that I can change it parameters, that's the period, method and application 2. The EA should sell when on every bullish candle that closes under the MA 3. The EA should buy on every bearish candle that forms Above the EA. It's should close trades on reverse cross. I mean when it's in a buy trade and crosses the MA for a sell

Informações sobre o projeto

Orçamento
100+ USD
Desenvolvedor
90 USD
Prazo
para 1 dias