EA with nested Indicators

MQL5 指标 专家

工作已完成

执行时间19 小时
客户反馈
I was really happy with the result I got from Nguyen Nga. He is highly recommended 10/10 points to him!
员工反馈
Nice customer, Thank you.

指定

MetaTrader 5, Version: 5.00 build 1375, 15 Jul 2016

Hello, I have one Expert Advisor (EA) which loads 2 indicators. Indicator 1 is a moving average (IND_MA / top indicator) and Indicator 2 is a custom indicator (IND_CUSTOM / bottom indicator) which reads the information from the moving average indicator on every tick and output the values of IND_MA rounded to the third digit after the floating point, producing what you can see on the following image:

The EA needs the IND_CUSTOM for it's own functionality. So that's a requirement for it. It outputs the following on the Toolbox / Experts window:


My problem is that the EA works OK on the terminal but on the Strategy Tester (ST) the IND_CUSTOM doesn't get any value. as you can see on the following image:

I need the IND_CUSTOM gets the values on the ST, so I can do backtesting.

Below you have the code of the IND_CUSTOM and the EA. Please, try it on the terminal first to see how it works, then try it on the ST.

// File: ProblemIndicator.mq5

#property indicator_separate_window
#property indicator_buffers                             1
#property indicator_plots                               1
#property indicator_type1                               DRAW_LINE
#property indicator_color1                              clrBlue
#property indicator_style1                              STYLE_SOLID
#property indicator_width1                              1

input int handle_base;                                  // Handle of the base indicator
input int handle_base_buffer;                   // Buffer index of the base indicator

double buffer[];
double data_base[];

int OnInit() {

        be_aware_of_indicators_available();     // needed here at the beginning

        if (!is_valid_indicator_handle(handle_base)) {
                printf("The handle of the base indicator: %d, is invalid", handle_base);
                return -1;
        }

        ArraySetAsSeries(buffer, true);
        ArraySetAsSeries(data_base, true);

        IndicatorSetInteger(INDICATOR_DIGITS, _Digits + 1);

        PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, 0);
        SetIndexBuffer(0, buffer, INDICATOR_DATA);

        return 0;
}

int OnCalculate(const int rates_total,          // number of bars in history at the current tick
                                const int prev_calculated,      // number of bars calculated at previous call
                                const int begin, const double &price[]
        ) {
        int count = rates_total - prev_calculated;
        CopyBuffer(handle_base, handle_base_buffer, 0, count, data_base);

        for (int i = count - 1; i >= 0; i--)
                buffer[i] = MathRoundDecimals(data_base[i], 3);

        return rates_total;
}

void get_chart_indicators_handle(int &handles[]) {
        ArrayResize(handles, 0);
        int total = (int) ChartGetInteger(0, CHART_WINDOWS_TOTAL);
        for (int w = 0; w < total; w++) {
                for (int i = 0; i < ChartIndicatorsTotal(0, w); i++) {
                        string name = ChartIndicatorName(0, w, i);
                        ArrayResize(handles, ArraySize(handles) + 1);
                        handles[ArraySize(handles) - 1] = ChartIndicatorGet(0, w, name);
                }
        }
}

void be_aware_of_indicators_available() {
        int handles[];
        get_chart_indicators_handle(handles);
}

bool is_valid_indicator_handle(int handle) {
        ENUM_INDICATOR type;
        MqlParam parameters[];
        int result = IndicatorParameters(handle, type, parameters);
        if (MQL_TESTER && GetLastError() == ERR_FUNCTION_NOT_ALLOWED) // on ST "IndicatorParameters" is not allowed
                return true;
        else
                return (result != -1);
}

double MathRoundDecimals(double num, int decimals) {
        return MathRound(num * MathPow(10, decimals)) / MathPow(10, decimals);
}
// File: ProblemEA.mq5

int handle_1, handle_2;

int OnInit() {

        ChartSetInteger(0, CHART_SCALE, 3);
        ChartSetInteger(0, CHART_MODE, CHART_CANDLES);

        int i = 0;

        MqlParam params_1[4];
        params_1[0].type = TYPE_INT;
        params_1[0].integer_value = 20;
        params_1[1].type = TYPE_INT;
        params_1[1].integer_value = 0;
        params_1[2].type = TYPE_INT;
        params_1[2].integer_value = MODE_SMA;
        params_1[3].type = TYPE_INT;
        params_1[3].integer_value = PRICE_CLOSE;
        handle_1 = IndicatorCreate(_Symbol, PERIOD_CURRENT, IND_MA, ArraySize(params_1), params_1);
        ChartIndicatorAdd(0, i, handle_1);

        MqlParam params_2[3];
        params_2[0].type = TYPE_STRING;
        params_2[0].string_value = "ProblemIndicator";
        params_2[1].type = TYPE_INT;
        params_2[1].integer_value = handle_1;
        params_2[2].type = TYPE_INT;
        params_2[2].integer_value = 0; // buffer index to use
        handle_2 = IndicatorCreate(_Symbol, PERIOD_CURRENT, IND_CUSTOM, ArraySize(params_2), params_2);
        ChartIndicatorAdd(0, ++i, handle_2);

        return (INIT_SUCCEEDED);
}

void OnTick() {
        double last_1 = get_last_indicator_value(handle_1);
        double last_2 = get_last_indicator_value(handle_2);
        printf("values: %f %f", last_1, last_2);
}

double get_last_indicator_value(int handle) { // just first buffer
        double values[1];
        int result = CopyBuffer(handle, 0, TimeCurrent(), 1, values);
        return values[0];
}

Any question, please let me know.

Regards, Cyberglassed.


反馈

1
开发者 1
等级
(253)
项目
358
49%
仲裁
24
25% / 50%
逾期
80
22%
空闲
2
开发者 2
等级
(28)
项目
36
17%
仲裁
5
20% / 40%
逾期
17
47%
空闲
发布者: 5 代码
3
开发者 3
等级
(1)
项目
1
0%
仲裁
1
0% / 100%
逾期
0
空闲
相似订单
I need a professional MT5 Expert Advisor (fully automated trading robot) for scalping on M1 timeframe. 1. General Requirements Platform: MetaTrader 5 Type: Fully automated EA (no manual confirmation) Timeframe: M1 only Symbols: XAUUSD, BTCUSD, USDCAD Must support running on multiple charts simultaneously Clean, optimized, and low-latency execution logic 2. Strategy Logic (Scalping Model) The EA should use: Trend +
Hello, I'll be willing to pay upto 1000$ depending on the quality of the final product. This job includes bringing a strategy as well as coding it (or something ready made) I’m looking for a reliable indicator that places buy/sell signals directly on the chart. The key requirement is that signals must appear only after candle close and must not repaint under any condition. From an accurcy perspective we can discuss
I would like to create a robot with the smart money concepts, that integrates order block,FVG,supply & demand ,read the market structure,liquidity and also trade with the session and also after a liquidity sweep a market structure is needed to verify the reversal and a retracement to the order block and sometimes fair value Gap
Minor Update in EA 30 - 50 USD
I Have an EA, which reads the files from common folder and takes trades. Kindly note: My coder is from Iran and I am unable to reach him for the last few days and that’s why I am looking for someone who can help me out. 1. File handling issue when invalid lot size WWhen EA couldn’t take trades due to invalid lot size, it prints logs continuously. You just need to print the log once and send the file to the
Se requiere de un programador para modificar asesor experto de estrategia de ruptura. El EA realiza operaciones por quiebre de rango pero por operaciones de Orden de Mercado ( Ejecuta una operación de compra o venta inmediatamente al precio actual del mercado) y requiero cambiarlo a que realice operaciones de Orden P extremos. Adicional, requiere que se realice un filtro para entrar de nuevo al mercado en caso de
Here is the clean final summary of your Confluence Alignment Indicator: 📊 Confluence Alignment Indicator – Final Logic 🔒 Mandatory Filters (Must Be True) These do NOT count toward score. They only allow scoring to activate. 1️⃣ Bid Ratio – Must confirm direction. 2️⃣ CSI – Must NOT be strongly against the trade. Does not need to support. Only blocks if strongly opposite. If either fails → No signal, score ignored
Hi there,my name si Andrea,i need help with building an indicator to save time while analyse the chart to support me according to my strategy.I would like to build some friendship and a good relationship to grow together.Im willing to share all my knowledge about trading in exchange for your work.There you have many opportunities to start a business such as trading itself or selling the indicator or whatever to a
Ai robot 30 - 50 USD
1️⃣ System Architecture An AI robot typically consists of the following subsystems: 🔹 1. Perception Layer Collects environmental data using: RGB / Depth cameras LiDAR Ultrasonic sensors IMUs (Inertial Measurement Units) Microphones Data is processed using: Computer Vision (e.g., object detection, SLAM) Signal processing Sensor fusion algorithms 🔹 2. Cognition / Intelligence Layer Implements AI models such as
Looking for a programmer that can code for sierra chart. I just need a simple indicator that draws a rectangle box as key levels for me. This will involve volume profile and delta profile. You must have knowledge of sierra chart and have coded for sierra chart before. Thanks
What informtion would you need for Ninjatrader futures automated trading and how long would it take ? if anyone can give me answer i will be happy to discuss more about the project thanks fill free to bid to the project thanks

项目信息

预算
15 - 100 USD
截止日期
 1  5 天