Modify an Expert Advisor so it will trade

MQL4 Indicateurs Experts Forex

Tâche terminée

Temps d'exécution 3 minutes
Commentaires du client
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.
Commentaires de l'employé
Thank you very much!

Spécifications

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", "");
     }
  }

Répondu

1
Développeur 1
Évaluation
(192)
Projets
232
30%
Arbitrage
1
100% / 0%
En retard
9
4%
Gratuit
Publié : 2 codes
2
Développeur 2
Évaluation
(139)
Projets
181
24%
Arbitrage
23
22% / 39%
En retard
13
7%
Gratuit
3
Développeur 3
Évaluation
(174)
Projets
199
12%
Arbitrage
38
37% / 34%
En retard
5
3%
Travail
Publié : 2 codes
4
Développeur 4
Évaluation
(250)
Projets
256
30%
Arbitrage
0
En retard
3
1%
Gratuit
Publié : 2 codes
5
Développeur 5
Évaluation
(188)
Projets
212
58%
Arbitrage
9
11% / 89%
En retard
8
4%
Gratuit
6
Développeur 6
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
7
Développeur 7
Évaluation
(126)
Projets
151
48%
Arbitrage
6
83% / 17%
En retard
2
1%
Gratuit
8
Développeur 8
Évaluation
(54)
Projets
53
17%
Arbitrage
7
0% / 100%
En retard
5
9%
Gratuit
9
Développeur 9
Évaluation
(33)
Projets
49
12%
Arbitrage
16
0% / 88%
En retard
10
20%
Gratuit
10
Développeur 10
Évaluation
(69)
Projets
146
34%
Arbitrage
13
8% / 62%
En retard
26
18%
Gratuit
Publié : 6 codes
11
Développeur 11
Évaluation
(295)
Projets
472
40%
Arbitrage
102
40% / 24%
En retard
78
17%
Occupé
Publié : 2 codes
12
Développeur 12
Évaluation
(23)
Projets
45
20%
Arbitrage
25
28% / 48%
En retard
12
27%
Gratuit
13
Développeur 13
Évaluation
(59)
Projets
81
43%
Arbitrage
27
11% / 70%
En retard
8
10%
Gratuit
14
Développeur 14
Évaluation
(2633)
Projets
3349
67%
Arbitrage
77
48% / 14%
En retard
342
10%
Travail
Publié : 1 code
15
Développeur 15
Évaluation
(772)
Projets
1039
44%
Arbitrage
50
8% / 50%
En retard
116
11%
Gratuit
16
Développeur 16
Évaluation
(22)
Projets
30
20%
Arbitrage
8
63% / 13%
En retard
9
30%
Gratuit
17
Développeur 17
Évaluation
(87)
Projets
114
26%
Arbitrage
7
29% / 57%
En retard
5
4%
Gratuit
18
Développeur 18
Évaluation
(52)
Projets
89
25%
Arbitrage
8
75% / 13%
En retard
44
49%
Chargé
19
Développeur 19
Évaluation
(7)
Projets
8
63%
Arbitrage
1
0% / 100%
En retard
1
13%
Gratuit
20
Développeur 20
Évaluation
(33)
Projets
46
59%
Arbitrage
0
En retard
6
13%
Gratuit
21
Développeur 21
Évaluation
(574)
Projets
945
47%
Arbitrage
309
58% / 27%
En retard
125
13%
Gratuit
Commandes similaires
I have a open source Tradingview indicator that I want it to be converted to Ninja Trader8. I have attached it. Please let me know, if you can do it and for how muc
GOLF SAFE BOT 30 - 200 USD
#property strict input int FastMA = 20; input int SlowMA = 50; input double LotSize = 0.01; input double StopLoss = 300; // Gold points input double TakeProfit = 600; int fastMA, slowMA; //------------------------------------------------- int OnInit() { fastMA = iMA(_Symbol, PERIOD_M15, FastMA, 0, MODE_EMA, PRICE_CLOSE); slowMA = iMA(_Symbol, PERIOD_M15, SlowMA, 0, MODE_EMA, PRICE_CLOSE);
hello great developer I need to copy trading signals from the Forex Precision app. I receive push notifications with the trades, and I must manually copy them into MetaTrader 4 (MT4), including the entry price, take profit, and stop loss. Is necessary Copy from Forex precision take the type AUD/JPY Copy the entry value and type sell or buy and put this info in mt4 and put the take profitt +10 and stop loss -10
I need help in modifying an amibroker AFL indicator the indicator already works but I need per symbol static variable isolation, parameters persistence per symbol after restart, non declining trailing stop logic, parameter auto restore when switching symbols and a global reset function for static variables. For better understanding As discussed, this is the official offer for restructuring my RAD Chandelier stop loss
I am looking for an experienced MQL5 developer who already has or can provide an advanced grid-style Expert Advisor based on Bollinger Bands, designed for trading multiple forex pairs simultaneously. The EA should use intelligent grid placement logic derived from Bollinger Band levels, with dynamic lot sizing, proper risk management, and optimized trade management to handle ranging and volatile market conditions
Hi, I have a clear MT5 EA wrapper project with locked TSCEA, requiring enhanced execution logic (“pending OR better market” order handling). I can share detailed spec. Please let me know your availability and quote range. Thanks, Tom Pike ------------------------------------------------------------------------------------------------------------------------------ Title: MT5 Wrapper EA – “Limit Order OR Better
ICT_OneTrade_2R 100 - 200 USD
🔥 ICT_OneTrade_2R Precision. Discipline. Consistency. ICT_OneTrade_2R is a professional Expert Advisor designed for traders who value structured execution and controlled risk. This system is built around a fixed Risk-to-Reward ratio of 1:2 (RR 2.0) — meaning every trade is planned with precision: Risk 1 → Target 2. No randomness. No overtrading. Just one high-quality trade per session. ⚙️ Key Features ✔ Fixed RR 1:2
​ Description: I am looking for a professional MQL4 developer/quant trader with a proven track record in EA optimization. This project involves optimizing a third-party EA that currently has a 2-year live track record. ​ The Task: ​ In-Sample Optimization: Optimize the EA parameters using historical data prior to January 1, 2024. ​ Out-of-Sample (Walk-Forward): Validate the optimized settings against the period of
Trade settings: --------------------------------- fixed lot size ….. 0.0 Buy /Sell distance market order…. 0.0 - 700.0 points Buy / Sell distance pending order Entry---- 0.0 - 700.0 points Max Trade------ 10.0 Min spread...… 0.0 points Max spread..... 3000.0 points Daily profit percentage ….. 0.0 - 100 % Global Stoploss Percentage----- 0.0 - 100 % Max Daily loss Percentage ------0.0 - 100 % Stop level = 0.0 point
Hi , I have some indicators that I want set up on my TV chart and want to create one chart for some and another chart for some others. Plus I want to set up the brackets orders so I can trade from the chart. I have these set up somewhat but need it cleaned up and the way I want them. how much would something like this cost to do? I'm in California and would like you to show me so I can learn to do this when I want to

Informations sur le projet

Budget
100+ USD
Délais
à 1 jour(s)