Job finished
Execution time 4 minutes
Feedback from customer
Experienced coder of our generation, flexible and understanding each and every details.
He is fast, faster than Japanese bullet train.
Feedback from employee
Excellent client
I will help him again
thank you
Specification
Anyone who can add opening direction base on moving average if its above MA must take buy trades only if below then take sell trades only. #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.20" input bool inputOpenOppositeTradeAfterClose = true; // Open Opposite Trade After Close input ENUM_ORDER_TYPE_FILLING typeFilling = ORDER_FILLING_FOK; //Order Filling Type input int inputMaxOppositeTradePerSymbol = 3; //Max Opposite Trade Per Symbol input int slippage = 100; //Slippage In Points long MagicNumber = 163818213; bool timerCreated = false; int TIMER_FREQUENCY = 1; struct FLOATING_TRADES { ulong ticket; int tradeType; string symbol; double tradeLots; double stoploss; double takeprofit; bool oppositeAllowed; }; FLOATING_TRADES FloatingTradesArray[]; bool inititalized = false; int OnInit() { if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) { Alert("Please Allow Auto Trading"); return(INIT_FAILED); } if(!inititalized) { ArrayResize(FloatingTradesArray, 0); timerCreated = EventSetTimer(TIMER_FREQUENCY); inititalized = true; } return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { switch (reason) { case REASON_CHARTCHANGE: break; case REASON_PARAMETERS: break; default: inititalized = false; EventKillTimer(); timerCreated = false; break; } } void OnTick() { if (!timerCreated) timerCreated = EventSetTimer(TIMER_FREQUENCY); } void OnTimer() { FindClosedPositions(); FindNewPositions(); } void FindNewPositions() { for(int i=PositionsTotal()-1; i>=0; i--) { ulong position_ticket=PositionGetTicket(i); ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); string symbol = PositionGetString(POSITION_SYMBOL); if(position_ticket != 0 && (type==POSITION_TYPE_BUY || type==POSITION_TYPE_SELL) && PositionGetInteger(POSITION_MAGIC) != MagicNumber) { if(CheckNewPosition(position_ticket)) { Print("position "+(string)position_ticket+" opened"); bool oppositeAllowed = CountOfTradeWithSameSymbolInArray(symbol) < inputMaxOppositeTradePerSymbol; FLOATING_TRADES newTrade; newTrade.ticket = position_ticket; newTrade.tradeType = (int)PositionGetInteger(POSITION_TYPE); newTrade.symbol = symbol; newTrade.tradeLots = PositionGetDouble(POSITION_VOLUME); newTrade.stoploss = PositionGetDouble(POSITION_SL); newTrade.takeprofit = PositionGetDouble(POSITION_TP); newTrade.oppositeAllowed = oppositeAllowed; int size = ArraySize(FloatingTradesArray); ArrayResize(FloatingTradesArray, size + 1); FloatingTradesArray[size] = newTrade; } } } } bool CheckNewPosition(ulong positionTicket) { bool result = true; for(int i=0; i<ArraySize(FloatingTradesArray); i++) { if(FloatingTradesArray[i].ticket == positionTicket) { result = false; break; } } return result; } void FindClosedPositions() { for(int i=0; i<ArraySize(FloatingTradesArray); i++) { ulong PositionTicket = FloatingTradesArray[i].ticket; ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)FloatingTradesArray[i].tradeType; string symbol = FloatingTradesArray[i].symbol; double lot = FloatingTradesArray[i].tradeLots; double stoploss = FloatingTradesArray[i].stoploss; double takeprofit = FloatingTradesArray[i].takeprofit; bool oppositeAllowed = FloatingTradesArray[i].oppositeAllowed; if(PositionTicket != 0 && (type==POSITION_TYPE_BUY || type==POSITION_TYPE_SELL)) { if(!CheckIfPositionIsFloating(PositionTicket) && CheckPositionFromHistory(PositionTicket)) { Print("position "+(string)PositionTicket+" closed"); if(oppositeAllowed) { if(OpenOppsitePositionOpened(PositionTicket, symbol, type, lot, stoploss, takeprofit)) { Print("oppsite of position "+(string)PositionTicket+" opened"); int size = ArraySize(FloatingTradesArray); for (int j = i + 1; j < size; j++) { FloatingTradesArray[j - 1] = FloatingTradesArray[j]; } size--; ArrayResize(FloatingTradesArray, size); } } else { int size = ArraySize(FloatingTradesArray); for (int j = i + 1; j < size; j++) { FloatingTradesArray[j - 1] = FloatingTradesArray[j]; } size--; ArrayResize(FloatingTradesArray, size); } } } } } bool CheckIfPositionIsFloating(ulong PositionTicket) { bool result = false; for(int i=PositionsTotal()-1; i>=0; i--) { ulong position_ticket = PositionGetTicket(i); if(position_ticket == PositionTicket) { result = true; break; } } return result; } bool CheckPositionFromHistory(ulong positionTicket) { bool result = false; if(HistorySelectByPosition(positionTicket)) { ulong dealTicket = 0; int DealEntry; for(uint j = 0; j<2; j++) { if((dealTicket=HistoryDealGetTicket(j))>0) { DealEntry = (int)HistoryDealGetInteger(dealTicket,DEAL_ENTRY); if(DealEntry==DEAL_ENTRY_OUT) result = true; } } } return result; } bool OpenOppsitePositionOpened(long ticket, string symbol, ENUM_POSITION_TYPE positionType, double lot, double sl,double tp) { if(!inputOpenOppositeTradeAfterClose) return true; string tradeComment = "opp:"+(string)ticket; if(CheckIfPositionIsOpened(tradeComment)) return true; if(CheckIfOrderIsOpened(tradeComment)) return true; ENUM_POSITION_TYPE OppPositionType = ReversePosition(positionType); double temp = sl; sl = tp; tp = temp; if(OppPositionType == POSITION_TYPE_BUY) return OpenBuyPosition(symbol, lot, sl, tp, tradeComment); else if(OppPositionType == POSITION_TYPE_SELL) return OpenSellPosition(symbol, lot, sl, tp, tradeComment); return false; } ENUM_POSITION_TYPE ReversePosition(ENUM_POSITION_TYPE positionType) { if(positionType == POSITION_TYPE_BUY) return POSITION_TYPE_SELL; //buy reverse to sell else if(positionType == POSITION_TYPE_SELL) return POSITION_TYPE_BUY; //sell reverse to buy return positionType; } bool OpenBuyPosition(string symbol,double lot,double sl,double tp, string comment) { bool res = false; MqlTradeRequest request={}; MqlTradeResult result={}; request.action = TRADE_ACTION_DEAL; request.symbol = symbol; request.volume = lot; request.type = ORDER_TYPE_BUY; request.price = SymbolInfoDouble(symbol,SYMBOL_ASK); request.sl = sl; request.tp = tp; request.deviation = slippage; request.type_filling = typeFilling; request.comment = comment; request.magic = MagicNumber; if(!OrderSend(request,result)) { PrintFormat("OrderSend error %d",GetLastError()); res = false; } else res = true; return res; } bool OpenSellPosition(string symbol,double lot,double sl,double tp, string comment) { bool res = false; MqlTradeRequest request={}; MqlTradeResult result={}; request.action = TRADE_ACTION_DEAL; request.symbol = symbol; request.volume = lot; request.type = ORDER_TYPE_SELL; request.price = SymbolInfoDouble(symbol,SYMBOL_BID); request.sl = sl; request.tp = tp; request.deviation = slippage; request.type_filling = typeFilling; request.comment = comment; request.magic = MagicNumber; if(!OrderSend(request,result)) { PrintFormat("OrderSend error %d",GetLastError()); res = false; } else res = true; return res; } bool CheckIfPositionIsOpened(string positionComment) { bool result = false; for(int i=PositionsTotal()-1; i >= 0; i--) { ulong position_ticket=PositionGetTicket(i); string position_comment = PositionGetString(POSITION_COMMENT); if(position_comment==positionComment) { result = true; break; } } return result; } bool CheckIfOrderIsOpened(string orderComment) { bool result = false; for(int i=OrdersTotal()-1; i >= 0; i--) { ulong orderticket=OrderGetTicket(i); string order_comment = OrderGetString(ORDER_COMMENT); if(order_comment==orderComment) { result = true; break; } } return result; } int CountOfTradeWithSameSymbolInArray(string symbol) { int count = 0; for(int i=0; i<ArraySize(FloatingTradesArray); i++) { if(FloatingTradesArray[i].symbol == symbol) count++; } return count; }
Responded
1
Rating
Projects
11
18%
Arbitration
8
38%
/
38%
Overdue
1
9%
Free
2
Rating
Projects
119
50%
Arbitration
4
50%
/
50%
Overdue
3
3%
Free
3
Rating
Projects
18
28%
Arbitration
4
50%
/
50%
Overdue
1
6%
Free
4
Rating
Projects
59
27%
Arbitration
26
19%
/
54%
Overdue
10
17%
Working
Published: 1 code
5
Rating
Projects
178
39%
Arbitration
4
25%
/
50%
Overdue
14
8%
Free
6
Rating
Projects
143
76%
Arbitration
0
Overdue
2
1%
Free
Similar orders
Project description: Development of a high-precision scalping Expert Advisor (EA), optimized for small capital accounts (starting from 50 USD) with 1:30 leverage on the IC Markets broker platform. The EA should be ready for use on both demo and live accounts, with pre-optimized settings, but with the flexibility to adjust all parameters. Mandatory technical requirements (all must be demonstrated in a working demo)
XML FILE-Deriv Bot
30+ USD
I need an edit and modification done to a deriv bot, who has experience in same, please reach out, Currently I have a system that only martingales on new signal but I want it immediately after a loss and then switch to ping pong
Hello 👋🙂 I need help with a very small finishing task 🧩 A previous programmer almost completed the EA , but stopped right before the finish line 🏁😅 Everything is already prepared and clear — just needs the final touch 🔧✨ This is NOT strategy work ❌🧠 The trading logic is already done, tested and working ✅ Only simple completion / cleanup needed. ✅ What’s already provided: Python source code 🐍 Exact entry &
Project Alert: MT4 Firewall EA for ECN Accounts.
40 - 55 USD
Need a pro dev to create an MT4 Expert Advisor ("Monitor EA") acting as execution firewall & auto-recovery controller for multiple EAs on XAUUSD (M1). How it works: Runs on blank chart; controls EAs via chart/template actions Closes/reopens charts to manage trades (EAs aren't editable) Targets IC Markets/VT Markets ECN Raw Source code handed over on completion Key Features:* XAUUSD (Gold) focus M1 timeframe
Apex point expert advisor
30 - 35 USD
We're looking for a highly professional MQL5 developer to create FX Apex, an advanced scalping EA optimized for small accounts ($50+), 1:30 leverage, IC Markets broker, and ready for demo/live trading. Key Features:_ Scalps XAU/USD & major pairs (M1-M15), option to add more Adaptive TP/SL based on volatility, trend, ATR, momentum Dynamic trailing, breakeven, partial close functionality Configurable risk per trade
We are looking for a highly professional MQL5 developer to create the Ultimate Super Scalper EA, optimized for small accounts starting from $50, with a leverage of 1:30, broker IC Markets and ready for both demo and live trading. This EA should be fully configured for maximum profitability upon delivery, but all parameters should remain modifiable by the user to adapt the risk, frequency of trades and trading
I have pine editor script I want to convert this into MT5 EA Main i want to match tv and mql5 buy and sell signal to match in trading view i use this with heikin ashi candles things to add in this but after main need to be done 1 Ea start stop time 2 Manual lot size 3 tp sl - on Ea start if i want to add separate tp for first 2 trades and after that same tp 4 halt ea and close all trades after over all daily profit
Hello Programmer! **Objective** Create an **MT4 Expert Advisor (“Monitor EA”)** that runs on a single blank chart and acts as an **execution firewall and auto-recovery controller** for all other EAs trading on the account. Because existing EAs are **not editable**, the Monitor EA will control trading by **closing and reopening charts/templates** instead of modifying EA logic. Target Platform: **MT4** Broker Type
💰 BUDGET: $2000-$4000 XAUUSD EA (Negotiable) Institutional XAUUSD EA with 20+ Systems | Sharpe 4.2+ | Quant Firm Standards DESCRIPTION I need an experienced MQL5 developer to build a professional institutional-grade EA with 20+ integrated trading systems for MetaTrader 5. CORE REQUIREMENTS: Architecture: • 20+ independent trading systems (trend, mean reversion, volatility, breakout) • ON/OFF toggle for each system
I want a scalping EA MT5
100+ USD
Hi , I am finding scalping Ea for Mt5 which can work on all pairs and have back tested results at least of 1 year and is currently running in Mt5 so i can login and see how it is performing who ever have message me
Project information
Budget
30+ USD