Need help to create an EA for Pending Orders

MQL5 Uzmanlar

İş tamamlandı

Tamamlanma süresi: 1 gün

Şartname

Hello MQL5 freelancers, good day.


I’m just starting to learn MQL5 and I’ve started reading the MQL5 Docs and a couple tutorials for beginners but haven’t found a good tutorial on how to place pending orders using Buy Stop and Sell Stop. I would like to know if anybody could teach me how to do what I need with one or two freelance jobs, this way I could get the grasp of it a little bit faster and start learning by the example of an experienced MQL5 programmer.


Here are the basic rules for my first EA:


1. Check ADX Indicator and determine if +DI > -DI or +DI < -DI; assign this to variables used for next steps.

    a) Buy_Condition = +DI > -DI;

    b) Sell_Condition = +DI < -DI;

 

2. If +DI > -DI the order should be Buy Stop and if +DI < -DI the order should be Sell Stop.

    a) If +DI > -DI look for black candles (bears) and if +DI < -DI look for white candles (bulls).

    b) Once this conditions are met respectively, open a position to buy or sell (depending on the criteria) with Open price from previous bar/candle.


3. If the order is Buy Stop, Stop Loss should be equal to: Low price from previous bar/candle -0.1 cents; if the order is Sell Stop, Stop Loss should be equal to: High price from previous bar/candle +0.1 cents.


4. The timeframe/period for this should be daily (D1).


For this EA I think I won’t be needing Moving Average nor Take Profit.

 

Here is the code I have started to create but could't place any orders yet:

 

// Input variables

input double Lots    = 0.1;

input int StopLoss   = 1000;

input int TakeProfit = 1000;

input int MAPeriod   = 10;

input int ADXPeriod  = 14;

// Global variables

bool glBuyPlaced, glSellPlaced;

// OnInit() event handler

int OnInit()

  {

//---

   

//---

   return(0);

  }

// OnTick() event handler

void OnTick()

{

// Trade structures

MqlTradeRequest request;

MqlTradeResult result;

ZeroMemory(request);

// Moving average

double ma[];

ArraySetAsSeries(ma,true);

int maHandle=iMA(_Symbol,0,MAPeriod,MODE_SMA,0,PRICE_CLOSE);

CopyBuffer(maHandle,0,0,1,ma);

// ADX Indicator values

double ADX_Val[], Plus_DI[], Minus_DI[];

ArraySetAsSeries(ADX_Val,true);

ArraySetAsSeries(Plus_DI,true);

ArraySetAsSeries(Minus_DI,true);

int ADX_Handle = iADX(NULL, 0, ADXPeriod);

CopyBuffer(ADX_Handle, 0, 0, 3, ADX_Val);

CopyBuffer(ADX_Handle, 1, 0, 3, Plus_DI);

CopyBuffer(ADX_Handle, 2, 0, 3, Minus_DI);

// Open price

double open[];

ArraySetAsSeries(open,true);

CopyOpen(_Symbol,0,0,1,open);

// High price

double high[];

ArraySetAsSeries(high,true);

CopyHigh(_Symbol,0,0,1,high);

// Low price

double low[];

ArraySetAsSeries(low,true);

CopyLow(_Symbol,0,0,1,low);

// Close price

double close[];

ArraySetAsSeries(close,true);

CopyClose(_Symbol,0,0,1,close);

// Current position information

bool openPosition = PositionSelect(_Symbol);

long positionType = PositionGetInteger(POSITION_TYPE);

double currentVolume = 0;

if ( openPosition == true ) currentVolume = PositionGetDouble(POSITION_VOLUME);

// Open buy market order

if ( Plus_DI[0] > Minus_DI[0] && glBuyPlaced == false && (positionType != POSITION_TYPE_BUY || openPosition == false) )

{

request.action = TRADE_ACTION_PENDING;

request.type = ORDER_TYPE_BUY_STOP;

request.symbol = _Symbol;

request.volume = Lots + currentVolume;

request.type_filling = ORDER_FILLING_FOK;

request.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);

request.sl = 0;

request.tp = 0;

request.type_time = ORDER_TIME_SPECIFIED;

request.deviation = 50;

request.stoplimit = 0;

OrderSend(request,result);

// Modify SL/TP

if ( result.retcode == TRADE_RETCODE_PLACED || result.retcode == TRADE_RETCODE_DONE )

{

request.action = TRADE_ACTION_SLTP;

do Sleep(100); while(PositionSelect(_Symbol) == false);

double positionOpenPrice = PositionGetDouble(POSITION_PRICE_OPEN);

if ( StopLoss > 0 ) request.sl = positionOpenPrice - (StopLoss * _Point);

if ( TakeProfit > 0 ) request.tp = positionOpenPrice + (TakeProfit * _Point);

if ( request.sl > 0 && request.tp > 0 ) OrderSend(request,result);

glBuyPlaced = true;

glSellPlaced = false;

}

}

// Open sell market order

else if ( Minus_DI[0] < Plus_DI[0] && glSellPlaced == false && positionType != POSITION_TYPE_SELL )

{

request.action = TRADE_ACTION_PENDING;

request.type = ORDER_TYPE_SELL_STOP;

request.symbol = _Symbol;

request.volume = Lots + currentVolume;

request.type_filling = ORDER_FILLING_FOK;

request.price = SymbolInfoDouble(_Symbol,SYMBOL_BID);

request.sl = 0;

request.tp = 0;

request.type_time = ORDER_TIME_SPECIFIED;

request.deviation = 50;

request.stoplimit = 0;

OrderSend(request,result);

// Modify SL/TP

if ( (result.retcode == TRADE_RETCODE_PLACED || result.retcode == TRADE_RETCODE_DONE) && (StopLoss > 0 || TakeProfit > 0) )

{

request.action = TRADE_ACTION_SLTP;

do Sleep(100); while(PositionSelect(_Symbol) == false);

double positionOpenPrice = PositionGetDouble(POSITION_PRICE_OPEN);

if ( StopLoss > 0 ) request.sl = positionOpenPrice + (StopLoss * _Point);

if ( TakeProfit > 0 ) request.tp = positionOpenPrice - (TakeProfit * _Point);

if ( request.sl > 0 && request.tp > 0 ) OrderSend(request,result);

glBuyPlaced = false;

glSellPlaced = true;

}

}

} 

  

I hope someone could point me in the right direction and help me to solve this EA.


Regards and thank you in advance,

codeMolecules

Yanıtlandı

1
Geliştirici 1
Derecelendirme
(1931)
Projeler
3552
88%
Arabuluculuk
73
40% / 15%
Süresi dolmuş
268
8%
Serbest
2
Geliştirici 2
Derecelendirme
(11)
Projeler
17
41%
Arabuluculuk
4
0% / 100%
Süresi dolmuş
5
29%
Serbest
Benzer siparişler
Custom MT5 EA for buy stop and sell stop breakout strategy.’ ‘Requirements, develop a custom Expert Advisor for MetaTrader 5 that places buy-stop and sell-stop pending orders based on defined breakout rules.’ ‘All important values adjustable via inputs.’ ‘Includes stop loss, take profit, trailing stop, and configurable risk management.’ ‘One trade at a time, works on demo before live.’ Provide source code and
I have an automated trading strategy in NinjaTrader 8 (C# / NinjaScript) that is currently under development. Before diving into technical details, I’d like to ask a quick question from someone who's interested. Do you work on existing / in-progress codebases to debug, refactor, or add new features, or do you strictly build projects from scratch? NOTE : Only professional Developer should apply for this project
السلام عليكم ورحمة الله وبركاته، ​أبحث عن مبرمج MQL5 خبير ومتمكن جداً لتطوير روبوت تداول (Expert Advisor) محترف لمنصة MetaTrader 5 يعمل باستراتيجية هيدج محددة بصفقة واحدة فقط في كل اتجاه (1 Buy & 1 Sell Max) مع إدارة مخاطر صارمة. ​المواصفات والاستراتيجية المطلوبة: ​1. آلية الهيدج المحدود (Single Position Hedging Limit): ​الحد الأقصى للصفقات: يُسمح للروبوت بفتح صفقة شراء واحدة (1 Buy) وصفقة بيع واحدة (1 Sell) فقط كحد
Looking for A verifiable, disciplined XAUUSD analyst with controlled drawdown, consistent stop-loss use, clear communication and the capacity to service a live community. To send daily London and New York signals exclusively in my channel on Telegram
SENIOR MQL5 / QUANTITATIVE DEVELOPER REQUIRED — PROFESSIONAL AI-ASSISTED MT5 TRADING SYSTEM Project Overview I am seeking a highly experienced MQL5 developer, quantitative trading-system engineer or small specialist team to design and build a professional, fully auditable MetaTrader 5 trading system. This is not a request for a basic indicator conversion, copied Expert Advisor, martingale robot, grid-recovery system
Hello, I'm working since few months on a project which is running. But there are entry Chase Problem between Paper and Live order Can you help investigate that. I know that entry execution differences between Paper and Live trading are fairly common and can be caused by factors such as order type, execution timing, slippage, market data differences, or broker/API behavior. I‘m stuggling bc paper made full profit and
Platform MetaTrader 5 (MT5) MQL5 Source Code Required Compatible with Exness MT5 both standard and cent accounts/ICMarket accounts Works on EUR/USD only (initial version) ⸻ Objective Develop a fully automated AI Expert Advisor based on ICT Smart Money Concepts (SMC). The EA must only execute high-probability trades that satisfy all required conditions before opening a position. The EA must avoid overtrading and
السلاموني | ​أبحث عن مبرمج MQL5 قوي تداول تداول (EA) لمنصة MetaTrader 5 يعمل بإستراتيجية Hedging with Trailing Stop. المواصفات المطلوبة: ​العمل: يعمل الروبوت على مدار اليوم ويقوم بتشغيله بشكل مستمر. ​التحويط (التحوط): عند فتح الصفقة، يقوم جهات مختصة بمحور رئيسي مختلف ويبعد النظر عن نطاق محدد. ​ملاحقة التليفون المباشر (Trailing Stop): ترك التداولات الرابحة مع، ولا يتم إغلاقها إلا عند انعكاس السعر المحدد (Trailing
Need to create an Scalping EA for Silver-XAGUSD Generating multiple trades with small profits and with a good result with no grid or martingale. if not multiple trades then limited trades also work but it should be precise
Specifications will be sent over across chat. This will be a fairly straightforward EMA Crossover with various other requirements for signal painting. EA will have math built in and have the same signal painting and other trade management features. Looking for a developer with experience and is able to suggest meaningful features that will optimise the code set and trade execution and risk mitigation. State your

Proje bilgisi

Bütçe
20 - 40 USD
Son teslim tarihi
from 2 to 4 gün