Need skilled MQL5 programmers for regular work.

MQL5 Uzmanlar

Şartname

//+------------------------------------------------------------------+
//| ProTradingEA MT5                                                 |
//| Fully MT5-compliant with MACD, Trailing Stop, Break-Even         |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;

// Optional override
input string SymbolOverride = ""; // leave blank to auto-detect

struct EASettings
{
    int FastMAPeriod;
    int SlowMAPeriod;
    int RSIPeriod;
    double RSIOverbought;
    double RSIOversold;
    int MACDFast;
    int MACDSlow;
    int MACDSignal;
    double RiskPercent;
    double ATRMultiplierSL;
    double ATRMultiplierTP;
    int ATRPeriod;
    int TrailingStopPoints;
    bool TradeLondonNY;
    double PartialClosePercent;
    string NewsStartTimes;
    string NewsEndTimes;
};

EASettings settings;

double fastMA, slowMA;
double prevFastMA, prevSlowMA;

// MACD handles
int macdHandle;
double macdBuffer[], signalBuffer[], histBuffer[];

//+------------------------------------------------------------------+
//| Set defaults per symbol                                          |
//+------------------------------------------------------------------+
void SetDefaults()
{
    string sym = SymbolOverride != "" ? SymbolOverride : Symbol();

    if(sym == "EURUSD") settings = {10,50,14,70,30,12,26,9,1.0,1.0,2.0,14,200,true,50,"13:30,15:00","14:30,15:30"};
    else if(sym == "GBPUSD") settings = {12,55,14,70,30,12,26,9,1.0,1.2,2.2,14,250,true,50,"13:30,15:00","14:30,15:30"};
    else if(sym == "USDJPY") settings = {10,50,14,70,30,12,26,9,1.0,1.0,2.0,14,150,true,50,"13:30,15:00","14:30,15:30"};
    else settings = {10,50,14,70,30,12,26,9,1.0,1.0,2.0,14,200,true,50,"13:30,15:00","14:30,15:30"};
}

//+------------------------------------------------------------------+
//| Initialize EA                                                    |
//+------------------------------------------------------------------+
int OnInit()
{
    SetDefaults();

    // Create MACD handle
    macdHandle = iMACD(Symbol(), PERIOD_CURRENT, settings.MACDFast, settings.MACDSlow, settings.MACDSignal, PRICE_CLOSE);
    if(macdHandle == INVALID_HANDLE)
    {
        Print("Error creating MACD handle");
        return INIT_FAILED;
    }

    return INIT_SUCCEEDED;
}

//+------------------------------------------------------------------+
//| Calculate lot size based on risk                                  |
//+------------------------------------------------------------------+
double CalculateLotSize(double stopLossPoints)
{
    double balance = AccountInfoDouble(ACCOUNT_BALANCE);
    double riskAmount = balance * settings.RiskPercent / 100.0;

    double tickValue = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE);
    double tickSize  = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);

    double lot = riskAmount / (stopLossPoints * tickValue / tickSize);

    double minLot = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN);
    double maxLot = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX);
    double step   = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_STEP);

    lot = MathMax(minLot, MathMin(maxLot, lot));
    lot = MathFloor(lot/step)*step;
    return NormalizeDouble(lot, 2);
}

//+------------------------------------------------------------------+
//| Check if trading is allowed (session + news filter)             |
//+------------------------------------------------------------------+
bool IsTradingAllowed()
{
    // Session filter
    if(settings.TradeLondonNY)
    {
        int hour = TimeHour(TimeCurrent());
        if(hour < 8 || hour > 17) return false;
    }

    // News filter
    string starts[], ends[];
    int startCount = StringSplit(settings.NewsStartTimes, ',', starts);
    int endCount   = StringSplit(settings.NewsEndTimes, ',', ends);

    if(startCount != endCount) return true; // skip if mismatched

    for(int i=0;i<startCount;i++)
    {
        int sh = StringToInteger(StringSubstr(starts[i],0,2));
        int sm = StringToInteger(StringSubstr(starts[i],3,2));
        int eh = StringToInteger(StringSubstr(ends[i],0,2));
        int em = StringToInteger(StringSubstr(ends[i],3,2));

        int curHour = TimeHour(TimeCurrent());
        int curMin  = TimeMinute(TimeCurrent());

        if((curHour > sh || (curHour == sh && curMin >= sm)) &&
           (curHour < eh || (curHour == eh && curMin <= em)))
           return false;
    }

    return true;
}

//+------------------------------------------------------------------+
//| Manage positions: Trailing Stop, Break-Even, Partial Close       |
//+------------------------------------------------------------------+
void ManagePositions()
{
    if(!PositionSelect(Symbol())) return;

    double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);
    double sl = PositionGetDouble(POSITION_SL);
    double tp = PositionGetDouble(POSITION_TP);
    double volume = PositionGetDouble(POSITION_VOLUME);
    long type = PositionGetInteger(POSITION_TYPE);
    double price = (type == POSITION_TYPE_BUY) ? SymbolInfoDouble(Symbol(), SYMBOL_BID) : SymbolInfoDouble(Symbol(), SYMBOL_ASK);

    // Trailing Stop
    if(type == POSITION_TYPE_BUY)
    {
        double newSL = price - settings.TrailingStopPoints * _Point;
        if(newSL > sl && newSL > openPrice)
            trade.PositionModify(Symbol(), newSL, tp);

        // Break-Even + Partial Close
        if(price - openPrice >= (tp - openPrice)/2 && sl < openPrice)
        {
            trade.PositionModify(Symbol(), openPrice, tp);
            double closeVol = volume * settings.PartialClosePercent / 100.0;
            trade.PositionClosePartial(Symbol(), closeVol);
        }
    }

    if(type == POSITION_TYPE_SELL)
    {
        double newSL = price + settings.TrailingStopPoints * _Point;
        if(sl == 0 || newSL < sl)
            trade.PositionModify(Symbol(), newSL, tp);

        // Break-Even + Partial Close
        if(openPrice - price >= (openPrice - tp)/2 && (sl == 0 || sl > openPrice))
        {
            trade.PositionModify(Symbol(), openPrice, tp);
            double closeVol = volume * settings.PartialClosePercent / 100.0;
            trade.PositionClosePartial(Symbol(), closeVol);
        }
    }
}

//+------------------------------------------------------------------+
//| OnTick                                                            |
//+------------------------------------------------------------------+
void OnTick()
{
    if(!IsTradingAllowed()) return;

    // MAs
    fastMA = iMA(NULL,0,settings.FastMAPeriod,0,MODE_SMA,PRICE_CLOSE,0);
    slowMA = iMA(NULL,0,settings.SlowMAPeriod,0,MODE_SMA,PRICE_CLOSE,0);
    prevFastMA = iMA(NULL,0,settings.FastMAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
    prevSlowMA = iMA(NULL,0,settings.SlowMAPeriod,0,MODE_SMA,PRICE_CLOSE,1);

    // RSI
    double rsi = iRSI(NULL,0,settings.RSIPeriod,PRICE_CLOSE,0);

    // MACD
    if(CopyBuffer(macdHandle,0,0,1,macdBuffer) <= 0) return; // Main
    if(CopyBuffer(macdHandle,1,0,1,signalBuffer) <= 0) return; // Signal
    double macdHist = macdBuffer[0] - signalBuffer[0];

    // ATR for SL/TP
    double atr = iATR(NULL,0,settings.ATRPeriod,0);
    double slPoints = settings.ATRMultiplierSL * atr / _Point;
    double tpPoints = settings.ATRMultiplierTP * atr / _Point;

    double lot = CalculateLotSize(slPoints);
    bool hasPosition = PositionSelect(Symbol());

    // BUY signal
    if(prevFastMA < prevSlowMA && fastMA > slowMA && rsi < settings.RSIOverbought && macdHist > 0 && !hasPosition)
    {
        double price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
        double sl = price - slPoints*_Point;
        double tp = price + tpPoints*_Point;
        trade.Buy(lot,Symbol(),price,sl,tp);
    }

    // SELL signal
    if(prevFastMA > prevSlowMA && fastMA < slowMA && rsi > settings.RSIOversold && macdHist < 0 && !hasPosition)
    {
        double price = SymbolInfoDouble(Symbol(), SYMBOL_BID);
        double sl = price + slPoints*_Point;
        double tp = price - tpPoints*_Point;
        trade.Sell(lot,Symbol(),price,sl,tp);
    }

    // Manage open positions
    ManagePositions();
}

Yanıtlandı

1
Geliştirici 1
Derecelendirme
(568)
Projeler
658
32%
Arabuluculuk
43
42% / 44%
Süresi dolmuş
11
2%
Yüklendi
2
Geliştirici 2
Derecelendirme
(256)
Projeler
319
29%
Arabuluculuk
34
26% / 65%
Süresi dolmuş
10
3%
Serbest
3
Geliştirici 3
Derecelendirme
(7)
Projeler
7
0%
Arabuluculuk
2
50% / 0%
Süresi dolmuş
1
14%
Çalışıyor
4
Geliştirici 4
Derecelendirme
(106)
Projeler
173
25%
Arabuluculuk
23
9% / 78%
Süresi dolmuş
16
9%
Çalışıyor
5
Geliştirici 5
Derecelendirme
(8)
Projeler
9
11%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
6
Geliştirici 6
Derecelendirme
(148)
Projeler
157
42%
Arabuluculuk
3
33% / 33%
Süresi dolmuş
1
1%
Meşgul
7
Geliştirici 7
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
8
Geliştirici 8
Derecelendirme
(2)
Projeler
2
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
9
Geliştirici 9
Derecelendirme
(25)
Projeler
33
24%
Arabuluculuk
3
33% / 33%
Süresi dolmuş
4
12%
Çalışıyor
10
Geliştirici 10
Derecelendirme
(162)
Projeler
288
35%
Arabuluculuk
18
22% / 61%
Süresi dolmuş
42
15%
Çalışıyor
11
Geliştirici 11
Derecelendirme
(61)
Projeler
88
28%
Arabuluculuk
24
13% / 58%
Süresi dolmuş
7
8%
Yüklendi
12
Geliştirici 12
Derecelendirme
(17)
Projeler
19
26%
Arabuluculuk
0
Süresi dolmuş
3
16%
Serbest
13
Geliştirici 13
Derecelendirme
(16)
Projeler
20
0%
Arabuluculuk
10
0% / 80%
Süresi dolmuş
6
30%
Serbest
14
Geliştirici 14
Derecelendirme
(313)
Projeler
559
35%
Arabuluculuk
80
31% / 44%
Süresi dolmuş
203
36%
Serbest
15
Geliştirici 15
Derecelendirme
(104)
Projeler
125
24%
Arabuluculuk
23
26% / 52%
Süresi dolmuş
8
6%
Çalışıyor
16
Geliştirici 16
Derecelendirme
(6)
Projeler
5
0%
Arabuluculuk
3
33% / 67%
Süresi dolmuş
2
40%
Serbest
17
Geliştirici 17
Derecelendirme
(119)
Projeler
169
38%
Arabuluculuk
9
78% / 22%
Süresi dolmuş
15
9%
Serbest
18
Geliştirici 18
Derecelendirme
(278)
Projeler
373
72%
Arabuluculuk
19
32% / 47%
Süresi dolmuş
14
4%
Serbest
Yayınlandı: 14 kod
19
Geliştirici 19
Derecelendirme
(13)
Projeler
20
40%
Arabuluculuk
1
0% / 100%
Süresi dolmuş
1
5%
Serbest
20
Geliştirici 20
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
21
Geliştirici 21
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
Benzer siparişler
I currently have unfinished work. It’s a project to connect MetaTrader with the BingX platform. At the moment, I have implemented a service that retrieves a custom symbol in BingX, and it works well. However, some specifications still need to be adjusted regarding how the data is received. Otherwise, prices and other values are accurate. The only issue is that for the strategy tester, it is always necessary to
Modify an existing EA 30 - 50 USD
This is to modify my Semi Auto EA -Looking for developer modify my existing EA to Pending Order EA (BS/BL/SL/SS). Relevent with Heiken Ashi Smooth ,Moving Average , Acceleration. Concept MAster and Slave. Ready to give previous soucre code as guide. Work to do - 1)To modify this EA to Pending Order. 2) to add new feature - Risk Management/moneymanagement 3) To modify 4 slave to 7 slave will give the previous to
BTC 5 Minutes scalping 50 - 100 USD
import { useState, useEffect, useRef } from "react"; const INIT_LOT = 0.01; const TP_MOVE = 200; const SL_MOVE = 120; const START_BALANCE = 1000; const MAX_LOT = 5.12; const TICK_MS = 1200; function ema(arr, n) { if (arr.length < n) return null; const k = 2 / (n + 1); let e = arr.slice(0, n).reduce((s, v) => s + v, 0) / n; for (let i = n; i < arr.length; i++) e = arr[i] * k + e * (1 - k); return e; } function
🚀 ADAPTIVE GRID HEDGE EA (FULL VERSION) 🧠 📌 GENERAL CONCEPT This Expert Advisor (EA) uses a strategy combining: Grid trading (order grid) Hedge (protection with opposite positions) Lot scaling (progressive) Loss compensation with profits Continuous operation (non-stop) Focus on: Small recurring profits High trade volume (rebate/IB) The system does not depend on direction, but rather on market oscillation . Main
I have a indicator working good but have some bug for arrow placement . budget is fixed 30 used . only experience developer apply. i want to arrow get put on just above the candle high and candle low
I need a professional MT5 Expert Advisor (EA) built with clean, modular code. This is an advanced strategy combining liquidity concepts, controlled DCA, hedge protection, and strict risk management. Core Requirements: Entry Logic (ALL must align): Liquidity sweep (Previous Day High/Low breakout and return) EMA50 and EMA200 trend alignment Higher timeframe bias (H1 or H4) RSI confirmation Bollinger Band entry Filters
I need a professional MQL5 developer. BEFORE I SHARE ANY DETAILS: 1. You must sign a PERPETUAL NDA with no expiration date 2. NDA includes €100,000 penalty for any breach 3. I require full .mq5 source code ownership 4. Developer must have 500+ completed jobs, 4.9+ rating Budget: €1500 EUR Duration: 14 days Start your application with "RULER" to prove you read this
i have a simple strategy can you please create the automated forex ea to execute my trading strategy? i need custom ea for tradingview and mt4/mt5 correction: i need a tradingview indicator created that tells me when to buy or sell. and ea in mt4/mt5
Pip Scalper Bot 60+ USD
i want a trading bot that is aleast 98% sure,and cam also do scalping 99% correct using smart money concept, ICT, ALL technical analysis on it and also put risk management on it
It is very important, that your software can replicate the trade logic 1:1 as the original myfxbook statistic. You should have a professional software to analyze the trade logic. I tried it with ChatGPT and GROK and it doesnt worked at all. You need to have better tools for that job. If you can not do it to 99% same trade logic as the original statistic do not message me. Payment only after delivering the EA (Demo

Proje bilgisi

Bütçe
30 - 200 USD
KDV (20%): 6 - 40 USD
Toplam: 36 - 240 USD
Geliştirici için
27 - 180 USD
Son teslim tarihi
from 1 to 31 gün

Müşteri

Verilmiş siparişler1
Arabuluculuk sayısı0