Fix Icustom Indicator Code

Trabajo finalizado

Plazo de ejecución 1 hora
Comentario del Ejecutor
Best Wishes...
Comentario del Cliente
Excellent job! well done and executed ...very fast and same day delivery...infact 1 hour delivery...even help with installation...will use you again...thank you

Tarea técnica

Hello I need you to fix this indicators code to display the arrows according to the main indicator. I have atachhed the icustom code and the main indicaction in mql4 file.

The first indictor is StockRSI...I created the icustom code but its not working see the icustom code below:

//+------------------------------------------------------------------+
//|                                              Indicator: Fixa.mq4 |
//|                                       Created with EABuilder.com |
//|                                        https://www.eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link      "https://www.eabuilder.com"
#property version   "1.00"
#property description ""
#property tester_indicator "Stoch RSI"

#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 2

#property indicator_type1 DRAW_ARROW
#property indicator_width1 1
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"

#property indicator_type2 DRAW_ARROW
#property indicator_width2 1
#property indicator_color2 0x0000FF
#property indicator_label2 "Sell"

//--- indicator buffers
double Buffer1[];
double Buffer2[];

extern int InpStockKPeriod = 3;
extern int InpStockDPeriod = 3;
extern int InpRSIPeriod = 14;
extern int InpStochastikPeriod = 14;
double myPoint; //initialized in OnInit

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | Fixa @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "order")
     {
     }
   else if(type == "modify")
     {
     }
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {   
   IndicatorBuffers(2);
   SetIndexBuffer(0, Buffer1);
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexArrow(0, 241);
   SetIndexBuffer(1, Buffer2);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexArrow(1, 242);
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 3)
     {
      myPoint *= 10;
     }
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
   int limit = rates_total - prev_calculated;
   //--- counting from 0 to rates_total
   ArraySetAsSeries(Buffer1, true);
   ArraySetAsSeries(Buffer2, true);
   //--- initial zero
   if(prev_calculated < 1)
     {
      ArrayInitialize(Buffer1, EMPTY_VALUE);
      ArrayInitialize(Buffer2, EMPTY_VALUE);
     }
   else
      limit++;
   
   //--- main loop
   for(int i = limit-1; i >= 0; i--)
     {
      if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation   
      
      //Indicator Buffer 1
      if(iCustom(NULL, PERIOD_CURRENT, "Stoch RSI", InpStockKPeriod, InpStockDPeriod, InpRSIPeriod, InpStochastikPeriod, PRICE_CLOSE, 0, i) > iCustom(NULL, PERIOD_CURRENT, "Stoch RSI", InpStockKPeriod, InpStockDPeriod, InpRSIPeriod, InpStochastikPeriod, PRICE_CLOSE, 1, i) //Stoch RSI > Stoch RSI
      )
        {
         Buffer1[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer1[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 2
      if(iCustom(NULL, PERIOD_CURRENT, "Stoch RSI", InpStockKPeriod, InpStockDPeriod, InpRSIPeriod, InpStochastikPeriod, PRICE_CLOSE, 0, i) < iCustom(NULL, PERIOD_CURRENT, "Stoch RSI", InpStockKPeriod, InpStockDPeriod, InpRSIPeriod, InpStochastikPeriod, PRICE_CLOSE, 1, i) //Stoch RSI < Stoch RSI
      )
        {
         Buffer2[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer2[i] = EMPTY_VALUE;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

The second iindictor is fractal-adaptive-moving-average...I created the icustom code but its not working see the icustom code below:

//+------------------------------------------------------------------+
//|                                              Indicator: Fixa2.mq4 |
//|                                       Created with EABuilder.com |
//|                                        https://www.eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link      "https://www.eabuilder.com"
#property version   "1.00"
#property description ""
#property tester_indicator "fractal-adaptive-moving-average"

#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 2

#property indicator_type1 DRAW_ARROW
#property indicator_width1 1
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"

#property indicator_type2 DRAW_ARROW
#property indicator_width2 1
#property indicator_color2 0x0000FF
#property indicator_label2 "Sell"

//--- indicator buffers
double Buffer1[];
double Buffer2[];

extern int RPeriod = 16;
extern double multiplier = 4.6;
extern double signal_multiplier = 2.5;
double myPoint; //initialized in OnInit

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | Fixa @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "order")
     {
     }
   else if(type == "modify")
     {
     }
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {   
   IndicatorBuffers(2);
   SetIndexBuffer(0, Buffer1);
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexArrow(0, 241);
   SetIndexBuffer(1, Buffer2);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexArrow(1, 242);
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 3)
     {
      myPoint *= 10;
     }
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
   int limit = rates_total - prev_calculated;
   //--- counting from 0 to rates_total
   ArraySetAsSeries(Buffer1, true);
   ArraySetAsSeries(Buffer2, true);
   //--- initial zero
   if(prev_calculated < 1)
     {
      ArrayInitialize(Buffer1, EMPTY_VALUE);
      ArrayInitialize(Buffer2, EMPTY_VALUE);
     }
   else
      limit++;
   
   //--- main loop
   for(int i = limit-1; i >= 0; i--)
     {
      if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation   
      
      //Indicator Buffer 1
      if(iCustom(NULL, PERIOD_CURRENT, "fractal-adaptive-moving-average", RPeriod, multiplier, signal_multiplier, 0, i) > iCustom(NULL, PERIOD_CURRENT, "fractal-adaptive-moving-average", RPeriod, multiplier, signal_multiplier, 1, i) //fractal-adaptive-moving-average > fractal-adaptive-moving-average
      )
        {
         Buffer1[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer1[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 2
      if(iCustom(NULL, PERIOD_CURRENT, "fractal-adaptive-moving-average", RPeriod, multiplier, signal_multiplier, 0, i) < iCustom(NULL, PERIOD_CURRENT, "fractal-adaptive-moving-average", RPeriod, multiplier, signal_multiplier, 1, i) //fractal-adaptive-moving-average < fractal-adaptive-moving-average
      )
        {
         Buffer2[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer2[i] = EMPTY_VALUE;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

The last indictor is Fractal_Bands...I created the icustom code but its not working see the icustom code below:

//+------------------------------------------------------------------+
//|                                              Indicator: Fixa.mq4 |
//|                                       Created with EABuilder.com |
//|                                        https://www.eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link      "https://www.eabuilder.com"
#property version   "1.00"
#property description ""
#property tester_indicator "fractal-bands"

#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 2

#property indicator_type1 DRAW_ARROW
#property indicator_width1 1
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"

#property indicator_type2 DRAW_ARROW
#property indicator_width2 1
#property indicator_color2 0x0000FF
#property indicator_label2 "Sell"

//--- indicator buffers
double Buffer1[];
double Buffer2[];

extern int e_period = 30;
extern int normal_speed = 30;
extern double alpha = 2.0;
double myPoint; //initialized in OnInit

void myAlert(string type, string message)
  {
   if(type == "print")
      Print(message);
   else if(type == "error")
     {
      Print(type+" | Fixa @ "+Symbol()+","+IntegerToString(Period())+" | "+message);
     }
   else if(type == "order")
     {
     }
   else if(type == "modify")
     {
     }
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {   
   IndicatorBuffers(2);
   SetIndexBuffer(0, Buffer1);
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexArrow(0, 241);
   SetIndexBuffer(1, Buffer2);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexArrow(1, 242);
   //initialize myPoint
   myPoint = Point();
   if(Digits() == 5 || Digits() == 3)
     {
      myPoint *= 10;
     }
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
   int limit = rates_total - prev_calculated;
   //--- counting from 0 to rates_total
   ArraySetAsSeries(Buffer1, true);
   ArraySetAsSeries(Buffer2, true);
   //--- initial zero
   if(prev_calculated < 1)
     {
      ArrayInitialize(Buffer1, EMPTY_VALUE);
      ArrayInitialize(Buffer2, EMPTY_VALUE);
     }
   else
      limit++;
   
   //--- main loop
   for(int i = limit-1; i >= 0; i--)
     {
      if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation   
      
      //Indicator Buffer 1
      if(Close[i] > iCustom(NULL, PERIOD_CURRENT, "fractal-bands", e_period, normal_speed, alpha, 0, PRICE_CLOSE, 0, i) //Candlestick Close > fractal-bands
      )
        {
         Buffer1[i] = Low[i]; //Set indicator value at Candlestick Low
        }
      else
        {
         Buffer1[i] = EMPTY_VALUE;
        }
      //Indicator Buffer 2
      if(Close[i] < iCustom(NULL, PERIOD_CURRENT, "fractal-bands", e_period, normal_speed, alpha, 0, PRICE_CLOSE, 0, i) //Candlestick Close < fractal-bands
      )
        {
         Buffer2[i] = High[i]; //Set indicator value at Candlestick High
        }
      else
        {
         Buffer2[i] = EMPTY_VALUE;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

see below all indicators mql4 files.

Please let me know if this something you can do. you can even go ahead do it, send me screen short or ex4 file to check. if everything is okay, then we can conclude fast.


Han respondido

1
Desarrollador 1
Evaluación
(374)
Proyectos
398
31%
Arbitraje
62
19% / 68%
Caducado
50
13%
Trabajando
2
Desarrollador 2
Evaluación
(341)
Proyectos
536
32%
Arbitraje
24
63% / 8%
Caducado
15
3%
Trabaja
3
Desarrollador 3
Evaluación
(26)
Proyectos
29
45%
Arbitraje
0
Caducado
1
3%
Libre
4
Desarrollador 4
Evaluación
(52)
Proyectos
96
24%
Arbitraje
9
22% / 22%
Caducado
12
13%
Trabaja
5
Desarrollador 5
Evaluación
(66)
Proyectos
143
34%
Arbitraje
11
9% / 55%
Caducado
26
18%
Trabaja
6
Desarrollador 6
Evaluación
(68)
Proyectos
81
11%
Arbitraje
12
67% / 25%
Caducado
5
6%
Libre
7
Desarrollador 7
Evaluación
(41)
Proyectos
46
28%
Arbitraje
9
0% / 100%
Caducado
7
15%
Libre
Solicitudes similares
I have a Fibonacci strategy based on break of a high/low and retest of of the 23.6 area of the Fibonacci, this EA will work across all timeframe, the EA will work on synthetic indices by deriv or on forex pairs with low spread like eur/usd, the EA will also have built in calculation for lot sizes based on risk parameters given
Smart Bot 30 USD
A bot that uses Smart Money Concepts in order to provide the best entry and exit strategies for the trader. It also recommends lot sizes paying attention to the amount in the accouny
I am writing to request the assistance of an expert who can develop a sophisticated trading system based on trend indicators. Specifically, I am looking for a solution that incorporates the following functionalities: 1. **Trend Indicator-Based System**: The expert should design a system that utilizes trend indicators to assess market conditions and direction. 2. **Pending Orders (Sell Stop and Buy Stop)**: The system
Convert a MT4 indicator with MQL4 file to a working MT5 indicator. I want to use MT5 charting for stocks. With MT4, there is limited number of stocks. I found a MT5 broker that offers large number of stocks. But my mt4 indicator does not work in MT5 software. I have the MQL4 file for this MT4 indicator. The file is attached below. Please compare the converted MT5 with MT4 version to ensure they both work exactly the
So i would manually identify which pair(s) i believe will have a good solid net buy or sell day upon the close of previous days daily Candle which is at 10pm British Time. And then rather than sitting in front of the screen all day waiting for my entry trigger i would attach the EA to that or those pairs only and wait for them to enter the trade(s) if certain criteria are met. These criteria are displayed in the
So i would manually identify which pair(s) i believe will have a good solid net buy or sell day upon the close of previous days daily Candle which is at 10pm British Time. And then rather than sitting in front of the screen all day waiting for my entry trigger i would attach the EA to that or those pairs only and wait for them to enter the trade(s) if certain criteria are met. These criteria are displayed in the
Hello, I want an experience programmer who knows how to make a simple UI/UX for this EA for an MT5 platform. The logic of this is EA is simple, with hedging system and continuing trend ordering system or cascade ordering. I also included in this EA the market reversal points, when the active orders reached this point and the market reverses the current order closes and will execute a new order (further discuss in in
I have indicator in my tradingview when it shows symbol of buy or sell i want that time excute order from signal to my fundednext account please tell how. It is possible
Hello greetings.how are you doing? I have an existing custom tradingview indicator I would like to convert to mt5 Indicator . The source code is available with me . Kindly bid for this project if it is what you can do for me
Greetings. I will buy your EA for MT5, in case that on distance it is able to make a profit of 10% per month. Martingale methods and grid strategies should not be used as the basis of a trading strategy. I will need to test in the strategy tester and on live market (on demo account for at least two weeks), so I ask you to provide an executable demo file of the EA with necessary restrictions. The EA should not use

Información sobre el proyecto

Presupuesto
30+ USD
Para el ejecutor
27 USD