Modify an Expert Advisor so it will trade

MQL4 지표 전문가 Forex

작업 종료됨

실행 시간 3 분
고객의 피드백
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.
피고용인의 피드백
Thank you very much!

명시

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

응답함

1
개발자 1
등급
(192)
프로젝트
232
30%
중재
1
100% / 0%
기한 초과
9
4%
무료
게재됨: 2 코드
2
개발자 2
등급
(139)
프로젝트
181
24%
중재
23
22% / 39%
기한 초과
13
7%
무료
3
개발자 3
등급
(174)
프로젝트
199
12%
중재
38
37% / 34%
기한 초과
5
3%
작업중
게재됨: 2 코드
4
개발자 4
등급
(248)
프로젝트
254
30%
중재
0
기한 초과
3
1%
무료
게재됨: 2 코드
5
개발자 5
등급
(188)
프로젝트
212
58%
중재
9
11% / 89%
기한 초과
8
4%
무료
6
개발자 6
등급
프로젝트
0
0%
중재
0
기한 초과
0
무료
7
개발자 7
등급
(126)
프로젝트
151
48%
중재
6
83% / 17%
기한 초과
2
1%
무료
8
개발자 8
등급
(54)
프로젝트
53
17%
중재
7
0% / 100%
기한 초과
5
9%
무료
9
개발자 9
등급
(33)
프로젝트
49
12%
중재
16
0% / 88%
기한 초과
10
20%
무료
10
개발자 10
등급
(69)
프로젝트
146
34%
중재
13
8% / 62%
기한 초과
26
18%
무료
게재됨: 6 코드
11
개발자 11
등급
(294)
프로젝트
470
39%
중재
102
40% / 24%
기한 초과
78
17%
바쁜
게재됨: 2 코드
12
개발자 12
등급
(23)
프로젝트
45
20%
중재
25
28% / 48%
기한 초과
12
27%
무료
13
개발자 13
등급
(59)
프로젝트
81
43%
중재
27
11% / 70%
기한 초과
8
10%
무료
14
개발자 14
등급
(2627)
프로젝트
3340
67%
중재
77
48% / 14%
기한 초과
342
10%
작업중
게재됨: 1 코드
15
개발자 15
등급
(772)
프로젝트
1039
44%
중재
50
8% / 50%
기한 초과
116
11%
무료
16
개발자 16
등급
(22)
프로젝트
30
20%
중재
8
63% / 13%
기한 초과
9
30%
무료
17
개발자 17
등급
(87)
프로젝트
114
26%
중재
7
29% / 57%
기한 초과
5
4%
무료
18
개발자 18
등급
(52)
프로젝트
89
25%
중재
8
75% / 13%
기한 초과
44
49%
무료
19
개발자 19
등급
(7)
프로젝트
8
63%
중재
1
0% / 100%
기한 초과
1
13%
무료
20
개발자 20
등급
(33)
프로젝트
46
59%
중재
0
기한 초과
6
13%
무료
21
개발자 21
등급
(574)
프로젝트
945
47%
중재
309
58% / 27%
기한 초과
125
13%
무료
비슷한 주문
I need a custom MT5 Expert Advisor for Gold (XAUUSD) only. Requirements: - Platform: MT5 only - Symbol: XAUUSD only - Strategy: Trend / pullback - No martingale - No grid - No recovery Risk management: - Lot size based on balance - Equity stop - Daily loss limit - Maximum drawdown protection - News filter License system (mandatory): - Account-number based license - Expiry-based control - Ability to enable / disable
I need an MT5 remote trade copier EA (manual trading mirror). Scope: Master EA + Client EA (MT5) Copies manual trades: open, close, SL/TP changes, partial close, pending orders Remote / internet-based copying via server/hosting (not LAN-only) Works across different brokers and VPS/PC locations Basic reconnect / retry logic Full MQ5 source code Assist with testing until stable
Project Summary We are looking for a highly experienced MetaTrader 5 (MT5) developer to build a pattern-based Expert Advisor (EA) focused on low-time-interval automation (15-second & 30-second logic). This is a pure MT5 project — no external platforms, no shortcuts. It should be very clean ,Efficient ,Precised ,Accurate ,No copy paste ,Low latency. If you have real experience with MT5 tick-based logic and
I have my own gold & BTC indicators and needs to create EA expert working smoothly with them, the indicators work perfect in M1,M5,M30 time frames. Push notification alert should be in included in new experts. For sure the created experts has no expire date " open". I shall proceed with successful coder editor to manage this job on other indicators needs to create experts with it. Technical approach: - The EA will
BitsoFx 40 - 10000 USD
//+------------------------------------------------------------------+ //| Simple Robo Trader MT5 | //| Works on any pair & timeframe | //+------------------------------------------------------------------+ #property strict // Input settings input double LotSize = 0.01; input int FastMA = 10; input int SlowMA = 30; input int RSIPeriod = 14; input int StopLoss = 200; // in points input int TakeProfit = 400;// in
-I am looking for an experienced MQL5 developer to build a custom MT5 Expert Advisor based on a clear, rule-based trading logic. This project is focused on structure, discipline, and long-term robustness rather than aggressive or experimental approaches. The EA will be based on a single coherent logic and must follow strict execution rules, with clean and professional MQL5 code suitable for controlled testing and
Create an automated trading robot that can execute trades on my behalf without requiring manual intervention.The robot should be able to monitor market conditions, execute trades, manage risk, optimize performance
Должность: Пользовательский советник MT5 для стратегии пробоя максимумов/минимумов на свечных графиках. Описание/требования к должности: Здравствуйте! Мне нужен пользовательский советник (Expert Advisor, EA) для MetaTrader 5 , основанный на простой стратегии пробоя свечей. Советник должен строго соответствовать следующим правилам: 1. Условия покупки: Откройте ордер на покупку , когда текущая цена закроется выше
I will develop a custom MetaTrader 5 Expert Advisor based on the client’s provided trading rules. The EA will include proper entry and exit logic, stop loss and take profit handling and stable risk management. The code will be clean, non-repainting, MT5 compliant, and delivered with full source files. "Risk Disclosure : Trading in financial markets involves risk, and results depend on market conditions, broker
I need a professional developer to build a Telegram-to-MetaTrader trade copier system. Project overview: - A Telegram bot will read trade signals from a Telegram channel - Trades will be automatically executed on MT4 and/or MT5 accounts - The system must support copying trades to multiple MetaTrader accounts - Execution should work even when the user is offline Functional requirements: - Structured signal format

프로젝트 정보

예산
100+ USD
기한
 1 일