Looking for an Expert to convert TTS EMA STC strategy to MT5

MQL5 Experts Converting

Job finished

Execution time 4 days

Specification

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Hiubris_Indicators

//@version=5
strategy(title = "TTS EMA STC Strategy", overlay = true, default_qty_value = 100, initial_capital=100000,default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true)

// TTS
Length     = input.int(21, minval=1, group=' Trend Trader')
Multiplier = input.float(3, minval=0.000001, group=' Trend Trader')

tts(Length, Multiplier) =>
    avgTR = ta.wma(ta.atr(1), Length)
    highestC = ta.highest(Length)
    lowestC = ta.lowest(Length)
    hiLimit = highestC[1] - avgTR[1] * Multiplier
    loLimit = lowestC[1] + avgTR[1] * Multiplier
    ret = 0.0
    poz = 0.0
    iff_1 = close < loLimit and close < hiLimit ? loLimit : nz(ret[1], close)
    ret := close > hiLimit and close > loLimit ? hiLimit : iff_1
    iff_2 = close < ret ? -1 : nz(poz[1], 0)
    poz := close > ret ? 1 : iff_2
    ret
    
TTS = tts(Length, Multiplier)
//barcolor(poz == -1 ? color.red : poz == 1 ? color.green : color.blue)
plot(TTS, color=color.new(color.blue, 0), title='Trend Trader Line')



// MA
ribbon_grp = "MA"
ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) : 
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) : 
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na
    
ma1_type   = input.string("EMA"  , "MA"     , inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group=ribbon_grp)
ma1_source = input.source(close  , ""     , inline="MA #1", group=ribbon_grp)
ma1_length = input.int   (200    , ""     , inline="MA #1", minval=1, group=ribbon_grp)
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(ma1, color = color.white, title="MA")


// STC
EEEEEE  = input(12, 'Length', group='STC')
BBBB    = input(26, 'FastLength', group='STC')
BBBBB   = input(50, 'SlowLength', group='STC')
max_stc_change = input(7, title="Max STC Slope Change")
min_stc_bars = input(2, title='Min STC Squeeze')

AAAA(BBB, BBBB, BBBBB) =>
    fastMA = ta.ema(BBB, BBBB)
    slowMA = ta.ema(BBB, BBBBB)
    AAAA = fastMA - slowMA
    AAAA

AAAAA(EEEEEE, BBBB, BBBBB) =>
    AAA = input(0.5)
    var CCCCC = 0.0
    var DDD = 0.0
    var DDDDDD = 0.0
    var EEEEE = 0.0
    BBBBBB = AAAA(close, BBBB, BBBBB)
    CCC = ta.lowest(BBBBBB, EEEEEE)
    CCCC = ta.highest(BBBBBB, EEEEEE) - CCC
    CCCCC := CCCC > 0 ? (BBBBBB - CCC) / CCCC * 100 : nz(CCCCC[1])
    DDD := na(DDD[1]) ? CCCCC : DDD[1] + AAA * (CCCCC - DDD[1])
    DDDD = ta.lowest(DDD, EEEEEE)
    DDDDD = ta.highest(DDD, EEEEEE) - DDDD
    DDDDDD := DDDDD > 0 ? (DDD - DDDD) / DDDDD * 100 : nz(DDDDDD[1])
    EEEEE := na(EEEEE[1]) ? DDDDDD : EEEEE[1] + AAA * (DDDDDD - EEEEE[1])
    EEEEE

stc = AAAAA(EEEEEE, BBBB, BBBBB)
mColor = stc > stc[1] ? color.new(color.green, 20) : color.new(color.red, 20)
//plot(stc, color=mColor, title='STC', linewidth=2)

check_all_prev(formula, length) =>
    check = false
    for i=0 to length-1
        check := check or formula[i]
    check


stc_change = math.abs(stc-stc[1])


// Trading Session
session = input.session("0000-0000", title="Trading Session (Exchange Timezone)")+":1234567"
t = time(timeframe.period, session)
trading_session_filter = na(t) ? 0 : 1


long  = close>TTS and TTS>ma1 and stc>stc[1] and stc[1]<stc[2] and stc[1]<1  and stc_change<=max_stc_change and check_all_prev(stc[1]<1 , min_stc_bars)[1] and trading_session_filter
short = close<TTS and TTS<ma1 and stc<stc[1] and stc[1]>stc[2] and stc[1]>99 and stc_change<=max_stc_change and check_all_prev(stc[1]>99, min_stc_bars)[1] and trading_session_filter


// Position Management Tools
pos = 0.0
pos:= long? 1 : short? -1 : pos[1]

longCond  = long  and (pos[1]!= 1 or na(pos[1]))
shortCond = short and (pos[1]!=-1 or na(pos[1]))


// EXIT FUNCTIONS //
i_sl    = input.float(80.0, title="Stop Loss (Ticks)", minval=0)
i_tp    = input.float(80.0, title="Take Profit (Ticks)", minval=0)
i_tsl   = input.float(40.0, title="Trailing Stop Loss (Ticks)", minval=0)
i_tsltp = input.float(40.0, title="Trailing SL Trigger"   , minval=0, step=0.1)


sl  = i_sl >0? i_sl *syminfo.mintick : 99999
tp  = i_tp >0? i_tp *syminfo.mintick : 99999
tsl = i_tsl>0? i_tsl*syminfo.mintick : 99999

long_entry  = ta.valuewhen(longCond , close, 0)
short_entry = ta.valuewhen(shortCond, close, 0)


// Inprofit
be_long  = ta.valuewhen(longCond , close + i_tsltp*syminfo.mintick, 0)
be_short = ta.valuewhen(shortCond, close - i_tsltp*syminfo.mintick, 0)
inprofit_long  = 0
inprofit_short = 0
inprofit_long  := pos==0 or longCond ? 0 : high>be_long [1]? 1 : inprofit_long[1]
inprofit_short := pos==0 or shortCond? 0 : low <be_short[1]? 1 : inprofit_short[1]


// Trailing Stop Loss
trail_long = 0.0, trail_short = 0.0
trail_long  := longCond? high : high>trail_long[1]? high : pos<1 ? 0  : trail_long[1]
trail_short := shortCond? low : low<trail_short[1]? low : pos>-1 ? 99999  : trail_short[1]
trail_long_final   = inprofit_long  ? trail_long  -tsl : 0
trail_short_final  = inprofit_short ? trail_short +tsl : 99999

// Simple Stop Loss + 2 Take Profits
sl_long0   = long_entry  - sl
sl_short0  = short_entry + sl

tp_long  = long_entry   + tp
tp_short = short_entry  - tp

sl_long  = math.max(sl_long0, trail_long_final)
sl_short = math.min(sl_short0, trail_short_final)

sl_long_entry  = ta.valuewhen(longCond , sl_long , 0)
sl_short_entry = ta.valuewhen(shortCond, sl_short, 0)


// Position Adjustment
long_sl  = low <sl_long[1]  and pos[1]==1
short_sl = high>sl_short[1] and pos[1]==-1

final_long_tp  = high>tp_long[1]  and pos[1]==1
final_short_tp = low <tp_short[1] and pos[1]==-1

if ((long_sl or final_long_tp) and not shortCond) or ((short_sl or final_short_tp) and not longCond)
    pos:=0
    
//  Strategy Backtest Limiting Algorithm
i_startTime = input.time(defval = timestamp("01 Sep 2002 13:30 +0000"), title = "Backtesting Start Time")
i_endTime   = input.time(defval = timestamp("30 Sep 2099 19:30 +0000"), title = "Backtesting End Time"  )
timeCond   = (time > i_startTime) and (time < i_endTime)



// RISK
risk_perc = input(1.0, title="Risk Percentage")/100
SL_valueL = ta.valuewhen(longCond , math.abs(close-sl_long ), 0)
SL_valueS = ta.valuewhen(shortCond, math.abs(close-sl_short), 0)

dollar_risk = (strategy.initial_capital + strategy.netprofit) * risk_perc

QTY_L = dollar_risk / SL_valueL 
QTY_S = dollar_risk / SL_valueS

equity = strategy.initial_capital + strategy.netprofit

if equity>0 and timeCond
    if longCond
        strategy.entry("long" , strategy.long , qty=QTY_L)
    if shortCond
        strategy.entry("short", strategy.short, qty=QTY_S)
    
    strategy.exit("SL/TP", from_entry = "long" , stop=sl_long , limit=tp_long )
    strategy.exit("SL/TP", from_entry = "short", stop=sl_short, limit=tp_short)





show_sltp = input(true, title="Show SL/TP Lines on Chart")
xtl=plot(show_sltp and pos== 1? tp_long  : na, color=color.green, style=plot.style_linebr, title="TP Long ")
xts=plot(show_sltp and pos==-1? tp_short : na, color=color.green, style=plot.style_linebr, title="TP Short")
xsl=plot(show_sltp and pos== 1? sl_long_entry  : na, color=color.red  , style=plot.style_linebr, title="SL Long ")
xss=plot(show_sltp and pos==-1? sl_short_entry : na, color=color.red  , style=plot.style_linebr, title="SL Short")
xel=plot(show_sltp and pos== 1?long_entry : na, color=color.blue , style=plot.style_linebr, title="E Long ")
xes=plot(show_sltp and pos==-1?short_entry: na, color=color.blue , style=plot.style_linebr, title="E Short")

fill(xel, xtl, color=color.new(color.green, 80))
fill(xel, xsl, color=color.new(color.red  , 80))

fill(xes, xts, color=color.new(color.green, 80))
fill(xes, xss, color=color.new(color.red  , 80))

plot(show_sltp and pos== 1 and i_tsl>0? sl_long  : na, color=color.red  , style=plot.style_linebr, title="Trailing SL Long ")
plot(show_sltp and pos==-1 and i_tsl>0? sl_short : na, color=color.red  , style=plot.style_linebr, title="Trailing SL Short")


alerts = input.string("PineConnector", title="Alerts Messages:", options=['PineConnector', 'Custom'], group='ALERT SELECTOR')

pc_id      = input.string(title="License ID",              defval="1236518421235", group='PineConnector Settings', tooltip="This is your PineConnector license ID")
pc_prefix  = input.string(title="MetaTrader Prefix",       defval="",              group='PineConnector Settings', tooltip="This is your broker's MetaTrader symbol prefix")
pc_suffix  = input.string(title="MetaTrader Suffix",       defval="",              group='PineConnector Settings', tooltip="This is your broker's MetaTrader symbol suffix")
pc_risk    = input.float(minval=0, maxval=100,  step=1, defval=1,                 group='PineConnector Settings', title="Risk %", tooltip="This is how much to risk per trade in Meta Trader")

var symbol = pc_prefix + syminfo.ticker + pc_suffix

pc_entry_alert(direction) =>
    pc_id + "," + direction + "," + symbol + "," + "sl=" + str.tostring(i_sl/10, '#') + ",tp=" + str.tostring(i_tp/10, '#') + ',trailtrig=' + str.tostring(i_tsltp/10, '#') +  ',traildist=' + str.tostring(i_tsl/10, '#') + ',trailstep=' + str.tostring(1) + ",risk=" + str.tostring(pc_risk) 

if alerts=='PineConnector'
    if longCond
        alert(pc_entry_alert('buy'), alert.freq_once_per_bar_close)
    if shortCond
        alert(pc_entry_alert('sell'), alert.freq_once_per_bar_close)



longCond_txt         = input("", title='Custom Alert Msg: LONG Entry' , group='Custom Alert Messages', inline='longCond_txt      ')
shortCond_txt        = input("", title='Custom Alert Msg: SHORT Entry', group='Custom Alert Messages', inline='shortCond_txt     ')

if alerts=='Custom'
    if longCond
        alert(longCond_txt, alert.freq_once_per_bar_close)
    if shortCond
        alert(shortCond_txt, alert.freq_once_per_bar_close)

Responded

1
Developer 1
Rating
(304)
Projects
340
71%
Arbitration
6
50% / 33%
Overdue
20
6%
Loaded
Similar orders
I have a simple strategy I’d like someone to convert into a mt4 and mt5 ea for me please , just using vwap(volume weighted average profile) and price action with a few simple rules
Project Description: I am looking for an experienced developer to create an Expert Advisor (EA) compatible with both MT4 and MT5 with the following functionalities: 1. Capital and Position Sizing Management: Automatically calculate and determine the appropriate trade size based on account balance and predefined risk parameters. Enforce strict capital management rules to prevent excessive exposure and control overall
I need an MQL5 Expert Advisor that includes a trailing stop in dollars with step control, basket profit and loss in dollars, daily profit and loss targets in dollars, a time filter, and a magic number for trade identification. The EA should be fully customizable and optimized for accuracy
I’m seeking an experienced and reliable MQL5 developer to build a custom MT5 Hedge Trade Copier with the following core features: Two Modes in One EA : Sender (prop/challenge) & Receiver (live hedge) Custom Hedge Lot Formula (based on account size, max loss %, or fixed amount) Secure Authentication System (HTTP license server check) CSV-based Trade Bridge (no sockets/DLLs) Duplicate Trade Protection and error
Required Indi: BB Band: Period 21, Deviations 2.000 SMA: 21 in H1 timeframe RSI: Period 7 Timeframe: M5 Pair: XAUUSD, USDJPY, GBPJPY, EURJPY, AUDJPY, CHFJPY, GBPUSD Trading rules: #A In H1 timeframe, when price goes above the 21 SMA then looking for buy opportunity and when price goes below to 21 SMA, then look fora sell opportunity Buy triggered when candle got rejection from the lower Bollinger bands, and sell
Reverse Study 30+ USD
I have a EA that already trades How I need it to have a option that implements a reverse feature so I can study the EA more I need the EA to monitor itself and then trade itself in reverse, Basically I need the EA to trade itself in a mirror flip, The EA feature must only work when its Values are set to true, And the EA feature will have the Options to change Lot TP and SL but only when its side is set to true
Custom TradingView-to-MT4/MT5 Bridge with Stealth SL/TP Logic Project Title Custom TradingView-to-MT4/MT5 Bridge with Stealth SL/TP Logic (Webhook + EA) Project Description I’m looking for a skilled MQL developer who can build a custom TradingView-to-MT4/MT5 trading bridge that performs the following functions: System Overview 1. ENTRY SYSTEM: - Define a pending order on TradingView (manually or via indicator) and
i want to have a hedging batch of orders when i open a buy it shell open many sell with different tp sl once hit the tp or sl cancel it
main setting for propfirm that i want bot trading direction buy/ sell user like me able to choose max equity loss a day 4% if hit 4 % exit trade and stop trading risk type fix lot / % of acc size developer must send me demo to run it on tester of validity. i want the bot to trade gold only and mainly m5 or m1 time frame
Here are the requirements for a potential developer: 1. *Task*: Create a detailed specification for image editing tasks. 2. *Key Features*: - Describe the type of image (e.g., photo, graphic). - Specify edits (add, remove, change elements). - Define desired output format and resolution. 3. *Deliverables*: - A clear, concise document outlining the task. - Estimated complexity and cost assessment. -

Project information

Budget
60+ USD
For the developer
54 USD
Deadline
to 2 day(s)