Need help to create an EA for Pending Orders

MQL5 Uzman Danışmanlar

İş tamamlandı

Tamamlanma süresi: 1 gün

İş Gereklilikleri

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
(1928)
Projeler
3548
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
Hi everyone, I’m currently working on a private automated trading software designed specifically for XAUUSD (Gold) . This is not a signal service and not a high-frequency robot. The focus is on controlled risk, patience, and capital protection . Key points (shared briefly, not promotional): Trades one cycle at a time (no overtrading) Uses pure price behavior (no EMA, no indicators) Built-in break even and trailing
This project is based on an existing EA that trail behind. 1. Their is an issue with trailing based on lotsize This should be corrected current EA has 784 lines Error When option Enable Automatic Lot scaling is used, the trailing does not work correctly. Lotscaling is done through another EA. The EA does not trail then correctly anymore. 2. The corrected EA should also be migrated to MT 4 My standard terms of
Hello, My budget is $35 I have a range breakout expert advisor MetaTrader 5 platform that includes seven profiles, each with its own settings entered within the expert advisor's code. Each profile has its own operating method for a specific symbol, such as start time, end time, close time, risk percentage, take-profit, stop-loss, etc First option TRUE/FALSE for each profile For example, I conducted a one-month test
MT5 EA 100+ USD
hello Hi, I want to develop an EA that replicates the logic of a bot I’m currently watching on a live account. The bot has grown an account from $500 to $60k in 3 weeks using a specific 'Buy Stop/Sell Stop' strategy with 0.03 lots. I have the Investor Password and Trade History. Can you analyze the execution patterns and build a replica for me? Let me know your experience with this kind of task. message me for
I need a custom MT5 Expert Advisor + small backend bridge. The EA must: trade ONLY pending orders (BUY STOP / SELL STOP) support dual-trigger logic (one cancels the other) support fixed SL/TP, time-decay cancel, TP1 → BE communicate with a backend via HTTP (WebRequest) The backend: receives market snapshots from MT5 calls OpenAI API returns a structured JSON signal (numbers only) No strategy design needed – logic and
hello I want Semi EA developer who knows deep about martingale ,program and understand the market . MQL5 → Freelance → Search Keywords: Semi EA , Trade Manager , Manual Trade EA DM 3–5 devs directly Upwork Search: MT5 trade manager Invite only (private job) Telegram Groups: MQL5 Developers MT4 MT5 Coders
Hi I would like to create an ea that close order when: 1.The price touch the middle trend line(true/false option) 2.close buy order when trend line color change to red. Close sell order when trend line color change to blue. (True /false option)
Hello, I would like to work with a developer that has successfully done this before. The First deliverable will be a strategic roadmap with estimated costs with the Second deliverable Phase Two coding, test and deployment. The goal is to deploy into Prop Firm Challenges (FTMO) and manage funded accounts. Price listed is for Phase One only. Requirements of the roadmap / finished project are as follows: 1. An EA (or
Ninjatrader bot 100+ USD
Description: I’m looking for an experienced NinjaTrader developer to create a custom trading bot based on my 5-minute Opening Range Breakout/Breakdown (ORB) strategy and integrate it with an existing Pine Script bot. Project Scope: Step 1: Develop the ORB strategy on NinjaTrader: Entry: LONG if first 15-min candle closes ≥ OR_high + 0.5; SHORT if ≤ OR_low - 0.5 Stop Loss: LONG → OR_low - 1.5; SHORT → OR_high + 1.5
hello i need a ready made bot for future What’s the rate for your bot And what’s the rate for my add ons to the bot ? Can I try your demo on sim for a week? Because if you have one I’ll just use that an manually trade when I want to my way because my strategy involves My bot Ict and smart money concept Orb Indicators Like this

Proje bilgisi

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