Specification
//+------------------------------------------------------------------+ //| Hedging.mq4 | //| Copyright 2023, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property strict input int consecutiveBullCandles = 4; input int consecutiveBearCandles = 4; input double TP = 60.0; input double LotSize = 0.01; input int maxAllowedPositions = 1; //Set the max Buy positions input int maxSellAllowedPositions = 1;//Set the max Sell positions double bTakeProfit; double sTakeProfit; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { bTakeProfit = takeProfit(Symbol(), OP_BUY, TP); sTakeProfit = takeProfit(Symbol(), OP_SELL, TP); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(newBar()) { OpenPosition(); LastOpenPrice2(); } CloseTradeOnTP(); } //+------------------------------------------------------------------+ bool CheckConsecutiveBullish() { bool isConsecutiveBullish = true; for (int i = 1; i <= consecutiveBullCandles; i++) { if (Close[i] <= Open[i]) { isConsecutiveBullish = false; break; } } return isConsecutiveBullish; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CheckConsecutiveBearish() { bool isConsecutiveBearish = true; for (int i = 1; i<= consecutiveBearCandles; i++) { if (Close[i] >= Open[i]) { isConsecutiveBearish = false; break; } } return isConsecutiveBearish; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double stopLoss(string symbol, ENUM_ORDER_TYPE type, double slPips) { if(slPips>0) { if(type==OP_BUY) { return (Ask - (slPips*SymbolInfoDouble(Symbol(), SYMBOL_POINT)*10)); } else { return (Bid + (slPips*SymbolInfoDouble(Symbol(), SYMBOL_POINT)*10)); } } else return 0; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double takeProfit(string symbol, ENUM_ORDER_TYPE type, double tpPips) { if(tpPips>0) { if(type==OP_BUY) { return (Ask + (tpPips*SymbolInfoDouble(Symbol(), SYMBOL_POINT)*10)); } else { return (Bid - (tpPips*SymbolInfoDouble(Symbol(), SYMBOL_POINT)*10)); } } else return 0; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int MaxBuyOpenPositions(int maxAllowed) { int totalPositions = OrdersTotal(); // Get the total number of open positions if (totalPositions >= maxAllowed) { Print("Maximum number of open positions reached!"); return maxAllowed; } return totalPositions; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int MaxSellOpenPositions(int maxAllowed) { int totalSellPositions = OrdersTotal(); // Get the total number of open positions if (totalSellPositions >= maxAllowed) { Print("Maximum number of open positions reached!"); return maxAllowed; } return totalSellPositions; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OpenPosition() { int totalPositions = MaxBuyOpenPositions(maxAllowedPositions); int totalSellPositions = MaxSellOpenPositions(maxSellAllowedPositions); if (CheckConsecutiveBullish() && totalPositions < maxAllowedPositions) { int Buy = OrderSend(NULL, OP_BUY, LotSize, Ask, 10, 0, bTakeProfit,NULL); } if (CheckConsecutiveBearish() && totalSellPositions < maxSellAllowedPositions) { int Sell = OrderSend(NULL, OP_SELL, LotSize, Bid, 10, 0, sTakeProfit,NULL); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseBuyOrder() { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY) { int CloseBuy = OrderClose(OrderTicket(), OrderLots(), MarketInfo(Symbol(),MODE_BID),Red); if(CloseBuy < 0) Print("Close Buy Error: " + string(GetLastError())); } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseSellOrder() { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_SELL) { int CloseSell = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK), Red); if(CloseSell < 0) Print("Close Sell Error: " + string(GetLastError())); } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ClosePendingOrder() { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) { int Delete = OrderDelete(OrderTicket()); if(Delete < 0) Print("Delete Error: " + string(GetLastError())); } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseTradeOnTP() { for(int i=0; i<OrdersHistoryTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { if(OrderTakeProfit()==OrderClosePrice()) if(TimeCurrent() - OrderCloseTime() <= 5) { CloseBuyOrder(); CloseSellOrder(); ClosePendingOrder(); } } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool newBar() { datetime currentTime = iTime(Symbol(), Period(), 0); static datetime priorTime = currentTime; bool result = (currentTime!=priorTime); priorTime = currentTime; return result; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ /*double GetLastOpenPositionLotSize() { int totalOrders = OrdersTotal(); if (totalOrders > 0) { int lastPositionIndex = totalOrders - 1; if (OrderSelect(lastPositionIndex, SELECT_BY_POS, MODE_TRADES)) { double lastPositionLotSize = OrderLots(); return lastPositionLotSize; } } // If no open positions found, return 0.0 return 0.0; }*/ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double orderLotsize() { if(OrdersTotal()>0) { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=1)) { double Lotsize = OrderLots() * 2; return Lotsize; } } } return 0.0; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CheckPendingOrderLimit2(int maxOrders) { int totalPendingOrders = 0; for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) { totalPendingOrders++; if (totalPendingOrders >= maxOrders) return false; // Maximum limit reached } } } return true; // Within the limit } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void LastOpenPrice2() { double previousStopPrice = 0; int maxPendingOrders = 2; // Maximum allowed number of pending orders // Check if the number of pending orders is within the limit if (!CheckPendingOrderLimit2(maxPendingOrders)) { Print("Pending order limit reached. Cannot open new pending order."); return; } for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderType() == OP_BUY || OrderType() == OP_SELL) { double openPrice = OrderOpenPrice(); string symbol = OrderSymbol(); if(previousStopPrice == 0) { if(OrderType() == OP_BUY) { double stopPrice = openPrice - (30 * SymbolInfoDouble(symbol, SYMBOL_POINT) * 10); int sellStop = OrderSend(symbol, OP_SELLSTOP, orderLotsize(), stopPrice, 10, 0, sTakeProfit); if(sellStop > 0) { previousStopPrice = stopPrice; } } else if(OrderType() == OP_SELL) { double stopPrice = openPrice + (30 * SymbolInfoDouble(symbol, SYMBOL_POINT) * 10); int buyStop = OrderSend(symbol, OP_BUYSTOP, orderLotsize(), stopPrice, 10, 0, bTakeProfit); if(buyStop < 0) { Print("Error: " + string(GetLastError())); } if(buyStop > 0) { previousStopPrice = stopPrice; } } } } } } }
Hi developers.
I'm interested in creating an online licensing system for my expert advisors. This will allow me control the EA remotely.
When the user places the EA on the chart, it automatically synchronises with the expiry date and account number to know whether the user is a valid user or not.
Responded
1
Rating
Projects
287
52%
Arbitration
0
Overdue
1
0%
Free
2
Rating
Projects
201
27%
Arbitration
0
Overdue
3
1%
Free
3
Rating
Projects
390
34%
Arbitration
2
100%
/
0%
Overdue
0
Working
4
Rating
Projects
89
38%
Arbitration
26
4%
/
77%
Overdue
39
44%
Working
5
Rating
Projects
26
27%
Arbitration
0
Overdue
2
8%
Free
Similar orders
Converting TradingView Strategy into MQL5 EA
40 - 60 USD
hi. I hv a strategy on tradingview need to convert to MT4/MT5 expert advisor for algo trading. would like to add some tradingview strategy setting to the EA(not included in my tradingview code): recalculate after order is filled, order size: xx% of equity
SIERRA CHART - AI Program Needed
150+ USD
1. Combination of Market Profiles on daily basis a) this should be combined if the bell curve is similar to the previous day. Rotational day (volume - standard deviation). b) If breakout, new range should be drawn Conclusion: Market profile should be combined on daily after the market is closed 2. Use Vwap indicator, with 0.5 - slow trend, 1.0 - normal trend, 1.5 fast trend. The stop loss should be under the trend
Octafx Copytrading to Mt4
50 - 100 USD
Mt4 EA Copy trades from octafx copytrading master trader trades 1-i need a bot which will copy trades from Octafx Copytrading Master Trader trades to Metatrader 4 account. 2-bot will copy exactly same trade with same lotsize 3-Bot should open exactly same time when master open and close exactly same time when master close 4-provide complete source code Guide Completely how to Run*
Hello coder, I am looking for a skilled web application developer to create a page that analyzes trades similar to Myfxbook. The application should support both MT4 and MT5 platforms. The front-end of this application should be capable of creating detailed charts and graphs for visualizing trade performance. Key Responsibilities: Develop a Web Application: Create a user-friendly interface for tracking and analyzing
Pairs Trading Forex EA
30 - 40 USD
Hi, with a max 3% DD and 99% win rate this is impressive. Does it work with all brokers and pairs ? Do you have any proof such as a myfxbook account ? Only an expert developer with proof should comment for further discussion
Scalping or HFT EA for funded Prop Firm Accounts
30 - 100 USD
I’m looking for a developer that has understanding of scalping and HFT strategies that can make an algo that works for all brokers and prop firm LIVE accounts (like STP, ECN, DMA, Money Makers, NDD, Fast Server etc.,). I want someone that has understanding and insight in different scalping and HFT strategies, preferably something like momentum based strategies. The EA has to work on all Brokers and Prop firms like
Online License System for MT4/MT5 EA - Cloud Based
30 - 100 USD
Hi Everyone, I need a cloud based licensing system to protect my MT4 / MT5 Indicators and Expert advisors Secure an unlimited number of EAs, indicators, and scripts. Create and manage unlimited license keys for secured EAs, indicators, and scripts. Instantly suspend license keys in case of refund. Lock EA/indicator to specific accounts and time frame similar to this
Robotics Artificial Intelligence
100+ USD
I believe in Robotics as a major artificial intellect to function of growth of business.Therefore if you script there is a likelihood of bringing economies of scale.The retrospective of the dynamics of indulgence of work can be economics of scale
Hello there! I am looking for an experienced coder to transform my existing trading system into an automated algorithm for the MetaTrader platform. Key Responsibilities: Interpret and understand the trading system I've designed. Code an algorithm that can execute trading decisions without manual intervention. Test and refine the algorithm for MetaTrader compatibility. Ideal Candidate: Proficient in Python, C++, or
there I hope you're doing well I want to convert the tradingview indicator to make an indicator for mt5. And in that, I want to make an automatic robot on the base of the indicator. I have the pine script of that indicator
Project information
Budget
50+ USD
For the developer
45
USD
Deadline
to 10 day(s)