Работа завершена
Время выполнения 22 часа
Отзыв от заказчика
Fast, professional and excellent implementation.
Fully recommend Valeriy
Отзыв от исполнителя
Thank you!
Техническое задание
Hi all,
I need a conversion of the bellow indicator.
Please let me know if you have experience with indicator conversions from TV to mql.
//@version=3
//main script from here
study("Keltner Channel signals",overlay=true)
src = input(close, type=source)
separatorAverage = input(false, title="⎻⎻⎻ MA Base Setting ⎻⎻⎻")
movingAverageLength = input(34, minval=1, title="MA length")
movingAverageType = input("EMA", title="MA", options=["SMA", "EMA", "WMA", "DEMA", "TEMA", "TRIMA", "KAMA", "MAMA", "T3"], type=string)
separatorKC = input(false, title="⎻⎻⎻ CHANNELS ⎻⎻⎻")
atrMultiplierMin = input(1.5, minval=0, type = float, title="ATR Multiplier Min")
atrMultiplierMax = input(3.5, minval=0, type = float, title="ATR Multiplier Max")
atrType = input("EMA", title="ATR Smoothing MA", options=["SMA", "EMA", "WMA", "DEMA", "TEMA", "TRIMA", "KAMA", "MAMA", "T3"], type=string)
atrLength = input(88, minval=1, title="ATR Smoothing Length")
kc_usePer = input(defval = false, title = "Different Time-Period ?")
kc_res = input("15", type=resolution, title = "Time-Period")
kama(src, len)=>
xvnoise = abs(src - src[1])
nfastend = 0.666
nslowend = 0.0645
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA = 0.0
nAMA := nz(nAMA[1]) + nsmooth * (src - nz(nAMA[1]))
mama(src, len)=>
fl=0.5
sl=0.05
pi = 3.1415926
sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0
p = 0.0
i2 = 0.0
q2 = 0.0
dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54)
q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54)
jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 := .2*i2_ + .8*nz(i2[1])
q2 := .2*q2_ + .8*nz(q2[1])
re_ = i2*nz(i2[1]) + q2*nz(q2[1])
im_ = i2*nz(q2[1]) - q2*nz(i2[1])
re = 0.0
im = 0.0
re := .2*re_ + .8*nz(re[1])
im := .2*im_ + .8*nz(im[1])
p1 = iff(im!=0 and re!=0, 2*pi/atan(im/re), nz(p[1]))
p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1))
p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2))
p := .2*p3 + .8*nz(p3[1])
spp = 0.0
spp := .33*p + .67*nz(spp[1])
phase = 180/pi * atan(q1 / i1)
dphase_ = nz(phase[1]) - phase
dphase = iff(dphase_< 1, 1, dphase_)
alpha_ = fl / dphase
alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_))
mama = 0.0
mama := alpha*src + (1 - alpha)*nz(mama[1])
t3(src, len)=>
xe1_1 = ema(src, len)
xe2_1 = ema(xe1_1, len)
xe3_1 = ema(xe2_1, len)
xe4_1 = ema(xe3_1, len)
xe5_1 = ema(xe4_1, len)
xe6_1 = ema(xe5_1, len)
b_1 = 0.7
c1_1 = -b_1*b_1*b_1
c2_1 = 3*b_1*b_1+3*b_1*b_1*b_1
c3_1 = -6*b_1*b_1-3*b_1-3*b_1*b_1*b_1
c4_1 = 1+3*b_1+b_1*b_1*b_1+3*b_1*b_1
nT3Average_1 = c1_1 * xe6_1 + c2_1 * xe5_1 + c3_1 * xe4_1 + c4_1 * xe3_1
variant(type, src, len) =>
v1 = sma(src, len) // Simple
v2 = ema(src, len) // Exponential
v3 = 2 * v2 - ema(v2, len) // Double Exponential
v4 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) // Triple Exponential
v5 = wma(src, len) // Weighted
v6 = sma(sma(src, ceil(len / 2)), floor(len / 2) + 1) // TRIMA
v7 = kama(src, len) // KAMA
v8 = mama(src, len) // MAMA
v9 = t3(src, len) // T3
type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="TRIMA"?v6 : type=="KAMA"?v7 : type=="MAMA"?v8 : type=="T3"?v9 : v1
//MA Base Calculation
KeltnerChannelMid = variant(movingAverageType, src, movingAverageLength)
KeltnerChannelRange = variant(atrType, tr , atrLength)
KeltnerChannelBottomMin = KeltnerChannelMid - KeltnerChannelRange * atrMultiplierMin
KeltnerChannelBottomMax = KeltnerChannelMid - KeltnerChannelRange * atrMultiplierMax
KeltnerChannelTopMin = KeltnerChannelMid + KeltnerChannelRange * atrMultiplierMin
KeltnerChannelTopMax = KeltnerChannelMid + KeltnerChannelRange * atrMultiplierMax
resKeltnerChannelMid = kc_usePer ? security(tickerid, kc_res, KeltnerChannelMid) : KeltnerChannelMid
resKeltnerChannelRange = kc_usePer ? security(tickerid, kc_res, KeltnerChannelRange) : KeltnerChannelRange
resKeltnerChannelBottomMin = kc_usePer ? security(tickerid, kc_res, KeltnerChannelBottomMin) : KeltnerChannelBottomMin
resKeltnerChannelBottomMax = kc_usePer ? security(tickerid, kc_res, KeltnerChannelBottomMax) : KeltnerChannelBottomMax
resKeltnerChannelTopMin = kc_usePer ? security(tickerid, kc_res, KeltnerChannelTopMin) : KeltnerChannelTopMin
resKeltnerChannelTopMax = kc_usePer ? security(tickerid, kc_res, KeltnerChannelTopMax) : KeltnerChannelTopMax
plot(resKeltnerChannelMid, color=orange,transp = 80, linewidth=1, title = "KC BASE")
kc_top_min = plot(resKeltnerChannelTopMin, color=red, transp = 70, title = "KC TOP MIN")
kc_top_max =plot(resKeltnerChannelTopMax, color=red, transp = 70, title = "KC TOP MAX")
fill(kc_top_min, kc_top_max, color = lime, transp = 85, title = "FILL KC TOP")
kc_bot_min = plot(resKeltnerChannelBottomMin, color=lime, transp = 70, title = "KC BOTTOM MIN")
kc_bot_max = plot(resKeltnerChannelBottomMax , color=lime, transp = 70, title = "KC BOTTOM MAX")
fill(kc_bot_min, kc_bot_max , color = lime, transp = 85, title = "FILL KC BOT")
//
length = input(title="keltner Length", type=integer, defval=34, minval=1)
multiplier = input(title="keltner Deviation", type=float, defval=2, minval=1)
overbought = input(title="Overbought", type=integer, defval=1, minval=1)
oversold = input(title="Oversold", type=integer, defval=0, minval=1)
custom_timeframe = input(title="Use another Timeframe?", type=bool, defval=false)
highTimeFrame = input(title="Select The Timeframe", type=resolution, defval="60")
res1 = custom_timeframe ? highTimeFrame : period
smabasis = resKeltnerChannelMid
stdev = stdev(close, length)
cierre = security(tickerid, res1, close, false)
alta = security(tickerid, res1, high, false)
baja = security(tickerid, res1, low, false)
basis1 = security(tickerid, res1, smabasis, false)
stdevb = security(tickerid, res1, stdev, false)
dev = multiplier * stdevb // stdev(cierre, length)
upper = basis1 + dev
lower = basis1 - dev
bbr = (cierre - lower)/(upper - lower)
// plot(bbr)
// // MARCA LAS RESISTENCIAS
pintarojo = 0.0
pintarojo := nz(pintarojo[1])
pintarojo := bbr[1] > overbought and bbr < overbought ? alta[1] : nz(pintarojo[1])
p = plot(pintarojo, color = red, style=circles, linewidth=2)
// // MARCA LOS SOPORTES
pintaverde = 0.0
pintaverde := nz(pintaverde[1])
pintaverde := bbr[1] < oversold and bbr > oversold ? baja[1] : nz(pintaverde[1])
g = plot(pintaverde, color = black, style=circles, linewidth=2)
zz= crossover(pintaverde,pintaverde[1]) or crossunder(pintaverde,pintaverde[1])
kp= crossover(pintarojo,pintarojo[1]) or crossunder(pintarojo,pintarojo[1])
//
wt_src = hlc3
wt_channelLen = input(10, "Channel Length")
wt_maLen = input(3, "Moving Average Length")
wt_smoothLen = input(3, "Smoothing Average Length")
wt_overbought = input(90, "Overbought Treashold")
wt_oversold = input(-90, "Oversold Treashold")
wt_showCross = input(false, title="Cross (On / Off)?")
wt_showOversold = input(false, title="Oversold (On / Off)?")
wt_showOverbough = input(false, title="Overbought (On / Off)?")
wt_usePer = input(defval = false, title = "Different Time-Period ?")
wt_res = input("15", type=resolution, title = "Time-Period")
// ----- WT Calculation
wt_movingAverage = ema( wt_src, wt_channelLen )
wt_movingAverageChannel = ema(abs(wt_src - wt_movingAverage), wt_channelLen)
wt_channelIndex = (wt_src - wt_movingAverage) / (0.015 * wt_movingAverageChannel) // Con-stant 0.015
wt_waveTrend1_t = ema( wt_channelIndex, wt_maLen )
wt_waveTrend2_t = sma( wt_waveTrend1_t, wt_smoothLen )
wt_waveTrend1 = wt_usePer?security(tickerid, wt_res, wt_waveTrend1_t):wt_waveTrend1_t
wt_waveTrend2 = wt_usePer?security(tickerid, wt_res, wt_waveTrend2_t):wt_waveTrend2_t
//plot(0, color=gray, title = "Midline")
//plot(wt_overbought, color=green, title = "Overbought")
//plot(wt_oversold, color=red, title = "Oversold")
//plot(wt_waveTrend1, color=blue, transp=50, linewidth = 1 , title = "Wavetrend - Fast")
//plot(wt_waveTrend2, color=green, transp=50, linewidth = 3 , title = "Wavetrend - Slow")
bgcolor(wt_showCross?crossover(wt_waveTrend1,wt_waveTrend2)?orange:na:na, transp=50)
bgcolor(wt_showOverbough?wt_waveTrend2>wt_overbought?red:na:na, transp=80)
bgcolor(wt_showOversold?wt_waveTrend2<wt_oversold?lime:na:na, transp=80)
plotshape(zz, title="buy", style=shape.triangleup,location=location.belowbar, color=green, transp=0, size=size.small)
plotshape(kp, title="sell", style=shape.triangledown,location=location.abovebar, color=red, transp=0, size=size.small)
alertcondition(zz, title='buy ', message='go long')
alertcondition(kp, title='sell', message='go short')
Откликнулись
1
Оценка
Проекты
945
47%
Арбитраж
309
58%
/
27%
Просрочено
125
13%
Свободен
2
Оценка
Проекты
4
50%
Арбитраж
4
0%
/
75%
Просрочено
0
Свободен
3
Оценка
Проекты
603
34%
Арбитраж
65
22%
/
57%
Просрочено
146
24%
Работает
Опубликовал: 1 статью, 22 примера
4
Оценка
Проекты
18
44%
Арбитраж
2
50%
/
50%
Просрочено
0
Свободен
5
Оценка
Проекты
499
67%
Арбитраж
5
40%
/
0%
Просрочено
4
1%
Свободен
Опубликовал: 8 примеров
Похожие заказы
A trending candle followed by a smaller trending candle which is the second candle with no 5EMA The 3rd candle is a reversal candle in which it and it's immidiate previous candle must be at least 70% of each other's body or equal body, with no 5EMA touch the 3rd candle candle is followed immediately by the 4th candle which is the signal candle in which it and the 1st cabdle must be also at least 70% of
LynxMT5algo
30 - 100 USD
An mt5 add on indicator like gainalgo style to show entrance and exit areas for gold silver and Btc scalping. It will be used to make trading more easy for beginners
Simple Added Notice For Existing Indicator
50 - 200 USD
I have the Fisher Indicator shown below the chart. I need an alert added for when the Fisher Indicator hits the 50 point at the end of each period. GBPUSD and EURUSD 4H charts are provided and I can provide additional
Hello here, I need someone who can work on pinescript and also with Renko charts. My entries for my strategy would be based on stop orders Kindly let me know if you can work on this for me and i will send necessary file and quote in the chat
EA Recovery Layer
30+ USD
Freelance Task — EA Recovery Layer Hello. I have a ready-made MQL5 EA. The signals, SL/TP and lot calculation should essentially not be touched. I need a recovery system added. I am not a programmer — below is how the robot should behave. What stays Entry only from an EA signal. Stop-loss is not a new signal. Trailing is already built into my EA — recovery does not implement its own trailing. If trailing is disabled
# SNRZ BOT — SESSION PROGRESS LOG Last updated: 2026-09-16 (local late-evening session) ## SAN BOT (new — cloned from SNRZ) - `MQL5\Experts\AutomatedOrderBot_SAN.mq5` / `.ex5` — v1.0, compiled 0 errors/0 warnings - Signal source: custom indicator "SAN" (InpSANName, buy buf 0 / sell buf 1, target bar 1), same SNRZ-style read, MA fallback if missing - Magic number 234567 (separate from SNRZ 123456 so both bots can run
Should be as it but no alarms, also we need to add a deep search so he can see all the preves candles and a memory function so its not slowing down the indicator. for higher time frames daily 4h 1h around 365 days and for lower time frames we do up to 20k bars but both flexible so i can change it later. the memory is important so the indicator is not always recalculating everything when a new candle shows especially
Hi, I need an experienced NinjaTrader 8/NinjaScript developer to finish or rebuild an automated futures strategy, ideally by the end of this week. I already have the complete TradingView Pine Script reference strategy, an existing ~2,000-line NinjaScript implementation, Playback logs, and known historical benchmark trades. MOST IMPORTANT REQUIREMENT: TRADINGVIEW ↔ NINJATRADER PARITY. The Pine Script is the reference
I need a custom MQL5 indicator for MetaTrader 5. The indicator must automatically print entry, stop loss, and take profit zones on the chart using dots. A critical requirement is that these dots must be non-lagging and absolutely non-repainting. Additionally, the indicator needs to identify and display current supply and demand zones. Please provide the mq5 source code and the ex5 file upon completion
I need an experienced trading-data specialist who can help me obtain 3–4 years of historical market data compatible with NinjaTrader 8 . The data will be used for trading strategy development, backtesting, and analysis
Информация о проекте
Бюджет
30+ USD
Сроки выполнения
до 3 дн.