Modify Code so that it Performs the Same as the Attached Indicator

MQL5 Indicatori Esperti

Lavoro terminato

Tempo di esecuzione 1 giorno
Feedback del cliente
Good developer, recommend to anyone
Feedback del dipendente
Great customer. Clear description of requirement specification, fast communication. Looking forward to working with you again. Thanks

Specifiche

This is a very straight forward request.

What I need is for the Bollinger Bands Buy / Sell functions below to perform the same as the indicator that is attached.

Delivery will comprise of a video / demonstration that the functions will work within an expert advisor / work in a similar manner to the indicator.

I've shared the following below:

  • Photo of Indicator (ibbfill2)
  • Functions Bollinger Bands Buy / Sell (these functions should match the conditions of the ibbfill2 indicator (i.e. when the Indicator shades Blue - that is the same as Bollinger Bands Buy / vice versa for Bollinger Bands Sell)
  • iBandsMQL4 Function (because MT5 does not have shift / a proper way to indicate the MAIN / UPPER / LOWER Bound) I have created this function. Note if you have an alternative, feel free to replace this.


Photo of Indicator:

Indicator Example



Functions - Bollinger Bands Buy & Sell:

bool BollingerBandsBuy(string symb)
{
    bool state = false;

    double bid = SymbolInfoDouble(symb, SYMBOL_BID);
    double ask = SymbolInfoDouble(symb, SYMBOL_ASK);
    double close = iClose(symb, PERIOD_M5, 1);

    static bool conditionMet[12]; // Array to store conditionMet for each symbol
    string symbols_group[] = {symb1, symb2, symb3, symb4, symb5, symb6, symb7, symb9, symb10, symb11, symb12 };
    int numSymbols = ArraySize(symbols_group);

    if (ArraySize(conditionMet) != numSymbols)
    {
        ArrayResize(conditionMet, numSymbols);
    }

    int symbolIndex = -1;
    for (int i = 0; i < numSymbols; i++)
    {
        if (symb == symbols_group[i])
        {
            symbolIndex = i;
            break;
        }
    }

    if (symbolIndex == -1)
    {
        Print("Symbol not found in the group.");
        return false;
    }

    //------------------------------------------------------------------------

    double iBandsMain1 = iBandsMQL4(symb, PERIOD_M15, 20, 2, 0, 1);
    double iBandsUpper1 = iBandsMQL4(symb, PERIOD_M15, 20, 2, 1, 1);
    double iBandsLower1 = iBandsMQL4(symb, PERIOD_M15, 20, 2, 2, 1);

    //------------------------------------------------------------------------

    //---------------------- Buy Condition Initial Trigger -------------------

    if (close > iBandsUpper1)
    {
        conditionMet[symbolIndex] = true;
    }
    else if (close < iBandsMain1)
    {
        conditionMet[symbolIndex] = false;
    }

    //---------------------- Condition Start ---------------------------

    if (conditionMet[symbolIndex] && ask > iBandsMain1)
    {
        state = true;
    }

    return state;
}


//-------------------------------------------------------------------------------------------------------------++

bool BollingerBandsSell(string symb)
{
    bool state = false;

    double bid = SymbolInfoDouble(symb, SYMBOL_BID);
    double ask = SymbolInfoDouble(symb, SYMBOL_ASK);
    double close = iClose(symb, PERIOD_M5, 1);

    static bool conditionMet[12]; // Array to store conditionMet for each symbol
    string symbols_group[] = {symb1, symb2, symb3, symb4, symb5, symb6, symb7, symb9, symb10, symb11, symb12 };
    int numSymbols = ArraySize(symbols_group);

    if (ArraySize(conditionMet) != numSymbols)
    {
        ArrayResize(conditionMet, numSymbols);
    }

    int symbolIndex = -1;
    for (int i = 0; i < numSymbols; i++)
    {
        if (symb == symbols_group[i])
        {
            symbolIndex = i;
            break;
        }
    }

    if (symbolIndex == -1)
    {
        Print("Symbol not found in the group.");
        return false;
    }

    //------------------------------------------------------------------------

    double iBandsMain1 = iBandsMQL4(symb, PERIOD_M15, 20, 2, 0, 1);
    double iBandsUpper1 = iBandsMQL4(symb, PERIOD_M15, 20, 2, 1, 1);
    double iBandsLower1 = iBandsMQL4(symb, PERIOD_M15, 20, 2, 2, 1);

    //------------------------------------------------------------------------

    //---------------------- Buy Condition Initial Trigger -------------------

    if (close < iBandsLower1)
    {
        conditionMet[symbolIndex] = true;
    }
    else if (close > iBandsMain1)
    {
        conditionMet[symbolIndex] = false;
    }

    //---------------------- Condition Start ---------------------------

    if (conditionMet[symbolIndex] && close < iBandsMain1)
    {
        state = true;
    }

    return state;
}

  • Note: I have added a conditionMet function to this so that I can store the boolean for the first time it exceeds the Upper Bollinger Band. I need this to work with multicurrencies hence the array that contains 12 symbols.


iBands MQL4 Function:

double iBandsMQL4(string symb, ENUM_TIMEFRAMES tf, int period, double StdDeviation, int line, int shift) 
{
    ENUM_TIMEFRAMES timeframe3 = TFMigrate(tf);

    int handleBB = iBands(symb, timeframe3, period, 0, StdDeviation, PRICE_CLOSE);

    double bbUpper[], bbLower[], bbMiddle[];
    ArraySetAsSeries(bbUpper, true);
    ArraySetAsSeries(bbLower, true);
    ArraySetAsSeries(bbMiddle, true);

    CopyBuffer(handleBB, BASE_LINE, 1, shift + 1, bbMiddle);
    CopyBuffer(handleBB, UPPER_BAND, 1, shift + 1, bbUpper);
    CopyBuffer(handleBB, LOWER_BAND, 1, shift + 1, bbLower);

    double iBandsValue;

    if (line == 0)
    {
        iBandsValue = NormalizeDouble(bbMiddle[shift], SymbolInfoInteger(symb, SYMBOL_DIGITS));
    }
    else if (line == 1)
    {
        iBandsValue = NormalizeDouble(bbUpper[shift], SymbolInfoInteger(symb, SYMBOL_DIGITS));
    }
    else if (line == 2)
    {
        iBandsValue = NormalizeDouble(bbLower[shift], SymbolInfoInteger(symb, SYMBOL_DIGITS));
    }
    else
    {
        iBandsValue = 0.0; // Default value in case of invalid line parameter
    }
   
    return iBandsValue;
}



Con risposta

1
Sviluppatore 1
Valutazioni
(265)
Progetti
333
29%
Arbitraggio
36
28% / 64%
In ritardo
10
3%
Caricato
2
Sviluppatore 2
Valutazioni
(322)
Progetti
499
67%
Arbitraggio
5
40% / 0%
In ritardo
4
1%
Gratuito
Pubblicati: 8 codici
Ordini simili
السلام عليكم ورحمة الله وبركاته، ​أبحث عن مبرمج 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
Bonjour, je recherche un développeur MQL5 expérimenté pour créer un Expert Advisor pour MetaTrader 5 basé sur une stratégie de trading intégrant des principes de gestion des risques rigoureux et d'intelligence financière. Le robot doit être capable de gérer plusieurs paires de devises et d'optimiser automatiquement les entrées et sorties en fonction de conditions de marché prédéfinies."
MT4/MT5 HFT EA us30 30 - 3000 USD
Hello everybody, I'm looking for an experienced MQL4/MQL5 developer to optimize a High-Frequency Trading (HFT) Expert Advisor for both MT4 and MT5. The EA performs consistently and profitably on demo accounts, but when it is run on Raw and Standard live accounts under what appear to be the same trading conditions, it begins generating losses. I do not have the original source code (.mq4/.mq5); I only have the

Informazioni sul progetto

Budget
40+ USD
Scadenze
a 1 giorno(i)