Job finished
Execution time 47 days
Feedback from employee
Thank You Sir
Specification
Hi there,
I'm using two indicators:
1. Hull
2. ATR2
Hull:
//------------------------------------------------------------------ #property copyright "© mladen, 2019" #property link "mladenfx@gmail.com" //------------------------------------------------------------------ #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_label1 "Hull" #property indicator_type1 DRAW_COLOR_LINE #property indicator_color1 clrGray,clrMediumSeaGreen,clrOrangeRed #property indicator_width1 2 // // // // // input int inpPeriod = 105; // Period input double inpDivisor = 2.0; // Divisor ("speed") input ENUM_APPLIED_PRICE inpPrice = PRICE_CLOSE; // Price double val[],valc[]; //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // int OnInit() { SetIndexBuffer(0,val,INDICATOR_DATA); SetIndexBuffer(1,valc,INDICATOR_COLOR_INDEX); iHull.init(inpPeriod,inpDivisor); IndicatorSetString(INDICATOR_SHORTNAME,"Hull ("+(string)inpPeriod+")"); return (INIT_SUCCEEDED); } void OnDeinit(const int reason) { } //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // // // 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 i= prev_calculated-1; if (i<0) i=0; for (; i<rates_total && !_StopFlag; i++) { val[i] = iHull.calculate(getPrice(inpPrice,open,high,low,close,i),i,rates_total); valc[i] = (i>0) ? (val[i]>val[i-1]) ? 1 : (val[i]<val[i-1]) ? 2 : valc[i-1] : 0; } return(i); } //------------------------------------------------------------------ // Custom function(s) //------------------------------------------------------------------ // //--- // class CHull { private : int m_fullPeriod; int m_halfPeriod; int m_sqrtPeriod; int m_arraySize; double m_weight1; double m_weight2; double m_weight3; struct sHullArrayStruct { double value; double value3; double wsum1; double wsum2; double wsum3; double lsum1; double lsum2; double lsum3; }; sHullArrayStruct m_array[]; public : CHull() : m_fullPeriod(1), m_halfPeriod(1), m_sqrtPeriod(1), m_arraySize(-1) { } ~CHull() { ArrayFree(m_array); } /// /// /// bool init(int period, double divisor) { m_fullPeriod = (int)(period>1 ? period : 1); m_halfPeriod = (int)(m_fullPeriod>1 ? m_fullPeriod/(divisor>1 ? divisor : 1) : 1); m_sqrtPeriod = (int) MathSqrt(m_fullPeriod); m_arraySize = -1; m_weight1 = m_weight2 = m_weight3 = 1; return(true); } // // // double calculate( double value, int i, int bars) { if (m_arraySize<bars) { m_arraySize = ArrayResize(m_array,bars+500); if (m_arraySize<bars) return(0); } // // // m_array[i].value=value; if (i>m_fullPeriod) { m_array[i].wsum1 = m_array[i-1].wsum1+value*m_halfPeriod-m_array[i-1].lsum1; m_array[i].lsum1 = m_array[i-1].lsum1+value-m_array[i-m_halfPeriod].value; m_array[i].wsum2 = m_array[i-1].wsum2+value*m_fullPeriod-m_array[i-1].lsum2; m_array[i].lsum2 = m_array[i-1].lsum2+value-m_array[i-m_fullPeriod].value; } else { m_array[i].wsum1 = m_array[i].wsum2 = m_array[i].lsum1 = m_array[i].lsum2 = m_weight1 = m_weight2 = 0; for(int k=0, w1=m_halfPeriod, w2=m_fullPeriod; w2>0 && i>=k; k++, w1--, w2--) { if (w1>0) { m_array[i].wsum1 += m_array[i-k].value*w1; m_array[i].lsum1 += m_array[i-k].value; m_weight1 += w1; } m_array[i].wsum2 += m_array[i-k].value*w2; m_array[i].lsum2 += m_array[i-k].value; m_weight2 += w2; } } m_array[i].value3=2.0*m_array[i].wsum1/m_weight1-m_array[i].wsum2/m_weight2; // //--- // if (i>m_sqrtPeriod) { m_array[i].wsum3 = m_array[i-1].wsum3+m_array[i].value3*m_sqrtPeriod-m_array[i-1].lsum3; m_array[i].lsum3 = m_array[i-1].lsum3+m_array[i].value3-m_array[i-m_sqrtPeriod].value3; } else { m_array[i].wsum3 = m_array[i].lsum3 = m_weight3 = 0; for(int k=0, w3=m_sqrtPeriod; w3>0 && i>=k; k++, w3--) { m_array[i].wsum3 += m_array[i-k].value3*w3; m_array[i].lsum3 += m_array[i-k].value3; m_weight3 += w3; } } return(m_array[i].wsum3/m_weight3); } }; CHull iHull; // //--- // template <typename T> double getPrice(ENUM_APPLIED_PRICE tprice, T& open[], T& high[], T& low[], T& close[], int i) { switch(tprice) { case PRICE_CLOSE: return(close[i]); case PRICE_OPEN: return(open[i]); case PRICE_HIGH: return(high[i]); case PRICE_LOW: return(low[i]); case PRICE_MEDIAN: return((high[i]+low[i])/2.0); case PRICE_TYPICAL: return((high[i]+low[i]+close[i])/3.0); case PRICE_WEIGHTED: return((high[i]+low[i]+close[i]+close[i])/4.0); } return(0); } //------------------------------------------------------------------
In this indicator the value for "inpPeriod" of each candle should be set to
inpPeriod = (1 / ATR2[0]) * 15000). In case of the "dow jones" 15000 is a good number.
That means: inpPeriod should be calculated new for each candle by this formula. As a consequence inpPeriod will be different for each candle.
The value of ATR2[0] should be generated like in the following code:
// ATR2 double ATR2[]; // array for the indicator ATR2 int ATR2_handle; // handle of the indicator ATR2 // ATR2 ATR2_handle=iATR(_Symbol,_Period,2); if(ATR2_handle < 0) { Print("The creation of ATR2_handle has failed: Runtime error =",GetLastError()); return(-1); } //ATR2 if(CopyBuffer(ATR2_handle,0,0,2,ATR2) <= 0){ Print("CopyBuffer(ATR2_handle,0,0,2,ATR2) <= 0)"); Message[1] = "CopyBuffer(ATR2_handle,0,0,2,ATR2) <= 0)"; return(0); } ArraySetAsSeries(ATR2,true); //Set Value TTAtr_2[TradeType] = ATR2[0];
Responded
1
Rating
Projects
624
38%
Arbitration
39
23%
/
64%
Overdue
93
15%
Free
Published: 4 articles, 19 codes
2
Rating
Projects
124
44%
Arbitration
13
31%
/
46%
Overdue
17
14%
Free
3
Rating
Projects
144
46%
Arbitration
19
42%
/
16%
Overdue
32
22%
Free
Similar orders
✨ Desenvolvedor ✨ especializado em MQL5 e Automação de Negociação Sou desenvolvedor com sólida experiência em MQL5, C++, Python, SQL, HTML e CSS , especializado na criação de: Consultores Especialistas Personalizados (EAs) Indicadores exclusivos Automação e ferramentas de análise para negociação Com anos de experiência no mercado, ofereço desenvolvimento eficiente, confiável e sob medida , garantindo que seu projeto
i need to convert this type of indicator from pinescript (tradingview) to mt5 exactly with same view and settings, the only addon is to set visible price where the zone start and where the zone and near the zone
AkbarSayyed
129+ USD
I am an experienced trader with a five-year track record of successfully navigating the complexities of financial markets. My expertise extends beyond manual execution; I possess specialized skills in developing Expert Advisors (EAs) for automated trading and creating custom technical indicators . This proficiency allows me to analyze market trends and translate them into precise, automated trading strategies
Ninjatrader backeting
30+ USD
I need a code for ninjatrader 8 to backtest a quite simple strategy (I think): Go long if price breaks above previous day's high by .25 points, go short if it breaks below previos day's low. I have historical semi-colon CSV minutes data for ES mini from 1997 to today, data has been tested and runs in Ninjatrader chart without problems. Code should be writen in a way so I can change stoploss and take profit levels in
MT4 indicator to MT5 EA
35+ USD
Good day im looking for someone to convert MT4 indicator to MT5 EA This indicator open several arrows So everytime it open and close the arrow it should execute a trading position after confirmed valid When the buy arrow open and close it should close all sell open trades Its Non Repaint indicator To include the option to change the lot size as well for example when the first arrow trading position occur it should be
I have an existing MT5 EA (MQ5 source file provided) that trades based on horizontal lines placed on the chart. The EA works perfectly on a normal MT5 terminal, but it does not work on MT5 VPS because VPS does not render chart objects. I need a developer to modify the EA with the following requirements: 1. Make the EA fully compatible with MT5 VPS The EA currently depends on visible horizontal lines on the chart to
A scalping robot for trend trading the forex market
30 - 100 USD
I look for a successful scalping guy to coach/help me to success my 2 challenges of prop funded account in scalping with respect of rules of prop firm price is negotiable in accordance or conformity with the results obtained I am in GMT+8 with flexibles hours Please note that the capacity to be successful on scalping with : - no gambling method, - no high frequency trades, - no hedge, - number of lots < 40 lots and
EA Developer for Custom Trading Bots
200 - 250 USD
“I am a developer who creates fast, reliable, and budget-friendly EA trading robots tailored to your strategy. If anyone wants a custom bot made by me, feel free to DM me — I deliver high-quality work with quick turnaround and full support.”
Upgrade of Existing EA,
30 - 100 USD
After losing a lot of money in forex, I decided to look for an Expert Advisor (EA) that is already made. If you have such a working EA, I would be interested in buying it. The price will be determined after testing. Please send me an MT4 or MT5 demo that I can test myself. Thank you for your help and attention
None Repainted Forex Indicator
30 - 100 USD
Requirements: No Repainting: The indicator must provide stable, non-repainting signals. Clear Entry Signals: It must generate a visual signal (arrow or similar) at the close of the bar, not intrabar or many bars later. Backtest Ready: Fully functional in MT5 Strategy Tester for historical testing and optimization. Trial Version: Provide a time-limited, fully functional version (e.g., 7 day trial) for live testing on
Project information
Budget
40+ USD
Deadline
to 3 day(s)