Convert Pinescript Code to MT5 Indicator Source Code

MQL5 Indicators Experts

Job finished

Execution time 3 hours
Feedback from customer
Great dev, delivered fast + good communication
Feedback from employee
Very nice working experience

Specification


Link to External Description: 


Here is the Pinescript code below:

Key Task is to convert from the standard RSI indicator:

HARSI


Steps:

1) Deliver in a quick timeframe - should be straight forward (within 24 - 48 hrs max)

2) May extend to add it in an EA (after the source code is shown). But for now it is just making the indicator the same as the Pinescript version

See the code below:

// This source code is free to use, copy, and alter in any way you choose.
// ...but credit is always nice :)

//@version=4
//@author=JayRogers

study( "HARSI", "HARSI 🐙", false, format.price, 2 )

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// ====== ABOUT THIS INDICATOR                                                //
//                                                                            //
//  - RSI based Heikin Ashi candle oscillator                                 //
//                                                                            //
// ====== ARTICLES and FURTHER READING                                        //
//                                                                            //
//  - https://www.investopedia.com/terms/h/heikinashi.asp                     //
//                                                                            //
//    "Heikin-Ashi is a candlestick pattern technique that aims to reduce     //
//    some of the market noise, creating a chart that highlights trend        //
//    direction better than typical candlestick charts"                       //
//                                                                            //
// ====== REASON FOR STUDY                                                    //
//                                                                            //
//  - Mostly experimental. I wanted to see if I could translate RSI into a    //
//    Heikin Ashi function and retain it's oscillating nature. That goal      //
//    was met more easily than I anticipated with quite delightful results.   //
//                                                                            //
// ====== DISCLAIMER                                                          //
//                                                                            //
//    Any trade decisions you make are entirely your own responsibility.      //
//    I've made an effort to squash all the bugs, but you never know!         //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                           ====== TOOLTIPS ======                           //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

string TT_HARSI = "Period for the RSI calculations used to generate the"        +
                  "candles. This seperate from the RSI plot/histogram length."

string TT_PBIAS = "Smoothing feature for the OPEN of the HARSI candles."        +
                  "\n\nIncreases bias toward the prior open value which can"    +
                  " help provide better visualisation of trend strength."       +
                  "\n\n** By changing the Open values, High and Low can also"   +
                  " be distorted - however Close will remain unchanged."

string TT_SMRSI = "This option smoothes the RSI in a manner similar to HA"      +
                  " open, but uses the realtime rsi rather than the prior"      +
                  " close value."

string TT_STOCH = "Uses the RSI generated by the above settings, and as such"   +
                  " will be affected by the smoothing option."

string TT_STFIT = "Adjusts the vertical scaling of the stochastic, can help"    +
                  " to prevent distortion of other data in the channel."        +
                  "\n\nHas no impact cross conditions."

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                            ====== INPUTS ======                            //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

// -- Candle config

string GROUP_CAND = "Config » HARSI Candles"
i_lenHARSI  = input( 14,            "Length",               input.integer,  group = GROUP_CAND,
                  minval = 1, tooltip = TT_HARSI )
i_smoothing = input( 6,             "Open Smoothing",       input.integer,  group = GROUP_CAND,
                  minval = 1, maxval = 100, tooltip = TT_PBIAS )
string INLINE_COL = "Colour Pallette"
i_colUp     = input( color.teal,    "Colour Pallette  ",    input.color,    group = GROUP_CAND, inline = INLINE_COL )
i_colDown   = input( color.red,     " ",                    input.color,    group = GROUP_CAND, inline = INLINE_COL )
i_colWick   = input( color.gray,    " ",                    input.color,    group = GROUP_CAND, inline = INLINE_COL )

// -- RSI plot config

string GROUP_PLOT = "Config » RSI Plot"
i_source    = input( ohlc4,         "Source",               input.source,   group = GROUP_PLOT )
i_lenRSI    = input( 7,             "Length",               input.integer,  group = GROUP_PLOT,
                  minval = 1 )
i_mode      = input( true,          "Smoothed Mode RSI?",   input.bool,     group = GROUP_PLOT,
                  tooltip = TT_SMRSI )
i_showPlot  = input( true,          "Show RSI Plot?",       input.bool,     group = GROUP_PLOT )
i_showHist  = input( true,          "Show RSI Histogram?",  input.bool,     group = GROUP_PLOT )

// -- Stochastic RSI plots config

string GROUP_STOCH = "Config » Stochastic RSI Plot"
string INLINE_STDS = "Stoch Draw States"
i_showStoch = input( false,         "Show Stochastic? ",    input.bool,     group = GROUP_STOCH, inline = INLINE_STDS,
                  tooltip = TT_STOCH )
i_ribbon    = input( true,          "Ribbon?",              input.bool,     group = GROUP_STOCH, inline = INLINE_STDS )
i_smoothK   = input( 3,             "Smoothing K",          input.integer,  group = GROUP_STOCH,
                  minval = 1 )
i_smoothD   = input( 3,             "Smoothing D",          input.integer,  group = GROUP_STOCH,
                  minval = 1 )
i_stochLen  = input( 14,            "Stochastic Length",    input.integer,  group = GROUP_STOCH,
                  minval = 1 )
i_stochFit  = input( 80,            "Stoch Scaling %",      input.integer,  group = GROUP_STOCH,
                  minval = 1, maxval = 100, tooltip = TT_STFIT )

// -- Channel OB/OS config

string GROUP_CHAN = "Config » OB/OS Boundaries"
i_upper     = input( 20,            "OB",                   input.integer,  group = GROUP_CHAN, inline = "OB",
                  minval = 1, maxval = 50 )
i_upperx    = input( 40,            "OB Extreme",           input.integer,  group = GROUP_CHAN, inline = "OB",
                  minval = 1, maxval = 50 )

i_lower     = input( -20,           "OS",                   input.integer,  group = GROUP_CHAN, inline = "OS",
                  minval = -50, maxval = -1 )
i_lowerx    = input( -40,           "OS Extreme",           input.integer,  group = GROUP_CHAN, inline = "OS",
                  minval = -50, maxval = -1 )

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                          ====== FUNCTIONS ======                           //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

//  zero median rsi helper function, just subtracts 50.
f_zrsi( _source, _length ) => rsi( _source, _length ) - 50

//  zero median stoch helper function, subtracts 50 and includes % scaling
f_zstoch( _source, _length, _smooth, _scale ) =>
    float _zstoch   = stoch( _source, _source, _source, _length) - 50
    float _smoothed = sma( _zstoch, _smooth )
    float _scaled   = ( _smoothed / 100 ) * _scale

//  mode selectable rsi function for standard, or smoothed output
f_rsi( _source, _length, _mode ) =>

    //  get base rsi
    float _zrsi = f_zrsi( _source, _length )

    //  smoothing in a manner similar to HA open, but rather using the realtime
    //  rsi in place of the prior close value.
    var float _smoothed = na
    _smoothed := na( _smoothed[1] ) ? _zrsi : ( _smoothed[1] + _zrsi ) / 2

    //  return the requested mode
    _mode ? _smoothed : _zrsi

//  RSI Heikin-Ashi generation function
f_rsiHeikinAshi( _length ) =>

    //  get close rsi
    float _closeRSI = f_zrsi( close, _length )

    //  emulate "open" simply by taking the previous close rsi value
    float _openRSI  = nz( _closeRSI[1], _closeRSI )

    //  the high and low are tricky, because unlike "high" and "low" by
    //  themselves, the RSI results can overlap each other. So first we just go
    //  ahead and get the raw results for high and low, and then..
    float _highRSI_raw  = f_zrsi( high, _length )
    float _lowRSI_raw   = f_zrsi( low, _length )
    //  ..make sure we use the highest for high, and lowest for low
    float _highRSI  = max( _highRSI_raw, _lowRSI_raw )
    float _lowRSI   = min( _highRSI_raw, _lowRSI_raw )

    //  ha calculation for close
    float _close    = ( _openRSI + _highRSI + _lowRSI + _closeRSI ) / 4

    //  ha calculation for open, standard, and smoothed/lagged
    var float _open = na
    _open  := na( _open[ i_smoothing ] ) ? ( _openRSI + _closeRSI ) / 2 :
              ( ( _open[1] * i_smoothing ) + _close[1] ) / ( i_smoothing + 1 )

    //  ha high and low min-max selections
    float _high     = max( _highRSI, max( _open, _close ) )
    float _low      = min( _lowRSI,  min( _open, _close ) )

    //  return the OHLC values
    [ _open, _high, _low, _close ]

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                   ====== SERIES, LINES and LABELS ======                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

//  standard, or ha smoothed rsi for the line plot and/or histogram
float RSI = f_rsi( i_source, i_lenRSI, i_mode )

//  stoch stuff
float StochK = f_zstoch( RSI, i_stochLen, i_smoothK, i_stochFit )
float StochD = sma( StochK, i_smoothD )

//  get OHLC values to use in the plotcandle()
[ O, H, L, C ] = f_rsiHeikinAshi( i_lenHARSI )

//  candle body colouring
color bodyColour    = C > O ? i_colUp : i_colDown
color wickColour    = i_colWick

//  shadow, invisible
color colShadow     = color.rgb( 0, 0, 0, 20 )
color colNone       = color.rgb( 0, 0, 0, 100 )

//  rsi color
color colRSI        = color.rgb( 250, 200, 50, 0 )

//  stoch ribbon fill
color colStochK     = color.new( #0094FF, 0 )
color colStochD     = color.new( #FF6A00, 0 )
color colStochFill  = StochK >= StochD ? color.new( colStochK, 50 ) : color.new( colStochD, 50 )

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                     ====== DRAWING and PLOTTING ======                     //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

//  zero median RSI channel hlines
upperx  = hline( i_upperx,  "OB Extreme",   color.new( color.silver, 60 ) )
upper   = hline( i_upper,   "OB",           color.new( color.silver, 80 ) )
median  = hline( 0,         "Median",       color.orange, hline.style_dotted )
lower   = hline( i_lower,   "OS",           color.new( color.silver, 80 ) )
lowerx  = hline( i_lowerx,  "OS Extreme",   color.new( color.silver, 60 ) )

//  channel fill
fill( upper, upperx, color.new( color.red, 90 ),    title = "Background Fill OB" )
fill( upper, lower,  color.new( color.blue, 90 ),   title = "Background Channel" )
fill( lower, lowerx, color.new( color.green, 90 ),  title = "Background Fill OS" )


//  make our HA rsi candles
plotcandle( O, H, L, C, "HARSI", bodyColour, wickColour, bordercolor = bodyColour )

//  RSI overlay plot
plot( i_showPlot ? RSI : na,                    "RSI Shadow",       colShadow,  3 )
plot_rsi    = plot( i_showPlot ? RSI : na,      "RSI Overlay",      colRSI,     1 )

buy = C < O and O > 18 and RSI > i_upper and falling(RSI,1)
sell = C > O and O < -18 and RSI < i_lower and rising(RSI,1)

buy1 = C > O and C < -7 and rising(RSI,2)
sell2 = C < O and C > 7 and falling(RSI,2)


plotshape(sell, style=shape.circle, size=size.tiny, color=color.lime, location =location.bottom)
plotshape(buy, style=shape.circle, size=size.tiny, color=color.red, location =location.top)

plotshape(buy1, style=shape.circle, size=size.tiny, color=color.orange, location =location.bottom)
plotshape(sell2, style=shape.circle, size=size.tiny, color=color.orange, location =location.top)


alertcondition(sell, "Buy")
alertcondition(buy, "Sell")

alertcondition(buy1, "Close Short")
alertcondition(sell2, "Close Long")



// -- PEANUT






 




Responded

1
Developer 1
Rating
(19)
Projects
22
23%
Arbitration
3
67% / 33%
Overdue
2
9%
Working
2
Developer 2
Rating
(316)
Projects
480
66%
Arbitration
5
40% / 0%
Overdue
4
1%
Free
Published: 8 codes
3
Developer 3
Rating
(255)
Projects
576
36%
Arbitration
64
20% / 58%
Overdue
147
26%
Free
Published: 1 article, 22 codes
4
Developer 4
Rating
(151)
Projects
162
69%
Arbitration
0
Overdue
0
Free
5
Developer 5
Rating
(132)
Projects
178
39%
Arbitration
4
25% / 50%
Overdue
14
8%
Free
6
Developer 6
Rating
(54)
Projects
102
23%
Arbitration
12
25% / 17%
Overdue
13
13%
Free
7
Developer 7
Rating
(564)
Projects
933
47%
Arbitration
302
59% / 25%
Overdue
125
13%
Working
Similar orders
📜 HostGhost EA Final Job Invite – For MQL5.com 📋 Project Title: Finalize & Polish HostGhost Dynamic Trader EA (80% Completed) 🌟 Project Description: Hello Developers, I am seeking an experienced and detail-oriented MQL5 programmer to finalize and polish a nearly completed EA called HostGhost . 80% of the EA's architecture is already built — structured, modular, well-commented, and elegantly laid out. Your role
Especificación del robot comercial para cuentas de financiación Objetivo del proyecto: Desarrolle un bot comercial (EA) para cuentas financiadas que permita una total flexibilidad y control sobre los parámetros comerciales clave. Requisitos: 1. Configuración de gestión de riesgos (modificable): Límite máximo de ganancias diarias (en porcentajes). Límite máximo de pérdida diaria (en porcentajes). Número máximo de
Hi guys My grid EA has some bugs and I would like to figure out, what lead into my losses. I made a document with all the bugs I have found. It must be something with Global Variables and mathematical levels it ignores. The logic behind is very complex and the EA has approx. 4500 lines of code. Requirements: - Math understanding - Understands mql5 and clean coding What does the EA: - It continuously monitors the
My Idea of profit making robot, It places the order using trend filter, whether the trend is uptrend/download it should detect opposite rejection candles(Order Block) and take orders and close that order FVG start point using trailing stop loss logic. And also it should take reverse recovery trade when it goes in loss after given threshold by user input. The order will be closed by trailing stop loss logic. When
Objective: Develop a MetaTrader 5 (MT5) Expert Advisor (EA) that specializes in scalping XAUUSD with the goal of achieving very high monthly returns (50–70%) under strict risk control parameters . Scope and Goals Trading Instrument: XAUUSD only. Strategy Type: Scalping (high-frequency short trades). Target Monthly Return: 50% to 70% (under optimal conditions). Risk Management: Max allowable drawdown: 15% or less
Codex Shield Expert Advisor V1 Objective: Create a MetaTrader 5 (MT5) Expert Advisor (EA) that acts as a protective shield for manually placed trades. The EA will manage open trades based on strict price movement rules, ensuring minimal losses and precise re-entries. Core Logic Overview 1. Manual Trade Anchoring Bot only activates after a manual trade is opened. Uses the original manual entry price as the anchor
I need a pre-build MT4/ MT5 bot with following requirements- 1. Bot works good on 5 or 15 Min chart on any currency or crypto pair. 2. Gives Approx Min 70% Win Rate and Max 5% DD. 3. Gives Approx 50-80% profit monthly. Immediate payment when satisfied with results. Amount can be increased up to $1K
Mashii EA 50 - 100 USD
I need a mt5 trading bot that works off support and resistant fully automated trailing stop loss also have to work off market trend and patter and can grow small account
i need an expert to converting trading view script called Renko chart into meta trader5 EA automated robot, i need an expert that can get it done in 5 days here is the link to the code /
This Expert Advisor (EA) is designed to operate on the XAUUSDm symbol (Gold micro), using the 1-minute timeframe as the main chart and the 5-minute timeframe as the higher timeframe. It is built to follow the logic of the “Supertrend MTF Heikin Ashi Auto” indicator from TradingView, exactly as shown in the reference screenshot. The EA must fully comply with all detection, validation, and execution conditions

Project information

Budget
30+ USD
For the developer
27 USD
Deadline
to 1 day(s)