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
(253)
Progetti
316
29%
Arbitraggio
34
26% / 65%
In ritardo
10
3%
Gratuito
2
Sviluppatore 2
Valutazioni
(322)
Progetti
499
67%
Arbitraggio
5
40% / 0%
In ritardo
4
1%
Gratuito
Pubblicati: 8 codici
Ordini simili
looking for Expert to create or ready made solution for bonus hedge auto set cross trading of opposite trading strategy. the expert may guide what max and best he can do to make the EA perfect
Set specific time to run this function(order). The time can be hard-coded or inputted by user. Time format: HH:MM:SS:ss Example: 17:58:48:59 -> This means an order will be triggered at 5 pm 58min 48sec 59 today. Set “Stop loss” and order a Sell stop. “At price” triggered automatically: current(specific time set above 1) Gold price - 2$ Stop loss: current Gold price + 2$ Volume: 0.1 (It can be hard-coded or inputted
Simplebot 30+ USD
#include <Trade/Trade.mqh> CTrade trade; input double LotSize = 0.1; input int FastMA = 10; input int SlowMA = 20; int fastHandle, slowHandle; // Initialize indicators int OnInit() { fastHandle = iMA(_Symbol, PERIOD_CURRENT, FastMA, 0, MODE_SMA, PRICE_CLOSE); slowHandle = iMA(_Symbol, PERIOD_CURRENT, SlowMA, 0, MODE_SMA, PRICE_CLOSE); return(INIT_SUCCEEDED); } void OnTick() { double fastMA[2]; double
I need an Expert Advisor (EA) for MetaTrader (MT4 or MT5) based on the following scalping strategy. Platform: MT4 or MT5 Symbol: EURUSD (should work on other pairs as well) Timeframe: M1 or M5 Indicators: - EMA 9 - EMA 21 - RSI (14) Buy Conditions: - EMA 9 crosses above EMA 21 - RSI > 55 - Spread < 1.5 pips - Only one trade at a time Sell Conditions: - EMA 9 crosses below EMA 21 - RSI < 45 - Spread < 1.5 pips -
In need of an automated bot that strongly detect support and resistance zones where price has a high probability of reacting ,rejecting or reversing. The zones should be built on combibation of of : (a)swing high and swing low.(b)repeated price reaction c)rejection strength (d)break and retest behaviour (e) consolidation origin before implusive move (f) strong displacement candles
I need a mt5 Expert advisor ea to manage intraday trades with strict risk management. The EA must -Handle between 5 to 8 clean trades a day max altogether throughout all 3 sessions. no big news trading times and no overnight trades -Use 1% on forex pairs and upto 2% on XAUUSD risk per trade - Automatically calculate lot size based on stop loss -use fixed RR ratio [1:2] For forex pairs, the stop loss should be
I need a clean, bug-free MT5 Expert Advisor (MQL5) based on this exact mechanical scalping strategy on M5 timeframe for EURUSD. Indicators (built-in): - EMA 9 and EMA 21 on M5 - RSI 14 - ADX 14 (>25 for strong trend) - H1 EMA 21 above/below H1 EMA 9 for trend alignment Entry Rules (ALL must be true): BUY: EMA9 crosses above EMA21 (on closed bar) + RSI > 50 + ADX > 25 + H1 EMA21 > H1 EMA9 SELL: Mirror (cross below
I will like to purchase tradingview strategy with high winning rate, i mean already made, tested and trusted and powerful strategy, i have tried to code my own strategy with lot of freelancers but nothing to me i am just wasting money, i have wasted lot of money already, so i need a high winning rate tradingview strategy, we can discuss price in chat, I will need to see some test result as well
Looking to acquire a good MT5 based EA that works on Gold, forex pairs or BTC. Must be suitable for current market conditions and profitable in backtests. Suitable on 1 Min timeframe to be used on, Must be actively opening many positions throughout the day. Share me the details if this matches something you have or developed. Looking to get this finalised within the weekend
Pakayaku Robot Trading 30 - 200 USD
Revolusi Trading BTCUSD dengan Presisi Fibonacci & Ichimoku Kumo "Memperkenalkan Pakayaku Robot Trading , asisten cerdas yang dirancang khusus untuk menaklukkan pasar emas (XAUUSD) dan Bitcoin (BTCUSD). Menggabungkan algoritma Fibonacci Retracement untuk akurasi titik pantul dan Ichimoku Kumo sebagai filter tren global. Mengapa Memilih Pakayaku? Analisa Multi-Indikator: Menggabungkan Fibonacci, Ichimoku, dan

Informazioni sul progetto

Budget
40+ USD
Scadenze
a 1 giorno(i)