Convert Pinescript Code to MT5 Indicator Source Code

Работа завершена

Время выполнения 3 часа
Отзыв от заказчика
Great dev, delivered fast + good communication
Отзыв от исполнителя
Very nice working experience

Техническое задание


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






 




Откликнулись

1
Разработчик 1
Оценка
(19)
Проекты
22
23%
Арбитраж
5
40% / 60%
Просрочено
2
9%
Работает
2
Разработчик 2
Оценка
(322)
Проекты
499
67%
Арбитраж
5
40% / 0%
Просрочено
4
1%
Свободен
Опубликовал: 8 примеров
3
Разработчик 3
Оценка
(266)
Проекты
598
35%
Арбитраж
64
20% / 58%
Просрочено
147
25%
Свободен
Опубликовал: 1 статью, 22 примера
4
Разработчик 4
Оценка
(209)
Проекты
220
75%
Арбитраж
0
Просрочено
0
Свободен
5
Разработчик 5
Оценка
(132)
Проекты
178
39%
Арбитраж
4
25% / 50%
Просрочено
14
8%
Свободен
6
Разработчик 6
Оценка
(54)
Проекты
102
23%
Арбитраж
12
25% / 17%
Просрочено
13
13%
Свободен
7
Разработчик 7
Оценка
(574)
Проекты
945
47%
Арбитраж
309
58% / 27%
Просрочено
125
13%
Свободен
Похожие заказы
I trade ES futures on the Ninja trader platform. I recently came across an indicator and wanted to check with you if you can build a similar indicator that works on Orenko or Ninja renko charts, and also combines support and resistance untouched. Below is the indicator, which will tell you market chop and to avoid. I want to include a support and resistance bar on the chart when there is no chop please let me know
Project Description: I have a fully working Pine Script for TradingView called MFHA 3-Step Market Structure Strategy V2 . I need it converted into MT5 , with the logic kept as close to the Pine version as possible. What I need: MT5 Indicator Exact oscillator logic Multi-timeframe logic using 4H, 15M, and 1M EMA filter MTF EMA dashboard RSI display Buy and sell visual signals Background state/flash behavior where
I am looking for an experienced MQL5 developer to continue optimization work on an existing Expert Advisor (MQ5 source file available, 2.5MB). Important: This is NOT a project to build a new EA. The task is strictly to refine and improve the current system while keeping the core strategy intact. The EA is already functional and stable. A full code audit and baseline backtesting have already been done, and key
📌 EXPERT ADVISOR (EA) DEVELOPMENT COMPLETE A–Z FINAL REQUIREMENT DOCUMENT (FINAL VERSION) 1. 🔐 SECURITY SYSTEM (MANDATORY) The EA must include strict security checks. If any security condition fails, EA must immediately STOP trading. 1.1 Account Lock #define ALLOWED_ACCOUNT 5047656761 EA must run ONLY on this account number If account does not match: ❌ EA stops trading 🚨 Alert message 📲 Telegram notification to
Hello, and please read everything !!! I am looking for a developer who can recreate a strategy similar to an EA I already have. The EA works well on demo, especially during specific volatility windows (for example DE40 between 09:00 and 10:00 Frankfurt time), but on real accounts it produces constant losses even with IC Markets Raw and VPS close to the broker. 🎯 Objective The goal is to recreate and adapt this
As the title suggests, I need an EA whose algorithm earns commission without incurring excessive losses from the trading volume at the broker....Like Exness/Vantage, or do you have any other ideas
I need for an EA for XAUUSD using a grid + Martingle + hedging strategy developer Main features: • Open Buy & Sell at start (hedging) • Grid system with adjustable step (price-based levels) • Lot multiplier (martingale-style) • Fixed TP per trade + basket TP (close all in profit) • Continuous re-entry after TP • Risk management (max trades, max lot, equity stop) EA should be stable, error-free, and work with
Darwish 50 - 100 USD
I want a bot that runs on any timeframe, but for now, I’ll set it on 1 minute. It should watch for buy and sell signals. Each time it opens a trade, as soon as it makes a small profit like 1, 2, or 3 dollars it closes, then checks for the next signal. If it sees a buy, it buys; if it sees a sell, it sells—just repeating the cycle, over and over, until I stop it
📢 Project Title:MT5 Expert Advisor (EA) – Advanced Renko Strategy (Full Automation) 📄 Project Description:I want to develop a fully automated MT5 Expert Advisor (EA) based on my existing TradingView Renko strategy.I already have a working Pine Script that generates Buy/Sell alerts with ATR and other logic. Now I need the same strategy to be fully converted into MT5 EA with built-in Renko logic (no external
Need trading robot 30 - 100 USD
I need a trading robot specifically for gold (XAUUSD) that follows a high-probability scalping and intraday strategy based on 15-minute candle confirmations. The bot should identify key support and resistance zones, detect breakouts, fake breakouts, and pullbacks before entering trades. It must include entry conditions based on candle patterns such as engulfing and rejection wicks, and optionally fair value gaps

Информация о проекте

Бюджет
30+ USD
Сроки выполнения
до 1 дн.