Indicator ALGOX V11 For TradingView
Indicator ALGOX V11 For TradingView
0
at https://mozilla.org/MPL/2.0/
// Join our channel for more free tools: https://t.me/jonavyfxtrade
//@version=5
//
VERSION = 'v11'// 2024.3.20
strategy(
'ALGOX',
shorttitle = 'ALGOX ' + VERSION,
overlay = true,
explicit_plot_zorder = true,
pyramiding = 0,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 50,
calc_on_every_tick = false,
process_orders_on_close = true,
max_bars_back = 500,
initial_capital = 5000,
commission_type = strategy.commission.percent,
commission_value = 0.02)
//
// === INPUTS ===
res = input.timeframe(title='TIMEFRAME', defval='30', group ="NON REPAINT")
useRes = input(defval=true, title='Use Alternate Signals')
intRes = input(defval=18, title='Multiplier for Alernate Signals')
stratRes = timeframe.ismonthly ? str.tostring(timeframe.multiplier * intRes,
'###M') : timeframe.isweekly ? str.tostring(timeframe.multiplier * intRes,
'###W') : timeframe.isdaily ? str.tostring(timeframe.multiplier * intRes, '###D') :
timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes, '####') : '60'
basisType = input.string(defval='ALMA', title='MA Type: ', options=['TEMA',
'HullMA', 'ALMA'])
basisLen = input.int(defval=2, title='MA Period', minval=1)
offsetSigma = input.int(defval=5, title='Offset for LSMA / Sigma for ALMA',
minval=0)
offsetALMA = input.float(defval=0.85, title='Offset for ALMA', minval=0, step=0.01)
scolor = input(true, title='Show coloured Bars to indicate Trend?')
delayOffset = input.int(defval=0, title='Delay Open/Close MA (Forces Non-
Repainting)', minval=0, step=1)
tradeType = input.string('BOTH', title='What trades should be taken : ',
options=['LONG', 'SHORT', 'BOTH', 'NONE'])
// === /INPUTS ===
/////////////////////////////////////////////
// Create non-repainting security function
rp_security(_symbol, _res, _src) =>
request.security(_symbol, _res, _src[barstate.isrealtime ? 1 : 0])
// Main Indicator
securityNoRep(sym, res, src) => request.security(sym, res, src, barmerge.gaps_off,
barmerge.lookahead_on)
f_chartTfInMinutes() =>
float _resInMinutes = timeframe.multiplier * (
timeframe.isseconds ? 1 :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 60. * 24 :
timeframe.isweekly ? 60. * 24 * 7 :
timeframe.ismonthly ? 60. * 24 * 30.4375 : na)
// Get components
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsi = ta.rsi(close, rsiPeriod)
rsiOb = rsi > 60 and rsi > ta.ema(rsi, 20)
rsiOs = rsi < 40 and rsi < ta.ema(rsi, 20)
////////////////////////////////////////////////////////
// === BASE FUNCTIONS ===
// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len, offSig, offALMA) =>
v1 = ta.sma(src, len) // Simple
v2 = ta.ema(src, len) // Exponential
v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential
v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple
Exponential
v5 = ta.wma(src, len) // Weighted
v6 = ta.vwma(src, len) // Volume Weighted
v7 = 0.0
sma_1 = ta.sma(src, len) // Smoothed
v7 := na(v7[1]) ? sma_1 : (v7[1] * (len - 1) + src) / len
v8 = ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len),
math.round(math.sqrt(len))) // Hull
v9 = ta.linreg(src, len, offSig) // Least Squares
v10 = ta.alma(src, len, offALMA, offSig) // Arnaud Legoux
v11 = ta.sma(v1, len) // Triangular (extreme smooth)
// SuperSmoother filter
// © 2013 John F. Ehlers
a1 = math.exp(-1.414 * 3.14159 / len)
b1 = 2 * a1 * math.cos(1.414 * 3.14159 / len)
c2 = b1
c3 = -a1 * a1
c1 = 1 - c2 - c3
v12 = 0.0
v12 := c1 * (src + nz(src[1])) / 2 + c2 * nz(v12[1]) + c3 * nz(v12[2])
type == 'EMA' ? v2 : type == 'DEMA' ? v3 : type == 'TEMA' ? v4 : type ==
'WMA' ? v5 : type == 'VWMA' ? v6 : type == 'SMMA' ? v7 : type == 'HullMA' ? v8 :
type == 'LSMA' ? v9 : type == 'ALMA' ? v10 : type == 'TMA' ? v11 : type == 'SSMA' ?
v12 : v1
// ATR Filter
//
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
// Define ATR parameters
i_atrFilterEnabled2 = input.bool(defval = false , title = "Enable Mean ATR Filter -
2", tooltip = "Enable if you would like to conditionally have entries incorporate
EMA as a filter where source is above/below the ATR line", group ="Mean ATR Filter"
)
i_atrLength2 = 14
i_atrValue2 = ta.atr(i_atrLength)
i_prevatrValue2 = ta.atr(i_atrLength)[2]
bool i_atrCondition2 = i_atrFilterEnabled2 ? i_atrValue2 > i_prevatrValue2 : true
// Volume Filter
//
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
// Volume filter
i_volumeFilterEnabled = input.bool(defval = false , title = "Enable Volume Filter -
1", tooltip = "Enable if you would like to conditionally have entries incorporate
EMA as a filter where source is above/below the Volume EMA line", group ="Volume
Filter" )
i_minVolume = ta.sma(volume, 14) * 1.5
i_isVolumeHigh = volume > i_minVolume
bool isVolumeFilterEnabledAndCloseAboveMA = i_volumeFilterEnabled ?
i_isVolumeHigh : true
// EMA Filter
//
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
// ADX Filter
//
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
//INDICATOR CALCULATIONS
//CONDITIONS
//<triggers>
lxTrigger = false
sxTrigger = false
leTrigger = ta.crossover (closeSeriesAlt, openSeriesAlt) and isRSILong and
isBBLong and isEMAFilterEnabledAndCloseAboveMA and i_atrCondition2 and
i_atrConditionBull and isVolumeFilterEnabledAndCloseAboveMA
seTrigger = ta.crossunder(closeSeriesAlt, openSeriesAlt) and isRSIShort and
isBBShort and isEMAFilterEnabledAndCloseBelowMA and i_atrCondition2 and
i_atrConditionBear and isVolumeFilterEnabledAndCloseAboveMA
if sell
strategy.close("Long" , alert_message = i_alert_txt_exit_long)
// strategy.entry("Short" , strategy.short, alert_message =
i_alert_txt_entry_short)
// This source code is subject to the terms of the Mozilla Public License 2.0 at
https://mozilla.org/MPL/2.0/
// © TraderHalai
// This script was born out of my quest to be able to display strategy back test
statistics on charts to allow for easier backtesting on devices that do not
natively support backtest engine (such as mobile phones, when I am backtesting from
away from my computer). There are already a few good ones on TradingView, but
most / many are too complicated for my needs.
//
//Found an excellent display backtest engine by 'The Art of Trading'. This script
is a snippet of his hard work, with some very minor tweaks and changes. Much
respect to the original author.
//
//Full credit to the original author of this script. It can be found here:
https://www.tradingview.com/script/t776tkZv-Hammers-Stars-Strategy/?
offer_id=10&aff_id=15271
//
// This script can be copied and airlifted onto existing strategy scripts of your
own, and integrates out of the box without implementation of additional functions.
I've also added Max Runup, Average Win and Average Loss per trade to the orignal
script.
//
//Will look to add in more performance metrics in future, as I further develop this
script.
//
//Feel free to use this display panel in your scripts and strategies.
//DEMO basic strategy - Use your own strategy here - Jaws Mean Reversion from my
profile used here
//source = input(title = "Source", defval = close)
if i_showMonthlyPerformance
new_month = month(time) != month(time[1])
new_year = year(time) != year(time[1])
eq = strategy.equity
bar_pnl = eq / eq[1] - 1
cur_month_pnl = 0.0
cur_year_pnl = 0.0
last_computed = false
array.push(month_pnl , cur_month_pnl[1])
array.push(month_time, time[1])
array.push(year_pnl , cur_year_pnl[1])
array.push(year_time, time[1])
if (barstate.islastconfirmedhistory)
monthly_table := table.new(position.bottom_right, columns = 14, rows =
array.size(year_pnl) + 1, border_width = 1)
for yi = 0 to array.size(year_pnl) - 1
table.cell(monthly_table, 0, yi + 1,
str.tostring(year(array.get(year_time, yi))), bgcolor = #cccccc,
text_size=tableTextSize)
//@version=5
//
###################################################################################
###############//
// This indicator is modified or developed by [DM] D.Martinez
// Original Autor: # Release Date: # Publication: #
// Copyright: © D.Martinez 2020 to present
// Title: 000.2 b1 Alma Moving Average Ribbon Reverse Length [ [DM]
// Release : SEP/1192021 : First release
// Update : MMM/DD/YYYY : na
// Script may be freely distributed under the MIT license
//
###################################################################################
###############//
//indicator(title='Alma Moving Average Ribbon Reverse Length [', shorttitle='RLA
MA', overlay=true)
/// Security Function///
//f_security(_symbol, _res, _src, _repaint) =>
// request.security(_symbol, _res, _src[_repaint ? 0 : barstate.isrealtime ? 1 :
0])[_repaint ? 0 : barstate.isrealtime ? 0 : 1]
/// Inputs ///
useMAS = input(false, 'Use Moving Averages', group='Source settings')
source = close
cstm_res = input.timeframe(defval='', title='Resolution', group='Source settings',
tooltip='Custom resolution for function security, be careful sometimes you plot the
plots from wrong references.')
frep_src = input.bool(defval=false, title='Allow Repainting', group='Source
settings', tooltip='Function Repaint')
src_opt = input.source(defval=close, title='Main Source', group='Source settings',
tooltip='Main Source')
alrt_00 = input.bool(defval=true, title='Active Alerts', group='Alert Settings',
tooltip='Active or desactive all alerts Active or desactive all alerts')
alrt_04 = input.bool(defval=false, title='Active Visual TrendAlerts', group='Alert
Settings', tooltip='Active or desactive all plotshape with trend direction alerts')
sfty_rnge = input.int(defval=00001, minval=00000, maxval=01000, step=00001,
title='Offset For Visual Alerts', group='Alert Settings', tooltip='Offset Value to
shot visul alerts')
alrt_01 = input.string(defval='#08', title='First source signal to activate alert',
options=['#08', '#07', '#06', '#05', '#04', '#03', '#02', '#01'], group='Alert
Settings', tooltip='First signal used for the crossing with the second signal then
in the third field choose the type of crossing ')
alrt_02 = input.string(defval='#07', title='Second source signal to activate
alert', options=['#07', '#06', '#05', '#04', '#03', '#02', '#01'], group='Alert
Settings', tooltip='Second signal used for the crossing with the first signal then
in the third field choose the type of crossing ')
alrt_03 = input.string(defval='ALL', title='Condition to activate alert',
options=['OVER', 'UNDER', 'ALL'], group='Alert Settings', tooltip='Choose the type
of crossing for both signals')
log_swch = input.bool(defval=false, title='Use log scale?', group='Source
settings', tooltip='Use log scale i the ind=icator')
fill_opt = input.bool(defval=true, title='Fill body of plots', group='Color
options', tooltip='Show Or Hide Colored Space Betwen The Plots')
main_len = input.int(defval=00423, minval=00001, maxval=01000, step=00001,
title='Alma Main Length', group='Lenght settings', tooltip='Default Value 423')
ofs_alma = input.float(defval=00.85, minval=00.01, maxval=00001, step=00.01,
title='Main Offset Alma', group='Lenght settings', tooltip='Default Value 0.85')
sig_alma = input.int(defval=00006, minval=00001, maxval=01000, step=00001,
title='Main Sigma Alma', group='Lenght settings', tooltip='Default Value 6')
/// Source ///
//ALMAsource = log_swch ? f_secureSecurity(syminfo.tickerid, cstm_res,
math.log(open), frep_src) : f_secureSecurity(syminfo.tickerid, cstm_res, open,
frep_src)
ALMAsource = log_swch ? rp_security(syminfo.tickerid, cstm_res, math.log(open)) :
rp_security(syminfo.tickerid, cstm_res, open)
/// Brain & Autolength ///
alma_ma_01 = ta.alma(source, main_len, ofs_alma, sig_alma)
length_02 = math.round(main_len / math.phi)
alma_ma_02 = ta.alma(source, length_02, ofs_alma, sig_alma)
length_03 = math.round(length_02 / math.phi)
alma_ma_03 = ta.alma(source, length_03, ofs_alma, sig_alma)
length_04 = math.round(length_03 / math.phi)
alma_ma_04 = ta.alma(source, length_04, ofs_alma, sig_alma)
length_05 = math.round(length_04 / math.phi)
alma_ma_05 = ta.alma(source, length_05, ofs_alma, sig_alma)
length_06 = math.round(length_05 / math.phi)
alma_ma_06 = ta.alma(source, length_06, ofs_alma, sig_alma)
length_07 = math.round(length_06 / math.phi)
alma_ma_07 = ta.alma(source, length_07, ofs_alma, sig_alma)
length_08 = math.round(length_07 / math.phi)
alma_ma_08 = ta.alma(source, length_08, ofs_alma, sig_alma)
length_0x = math.round(length_08 / math.phi)
alma_ma_0x = ta.alma(source, length_0x, ofs_alma, sig_alma)
/// Colors ///
fxc_heatmap_ad_pro_0(_source) => //(_source, _center, _steps, _c_bearWeak,
_c_bearStrong, _c_bullWeak, _c_bullStrong)
ad_center = input.int(defval=000, minval=-100, maxval=100, step=001,
title='centerline', group='A/D Plots Colors Gradient', tooltip='(- ∞ to ∞)
centerline used to determine if signal is bullish/bearish')
ad_steps = input.int(defval=020, minval=0002, maxval=423, step=001,
title='Steps in the gradient', group='A/D Plots Colors Gradient', tooltip='Maximum
number of steps in the gradient from the weak color to the strong color')
ca_bullStrong = input.color(color.rgb(000, 255, 000, 035), title='Advanced
signal bull strong%', group='A/D Plots Colors Gradient', tooltip='Setting colors
AD')
ca_bullWeak = input.color(color.rgb(000, 255, 050, 055), title='Advanced signal
bull weak', group='A/D Plots Colors Gradient', tooltip='Setting colors AD')
cd_bearWeak = input.color(color.rgb(255, 000, 050, 055), title='Declined signal
bear weak', group='A/D Plots Colors Gradient', tooltip='Setting colors AD')
cd_bearStrong = input.color(color.rgb(255, 000, 000, 035), title='Declined
signal bear strong', group='A/D Plots Colors Gradient', tooltip='Setting colors
AD')
var float _qtyAdvDec = 0.
var float _maxSteps = math.max(1, ad_steps)
bool _xUp = ta.crossover(_source, ad_center)
bool _xDn = ta.crossunder(_source, ad_center)
float _chg = ta.change(_source)
bool _up = _chg > 0
bool _dn = _chg < 0
bool _srcBull = _source > ad_center
bool _srcBear = _source < ad_center
_qtyAdvDec := _srcBull ? _xUp ? 1 : _up ? math.min(_maxSteps, _qtyAdvDec + 1) :
_dn ? math.max(1, _qtyAdvDec - 1) : _qtyAdvDec : _srcBear ? _xDn ? 1 : _dn ?
math.min(_maxSteps, _qtyAdvDec + 1) : _up ? math.max(1, _qtyAdvDec - 1) :
_qtyAdvDec : _qtyAdvDec
var color _return = na
_return := _srcBull ? color.from_gradient(_qtyAdvDec, 1, _maxSteps,
ca_bullWeak, ca_bullStrong) : _srcBear ? color.from_gradient(_qtyAdvDec, 1,
_maxSteps, cd_bearWeak, cd_bearStrong) : _return
_return
//=>OutPuts Colors
col_mav_01 = fxc_heatmap_ad_pro_0(alma_ma_02 - alma_ma_01)
col_maf_01 = fxc_heatmap_ad_pro_2(alma_ma_02 - alma_ma_01)
col_mav_02 = fxc_heatmap_ad_pro_0(alma_ma_03 - alma_ma_02)
col_maf_02 = fxc_heatmap_ad_pro_2(alma_ma_03 - alma_ma_02)
col_mav_03 = fxc_heatmap_ad_pro_0(alma_ma_04 - alma_ma_03)
col_maf_03 = fxc_heatmap_ad_pro_2(alma_ma_04 - alma_ma_03)
col_mav_04 = fxc_heatmap_ad_pro_0(alma_ma_05 - alma_ma_04)
col_maf_04 = fxc_heatmap_ad_pro_2(alma_ma_05 - alma_ma_04)
col_mav_05 = fxc_heatmap_ad_pro_0(alma_ma_06 - alma_ma_05)
col_maf_05 = fxc_heatmap_ad_pro_2(alma_ma_06 - alma_ma_05)
col_mav_06 = fxc_heatmap_ad_pro_0(alma_ma_07 - alma_ma_06)
col_maf_06 = fxc_heatmap_ad_pro_2(alma_ma_07 - alma_ma_06)
col_mav_07 = fxc_heatmap_ad_pro_0(alma_ma_08 - alma_ma_07)
col_maf_07 = fxc_heatmap_ad_pro_2(alma_ma_08 - alma_ma_07)
col_mav_08 = fxc_heatmap_ad_pro_0(alma_ma_0x - alma_ma_08)
col_maf_08 = fxc_heatmap_ad_pro_2(alma_ma_0x - alma_ma_08)
/// PLots ///
pl_ma_01 = plot(series=log_swch ? math.exp(alma_ma_01) : useMAS ? alma_ma_01 : na,
title='MA #01', color=col_mav_01, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #01', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_02 = plot(series=log_swch ? math.exp(alma_ma_02) : useMAS ? alma_ma_02 : na,
title='MA #02', color=col_mav_02, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #02', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_03 = plot(series=log_swch ? math.exp(alma_ma_03) : useMAS ? alma_ma_03 : na,
title='MA #03', color=col_mav_03, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #03', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_04 = plot(series=log_swch ? math.exp(alma_ma_04) : useMAS ? alma_ma_04 : na,
title='MA #04', color=col_mav_04, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #04', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_05 = plot(series=log_swch ? math.exp(alma_ma_05) : useMAS ? alma_ma_05 : na,
title='MA #05', color=col_mav_05, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #05', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_06 = plot(series=log_swch ? math.exp(alma_ma_06) : useMAS ? alma_ma_06 : na,
title='MA #06', color=col_mav_06, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #06', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_07 = plot(series=log_swch ? math.exp(alma_ma_07) : useMAS ? alma_ma_07 : na,
title='MA #07', color=col_mav_07, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #07', group='Offset MA Plots'),
editable=true, display=display.all)
pl_ma_08 = plot(series=log_swch ? math.exp(alma_ma_08) : useMAS ? alma_ma_08 : na,
title='MA #08', color=col_mav_08, linewidth=2, style=plot.style_line,
offset=input.int(defval=00, title='Offset MA #08', group='Offset MA Plots'),
editable=true, display=display.all)
/// Fill ///
fill(plot1=pl_ma_01, plot2=pl_ma_02, color=fill_opt ? col_maf_01 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
fill(plot1=pl_ma_02, plot2=pl_ma_03, color=fill_opt ? col_maf_02 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
fill(plot1=pl_ma_03, plot2=pl_ma_04, color=fill_opt ? col_maf_03 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
fill(plot1=pl_ma_04, plot2=pl_ma_05, color=fill_opt ? col_maf_04 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
fill(plot1=pl_ma_05, plot2=pl_ma_06, color=fill_opt ? col_maf_05 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
fill(plot1=pl_ma_06, plot2=pl_ma_07, color=fill_opt ? col_maf_06 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
fill(plot1=pl_ma_07, plot2=pl_ma_08, color=fill_opt ? col_maf_07 : na, title='Fill
color', editable=false, fillgaps=true, transp=90)
/// PlotShape ///
cal_psh_val = 100 * (alma_ma_08 - alma_ma_07) / (alma_ma_08 + alma_ma_07) + 100 *
((alma_ma_07 - alma_ma_06) / (alma_ma_07 + alma_ma_06))
psh_cond_all = cal_psh_val > 0 and cal_psh_val > cal_psh_val[sfty_rnge] ? 1 :
cal_psh_val < 0 and cal_psh_val < cal_psh_val[sfty_rnge] ? 2 : 3
plotshape(series=alrt_04 ? psh_cond_all == 1 ? true : na : na, title='Plotshape
Alert Bull', style=shape.triangleup, location=location.bottom,
color=color.new(color.green, 050), editable=true, size=size.tiny,
display=display.all)
plotshape(series=alrt_04 ? psh_cond_all == 2 ? true : na : na, title='Plotshape
Alert Bear', style=shape.triangledown, location=location.top,
color=color.new(color.red, 050), editable=true, size=size.tiny,
display=display.all)
///=>Fuction alert selection
f_crossalrt(ma01, ma02, crosstype) =>
src_01 = ma01 == '#08' ? alma_ma_01 : ma01 == '#07' ? alma_ma_02 : ma01 ==
'#06' ? alma_ma_03 : ma01 == '#05' ? alma_ma_04 : ma01 == '#04' ? alma_ma_05 : ma01
== '#03' ? alma_ma_06 : ma01 == '#02' ? alma_ma_07 : ma01 == '#01' ? alma_ma_08 :
0.0 // In doubt, return zero
src_02 = ma02 == '#07' ? alma_ma_02 : ma02 == '#06' ? alma_ma_03 : ma02 ==
'#05' ? alma_ma_04 : ma02 == '#04' ? alma_ma_05 : ma02 == '#03' ? alma_ma_06 : ma02
== '#02' ? alma_ma_07 : ma02 == '#01' ? alma_ma_08 : 0.0 // In doubt, return zero
cros_tp = crosstype == 'OVER' ? ta.crossover(src_01, src_02) : crosstype ==
'UNDER' ? ta.crossunder(src_01, src_02) : crosstype == 'ALL' ? ta.cross(src_01,
src_02) : na // In doubt
cros_tp
signal_alert = f_crossalrt(alrt_01, alrt_02, alrt_03)
///=>Alert post
if alrt_00 and signal_alert
alert('Symbol = (' + syminfo.tickerid + ') TimeFrame = (' + timeframe.period +
') Current Price (' + str.tostring(close) + ') The Moving Average Oscillator MA
Cross Alarm Has Been Activated', alert.freq_once_per_bar_close)
/// End Of The Code///
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0
at https://mozilla.org/MPL/2.0/
// © niceGear68734
//@version=5
//strategy("Table to filter trades per day", overlay=true, use_bar_magnifier =
true, initial_capital = 5000, calc_on_every_tick = true, calc_on_order_fills =
true, commission_type = strategy.commission.cash_per_contract)
//~ ___________________________________________________________________________
//~ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//~ !!!!!!!!!!!!!!!_________________ START _________________!!!!!!!!!!!!!!!!!
f_strategy_closedtrades_hour() =>
switch
i_check_open_close =="Closed" =>
dayofweek(strategy.closedtrades.exit_time(trade_number), timezone_setting)
i_check_open_close =="Opened" =>
dayofweek(strategy.closedtrades.entry_time(trade_number), timezone_setting)
f_data(_i) =>
var _closed_trades = 0
var _loss_trades = 0
var _win_trades = 0
var _txt_closed_trades = ""
var _txt_loss_trades = ""
var _txt_win_trades = ""
if strategy.closedtrades > strategy.closedtrades[1] and
f_strategy_closedtrades_hour() == _i
_closed_trades += 1
_txt_closed_trades := str.tostring(_closed_trades)
if strategy.losstrades > strategy.losstrades[1] and
f_strategy_closedtrades_hour() == _i
_loss_trades += 1
_txt_loss_trades := str.tostring(_loss_trades)
if strategy.wintrades > strategy.wintrades[1] and
f_strategy_closedtrades_hour() == _i
_win_trades += 1
_txt_win_trades := str.tostring(_win_trades)
[_txt_closed_trades, _txt_loss_trades, _txt_win_trades]
//__________________________
var string[] array1 = array.new_string(5)
var string[] array2 = array.new_string(5)
var string[] array3 = array.new_string(5)
var string[] array4 = array.new_string(5)
var string[] array5 = array.new_string(5)
var string[] array6 = array.new_string(5)
var string[] array7 = array.new_string(5)
for i = 1 to 7
switch
i == 1 => f_pass_data_to_array(i,array1)
i == 2 => f_pass_data_to_array(i,array2)
i == 3 => f_pass_data_to_array(i,array3)
i == 4 => f_pass_data_to_array(i,array4)
i == 5 => f_pass_data_to_array(i,array5)
i == 6 => f_pass_data_to_array(i,array6)
i == 7 => f_pass_data_to_array(i,array7)
/////////////////////////////////////////////////////////////// ©
BackQuant ///////////////////////////////////////////////////////////////
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0
at https://mozilla.org/MPL/2.0/
// © BackQuant
import TradingView/ta/4 as ta
//@version=5
//indicator(
// title="DEMA Adjusted Average True Range [BackQuant]",
// shorttitle = "DEMA ATR [BackQuant]",
// overlay=true,
// timeframe="",
// timeframe_gaps=true
// )
atr = ta.atr(lookback)
trueRange = atr * atrFactor
DemaAtr = demaOut
DemaAtr := nz(DemaAtr[1], DemaAtr)
// Function Out
DemaAtr = DemaAtrWithBands(periodDema, source, periodAtr, factorAtr)
/////////////////////////////////////////////////////////////// ©
BackQuant ///////////////////////////////////////////////////////////////
// Conditions
DemaAtrLong = DemaAtr > DemaAtr[1]
DemaAtrShort = DemaAtr < DemaAtr[1]
// Colour Condtions
var color Trend = #ffffff
if DemaAtrLong
Trend := longColour
if DemaAtrShort
Trend := shortColour
// Plotting
plot(
showAtr ? DemaAtr : na,
"ATR",
color=Trend,
linewidth = 2
)
//
═══════════════════════════════════════════════════════════════════════════════════
═══════════════ //
//# *
═══════════════════════════════════════════════════════════════════════════════════
═══════════
//# *
//# * Study : Backtest Framework
//# * Author : © dgtrd
//# * Purpose : Ability to optimize a study and observe trade simulation
statistics accordingly
//# *
//# * Revision History
//# * Release : Nov 21, 2020 : Initial Release
//# * Update : Mar 13, 2021 : Enchanced Backtest Framework
//# * - long/short/stoploss conditions enchaced
//# * - early warning ability added (label + alert)
//# *
//# *
═══════════════════════════════════════════════════════════════════════════════════
═══════════
//
═══════════════════════════════════════════════════════════════════════════════════
═══════════════ //
// -Inputs
═══════════════════════════════════════════════════════════════════════════════════
═══════ //
// -Calculations
═══════════════════════════════════════════════════════════════════════════════════
═ //
if isBackTest
if lblInOutSL
label longLabel = label.new(bar_index, low, text='L', tooltip='entry
price : ' + str.tostring(entryPrice) + '\nentry value : ' + str.tostring(capital,
'#.##'), color=color.green, style=label.style_label_up, textcolor=color.white,
textalign=text.align_center, size=size.tiny)
longLabel
alert('long : probable trading opportunity, price ' + str.tostring(close),
alert.freq_once_per_bar)
if lblInOutSL
text_1 = stopLossCondition ? 'SL' : 'TP'
label shortLabel = label.new(bar_index, high, text=text_1,
tooltip='change .......... : ' + str.tostring((exitPrice / entryPrice - 1) * 100,
'#.##') + '%\nentry/exit price : ' + str.tostring(entryPrice) + ' / ' +
str.tostring(exitPrice) + '\nnew capital ..... : ' + str.tostring(capital, '#.##'),
color=color.red, style=label.style_label_down, textcolor=color.white,
textalign=text.align_center, size=size.tiny)
shortLabel
if ta.change(time)
label.delete(wLabel[1])
if stopLossCondition
alert('stop loss condition, price ' + str.tostring(close),
alert.freq_once_per_bar)
if lblTrdStat
var years = (timenow - time) / 31556952000
// -Plotting
═══════════════════════════════════════════════════════════════════════════════════
═ //
//
===================================================================================
=======