// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Amphibiantrading
//@version=5
indicator('Candle Combo Screener', shorttitle = 'CCS', overlay = true)
//----------settings----------//
var g1 = 'Candle Combos'
kickerBool = input.bool(true, 'Kicker', inline = '1', group = g1)
oopsBool = input.bool(true, 'Oops Reversals', inline = '1', group = g1)
oelBool = input.bool(true, 'Open is High / Low', inline = '1', group = g1)
insideBool = input.bool(true, 'Inside / Engulfing', inline = '2', group = g1)
threeBarBool = input.bool(true, '3 Bar Break', inline = '2', group = g1)
var g2 = 'Symbols'
bool1 = input.bool(true, '', inline = '1', group = g2)
sym1 = input.symbol('TSLA', 'Symbol 1 ', inline = '1', group = g2)
bool2 = input.bool(true, '', inline = '2', group = g2)
sym2 = input.symbol('NVDA', 'Symbol 2 ', inline = '2', group = g2)
bool3 = input.bool(true, '', inline = '3', group = g2)
sym3 = input.symbol('MELI', 'Symbol 3 ', inline = '3', group = g2)
bool4 = input.bool(true, '', inline = '4', group = g2)
sym4 = input.symbol('SE', 'Symbol 4 ', inline = '4', group = g2)
bool5 = input.bool(true, '', inline = '5', group = g2)
sym5 = input.symbol('ABNB', 'Symbol 5 ', inline = '5', group = g2)
bool6 = input.bool(true, '', inline = '6', group = g2)
sym6 = input.symbol('CRWD', 'Symbol 6 ', inline = '6', group = g2)
bool7 = input.bool(true, '', inline = '7', group = g2)
sym7 = input.symbol('PANW', 'Symbol 7 ', inline = '7', group = g2)
bool8 = input.bool(true, '', inline = '8', group = g2)
sym8 = input.symbol('ZS', 'Symbol 8 ', inline = '8', group = g2)
bool9 = input.bool(true, '', inline = '9', group = g2)
sym9 = input.symbol('ALAB', 'Symbol 9 ', inline = '9', group = g2)
bool10 = input.bool(true, '', inline = '10', group = g2)
sym10 = input.symbol('SMCI', 'Symbol 10 ', inline = '10', group = g2)
bool11 = input.bool(true, '', inline = '11', group = g2)
sym11 = input.symbol('AMD', 'Symbol 11 ', inline = '11', group = g2)
bool12 = input.bool(true, '', inline = '12', group = g2)
sym12 = input.symbol('DASH', 'Symbol 12 ', inline = '12', group = g2)
bool13 = input.bool(true, '', inline = '13', group = g2)
sym13 = input.symbol('HOOD', 'Symbol 13 ', inline = '13', group = g2)
bool14 = input.bool(true, '', inline = '14', group = g2)
sym14 = input.symbol('CAVA', 'Symbol 14 ', inline = '14', group = g2)
bool15 = input.bool(true, '', inline = '15', group = g2)
sym15 = input.symbol('LULU', 'Symbol 15 ', inline = '15', group = g2)
bool16 = input.bool(true, '', inline = '16', group = g2)
sym16 = input.symbol('RCL', 'Symbol 16 ', inline = '16', group = g2)
bool17 = input.bool(true, '', inline = '17', group = g2)
sym17 = input.symbol('SN', 'Symbol 17 ', inline = '17', group = g2)
bool18 = input.bool(true, '', inline = '18', group = g2)
sym18 = input.symbol('MEDP', 'Symbol 18 ', inline = '18', group = g2)
bool19 = input.bool(true, '', inline = '19', group = g2)
sym19 = input.symbol('NBIX', 'Symbol 19 ', inline = '19', group = g2)
bool20 = input.bool(true, '', inline = '20', group = g2)
sym20 = input.symbol('TREX', 'Symbol 20 ', inline = '20', group = g2)
bool21 = input.bool(true, '', inline = '21', group = g2)
sym21 = input.symbol('BRZE', 'Symbol 21 ', inline = '21', group = g2)
bool22 = input.bool(true, '', inline = '22', group = g2)
sym22 = input.symbol('SHAK', 'Symbol 22 ', inline = '22', group = g2)
bool23 = input.bool(true, '', inline = '23', group = g2)
sym23 = input.symbol('NTNX', 'Symbol 23 ', inline = '23', group = g2)
bool24 = input.bool(true, '', inline = '24', group = g2)
sym24 = input.symbol('FOUR', 'Symbol 24 ', inline = '24', group = g2)
bool25 = input.bool(true, '', inline = '25', group = g2)
sym25 = input.symbol('IBIT', 'Symbol 25 ', inline = '25', group = g2)
bool26 = input.bool(true, '', inline = '26', group = g2)
sym26 = input.symbol('BROS', 'Symbol 26 ', inline = '26', group = g2)
bool27 = input.bool(true, '', inline = '27', group = g2)
sym27 = input.symbol('AZEK', 'Symbol 27 ', inline = '27', group = g2)
bool28 = input.bool(true, '', inline = '28', group = g2)
sym28 = input.symbol('PEGA', 'Symbol 28 ', inline = '28', group = g2)
bool29 = input.bool(true, '', inline = '29', group = g2)
sym29 = input.symbol('CELH', 'Symbol 29 ', inline = '29', group = g2)
bool30 = input.bool(true, '', inline = '30', group = g2)
sym30 = input.symbol('APPF', 'Symbol 30 ', inline = '30', group = g2)
bool31 = input.bool(true, '', inline = '31', group = g2)
sym31 = input.symbol('FROG', 'Symbol 31 ', inline = '31', group = g2)
bool32 = input.bool(true, '', inline = '32', group = g2)
sym32 = input.symbol('DKNG', 'Symbol 32 ', inline = '32', group = g2)
bool33 = input.bool(true, '', inline = '33', group = g2)
sym33 = input.symbol('SQ', 'Symbol 33 ', inline = '33', group = g2)
bool34 = input.bool(true, '', inline = '34', group = g2)
sym34 = input.symbol('DUOL', 'Symbol 34 ', inline = '34', group = g2)
bool35 = input.bool(true, '', inline = '35', group = g2)
sym35 = input.symbol('NOW', 'Symbol 35 ', inline = '35', group = g2)
bool36 = input.bool(true, '', inline = '36', group = g2)
sym36 = input.symbol('TOST', 'Symbol 36 ', inline = '36', group = g2)
bool37 = input.bool(true, '', inline = '37', group = g2)
sym37 = input.symbol('HOOD', 'Symbol 37 ', inline = '37', group = g2)
bool38 = input.bool(true, '', inline = '38', group = g2)
sym38 = input.symbol('HUBS', 'Symbol 38 ', inline = '38', group = g2)
bool39 = input.bool(true, '', inline = '39', group = g2)
sym39 = input.symbol('UBER', 'Symbol 39 ', inline = '39', group = g2)
bool40 = input.bool(true, '', inline = '40', group = g2)
sym40 = input.symbol('CART', 'Symbol 40 ', inline = '40', group = g2)
var g3 = 'Table Options'
i_tableypos = input.string('Top', 'Y', options = ['Top', 'Middle', 'Bottom'], inline = '1', group= g3)
i_tablexpos = input.string('Right', 'X', options = ['Right','Center', 'Left'], inline = '1', group = g3)
tableTextSize = input.string('Small', 'Table Size', options = ['Small','Normal','Large','Huge'], inline = '2', group = g3)
tableTextColor = input.color(color.white, 'Table Values Text Color', inline = '2', group = g3)
tblHeaderCol = input.color(color.black, 'Header Text Color', inline = '3', group = g3)
tableBgColor = input.color(color.rgb(230, 230, 230), 'Table Background Color', inline = '3', group = g3)
bullColor = input.color(color.green, 'Bullish Combo Color', inline = '4', group = g3)
bearColor = input.color(color.red, 'Bearish Combo Color', inline = '4', group = g3)
//----------candle combos----------//
kicker = close[1] < open[1] and open > open[1]
oel = open == low
oeh = open == high
oopsUp = open < low[1] and close > low[1]
oopsDn = open > high[1] and close <= high[1]
inside = high <= high[1] and low >= low[1]
engulf = high > high[1] and low < low[1]
b3Up = high[1] < high[3] and close > high[1] and close > high[2] and close > high[3]
b3Dn = low[1] > low[3] and close < low[1] and close < low[2] and close < low[3]
bull = close > close[1]
//----------variables----------//
var table screener = table.new(str.lower(i_tableypos) + '_' + str.lower(i_tablexpos), 6, 41, color.new(color.white,100), color.black, 1, color.black, 1)
//----------methods----------//
method splitter(string sym) =>
array.get(str.split(sym, ':'),1)
method textsize(string this) =>
switch this
'Normal' => size.normal
'Small' => size.small
'Large' => size.large
'Huge' => size.huge
method data(string sym)=>
[k, ol, oh, ou, od, id, en, bu, bd, b] = request.security(sym, 'D', [kicker,oel,oeh,oopsUp,oopsDn,inside,engulf,b3Up,b3Dn,bull])
//----------data----------//
syms = array.from(sym1, sym2, sym3, sym4, sym5, sym6, sym7, sym8, sym9, sym10, sym11, sym12, sym13, sym14, sym15, sym16, sym17,
sym18, sym19, sym20, sym21, sym22, sym23, sym24, sym25, sym26, sym27, sym28, sym29, sym30, sym31, sym32, sym33, sym34,
sym35, sym36, sym37, sym38, sym39, sym40)
bools = array.from(bool1, bool2, bool3, bool4, bool5, bool6, bool7, bool8, bool9, bool10, bool11, bool12, bool13, bool14, bool15, bool16, bool17,
bool18, bool19, bool20, bool21, bool22, bool23, bool24, bool25, bool26, bool27, bool28, bool29, bool30, bool31, bool32, bool33, bool34,
bool35, bool36, bool37, bool38, bool39, bool40)
combos = array.from(true, kickerBool, oopsBool, oelBool, insideBool, threeBarBool)
headers = array.from('Symbol', 'Kicker', 'Oops', 'OEL/OEH', 'IN/EN', '3BB')
[kicker1, oel1, oeh1, oopsUp1, oopsDown1, inside1, engulf1, b3Up1, b3Dn1, bull1] = sym1.data()
[kicker2, oel2, oeh2, oopsUp2, oopsDown2, inside2, engulf2, b3Up2, b3Dn2, bull2] = sym2.data()
[kicker3, oel3, oeh3, oopsUp3, oopsDown3, inside3, engulf3, b3Up3, b3Dn3, bull3] = sym3.data()
[kicker4, oel4, oeh4, oopsUp4, oopsDown4, inside4, engulf4, b3Up4, b3Dn4, bull4] = sym4.data()
[kicker5, oel5, oeh5, oopsUp5, oopsDown5, inside5, engulf5, b3Up5, b3Dn5, bull5] = sym5.data()
[kicker6, oel6, oeh6, oopsUp6, oopsDown6, inside6, engulf6, b3Up6, b3Dn6, bull6] = sym6.data()
[kicker7, oel7, oeh7, oopsUp7, oopsDown7, inside7, engulf7, b3Up7, b3Dn7, bull7] = sym7.data()
[kicker8, oel8, oeh8, oopsUp8, oopsDown8, inside8, engulf8, b3Up8, b3Dn8, bull8] = sym8.data()
[kicker9, oel9, oeh9, oopsUp9, oopsDown9, inside9, engulf9, b3Up9, b3Dn9, bull9] = sym9.data()
[kicker10, oel10, oeh10, oopsUp10, oopsDown10, inside10, engulf10, b3Up10, b3Dn10, bull10] = sym10.data()
[kicker11, oel11, oeh11, oopsUp11, oopsDown11, inside11, engulf11, b3Up11, b3Dn11, bull11] = sym11.data()
[kicker12, oel12, oeh12, oopsUp12, oopsDown12, inside12, engulf12, b3Up12, b3Dn12, bull12] = sym12.data()
[kicker13, oel13, oeh13, oopsUp13, oopsDown13, inside13, engulf13, b3Up13, b3Dn13, bull13] = sym13.data()
[kicker14, oel14, oeh14, oopsUp14, oopsDown14, inside14, engulf14, b3Up14, b3Dn14, bull14] = sym14.data()
[kicker15, oel15, oeh15, oopsUp15, oopsDown15, inside15, engulf15, b3Up15, b3Dn15, bull15] = sym15.data()
[kicker16, oel16, oeh16, oopsUp16, oopsDown16, inside16, engulf16, b3Up16, b3Dn16, bull16] = sym16.data()
[kicker17, oel17, oeh17, oopsUp17, oopsDown17, inside17, engulf17, b3Up17, b3Dn17, bull17] = sym17.data()
[kicker18, oel18, oeh18, oopsUp18, oopsDown18, inside18, engulf18, b3Up18, b3Dn18, bull18] = sym18.data()
[kicker19, oel19, oeh19, oopsUp19, oopsDown19, inside19, engulf19, b3Up19, b3Dn19, bull19] = sym19.data()
[kicker20, oel20, oeh20, oopsUp20, oopsDown20, inside20, engulf20, b3Up20, b3Dn20, bull20] = sym20.data()
[kicker21, oel21, oeh21, oopsUp21, oopsDown21, inside21, engulf21, b3Up21, b3Dn21, bull21] = sym21.data()
[kicker22, oel22, oeh22, oopsUp22, oopsDown22, inside22, engulf22, b3Up22, b3Dn22, bull22] = sym22.data()
[kicker23, oel23, oeh23, oopsUp23, oopsDown23, inside23, engulf23, b3Up23, b3Dn23, bull23] = sym23.data()
[kicker24, oel24, oeh24, oopsUp24, oopsDown24, inside24, engulf24, b3Up24, b3Dn24, bull24] = sym24.data()
[kicker25, oel25, oeh25, oopsUp25, oopsDown25, inside25, engulf25, b3Up25, b3Dn25, bull25] = sym25.data()
[kicker26, oel26, oeh26, oopsUp26, oopsDown26, inside26, engulf26, b3Up26, b3Dn26, bull26] = sym26.data()
[kicker27, oel27, oeh27, oopsUp27, oopsDown27, inside27, engulf27, b3Up27, b3Dn27, bull27] = sym27.data()
[kicker28, oel28, oeh28, oopsUp28, oopsDown28, inside28, engulf28, b3Up28, b3Dn28, bull28] = sym28.data()
[kicker29, oel29, oeh29, oopsUp29, oopsDown29, inside29, engulf29, b3Up29, b3Dn29, bull29] = sym29.data()
[kicker30, oel30, oeh30, oopsUp30, oopsDown30, inside30, engulf30, b3Up30, b3Dn30, bull30] = sym30.data()
[kicker31, oel31, oeh31, oopsUp31, oopsDown31, inside31, engulf31, b3Up31, b3Dn31, bull31] = sym31.data()
[kicker32, oel32, oeh32, oopsUp32, oopsDown32, inside32, engulf32, b3Up32, b3Dn32, bull32] = sym32.data()
[kicker33, oel33, oeh33, oopsUp33, oopsDown33, inside33, engulf33, b3Up33, b3Dn33, bull33] = sym33.data()
[kicker34, oel34, oeh34, oopsUp34, oopsDown34, inside34, engulf34, b3Up34, b3Dn34, bull34] = sym34.data()
[kicker35, oel35, oeh35, oopsUp35, oopsDown35, inside35, engulf35, b3Up35, b3Dn35, bull35] = sym35.data()
[kicker36, oel36, oeh36, oopsUp36, oopsDown36, inside36, engulf36, b3Up36, b3Dn36, bull36] = sym36.data()
[kicker37, oel37, oeh37, oopsUp37, oopsDown37, inside37, engulf37, b3Up37, b3Dn37, bull37] = sym37.data()
[kicker38, oel38, oeh38, oopsUp38, oopsDown38, inside38, engulf38, b3Up38, b3Dn38, bull38] = sym38.data()
[kicker39, oel39, oeh39, oopsUp39, oopsDown39, inside39, engulf39, b3Up39, b3Dn39, bull39] = sym39.data()
[kicker40, oel40, oeh40, oopsUp40, oopsDown40, inside40, engulf40, b3Up40, b3Dn40, bull40] = sym40.data()
//----------data arrays for loops----------//
kickers = array.from(kicker1, kicker2, kicker3, kicker4, kicker5, kicker6, kicker7, kicker8, kicker9, kicker10, kicker11,
kicker12, kicker13, kicker14, kicker15, kicker16, kicker17, kicker18, kicker19, kicker20, kicker21, kicker22, kicker23,
kicker24, kicker25, kicker26, kicker27, kicker28, kicker29, kicker30, kicker31, kicker32, kicker33, kicker34, kicker35,
kicker36, kicker37, kicker38, kicker39, kicker40)
oels = array.from(oel1, oel2, oel3, oel4, oel5, oel6, oel7, oel8, oel9, oel10, oel11, oel12, oel13, oel14, oel15, oel16,
oel17, oel18, oel19, oel20, oel21, oel22, oel23, oel24, oel25, oel26, oel27, oel28, oel29, oel30, oel31, oel32, oel33,
oel34, oel35, oel36, oel37, oel38, oel39, oel40)
oehs = array.from(oeh1, oeh2, oeh3, oeh4, oeh5, oeh6, oeh7, oeh8, oeh9, oeh10, oeh11, oeh12, oeh13, oeh14, oeh15, oeh16,
oeh17, oeh18, oeh19, oeh20, oeh21, oeh22, oeh23, oeh24, oeh25, oeh26, oeh27, oeh28, oeh29, oeh30, oeh31, oeh32, oeh33,
oeh34, oeh35, oeh36, oeh37, oeh38, oeh39, oeh40)
oups = array.from(oopsUp1, oopsUp2, oopsUp3, oopsUp4, oopsUp5, oopsUp6, oopsUp7, oopsUp8, oopsUp9, oopsUp10, oopsUp11, oopsUp12,
oopsUp13, oopsUp14, oopsUp15, oopsUp16, oopsUp17, oopsUp18, oopsUp19, oopsUp20, oopsUp21, oopsUp22, oopsUp23, oopsUp24,
oopsUp25, oopsUp26, oopsUp27, oopsUp28, oopsUp29, oopsUp30, oopsUp31, oopsUp32, oopsUp33, oopsUp34, oopsUp35, oopsUp36,
oopsUp37, oopsUp38, oopsUp39, oopsUp40)
odns = array.from(oopsDown1, oopsDown2, oopsDown3, oopsDown4, oopsDown5, oopsDown6, oopsDown7, oopsDown8, oopsDown9, oopsDown10,
oopsDown11, oopsDown12, oopsDown13, oopsDown14, oopsDown15, oopsDown16, oopsDown17, oopsDown18, oopsDown19, oopsDown20,
oopsDown21, oopsDown22, oopsDown23, oopsDown24, oopsDown25, oopsDown26, oopsDown27, oopsDown28, oopsDown29, oopsDown30,
oopsDown31, oopsDown32, oopsDown33, oopsDown34, oopsDown35, oopsDown36, oopsDown37, oopsDown38, oopsDown39, oopsDown40)
ins = array.from(inside1, inside2, inside3, inside4, inside5, inside6, inside7, inside8, inside9, inside10, inside11, inside12,
inside13, inside14, inside15, inside16, inside17, inside18, inside19, inside20, inside21, inside22, inside23, inside24,
inside25, inside26, inside27, inside28, inside29, inside30, inside31, inside32, inside33, inside34, inside35, inside36,
inside37, inside38, inside39, inside40)
ens = array.from(engulf1, engulf2, engulf3, engulf4, engulf5, engulf6, engulf7, engulf8, engulf9, engulf10, engulf11, engulf12,
engulf13, engulf14, engulf15, engulf16, engulf17, engulf18, engulf19, engulf20, engulf21, engulf22, engulf23, engulf24,
engulf25, engulf26, engulf27, engulf28, engulf29, engulf30, engulf31, engulf32, engulf33, engulf34, engulf35, engulf36,
engulf37, engulf38, engulf39, engulf40)
b3ups = array.from(b3Up1, b3Up2, b3Up3, b3Up4, b3Up5, b3Up6, b3Up7, b3Up8, b3Up9, b3Up10, b3Up11, b3Up12, b3Up13, b3Up14,
b3Up15, b3Up16, b3Up17, b3Up18, b3Up19, b3Up20, b3Up21, b3Up22, b3Up23, b3Up24, b3Up25, b3Up26, b3Up27, b3Up28, b3Up29,
b3Up30, b3Up31, b3Up32, b3Up33, b3Up34, b3Up35, b3Up36, b3Up37, b3Up38, b3Up39, b3Up40)
b3dns = array.from(b3Dn1, b3Dn2, b3Dn3, b3Dn4, b3Dn5, b3Dn6, b3Dn7, b3Dn8, b3Dn9, b3Dn10, b3Dn11, b3Dn12, b3Dn13, b3Dn14,
b3Dn15, b3Dn16, b3Dn17, b3Dn18, b3Dn19, b3Dn20, b3Dn21, b3Dn22, b3Dn23, b3Dn24, b3Dn25, b3Dn26, b3Dn27, b3Dn28, b3Dn29,
b3Dn30, b3Dn31, b3Dn32, b3Dn33, b3Dn34, b3Dn35, b3Dn36, b3Dn37, b3Dn38, b3Dn39, b3Dn40)
bulls = array.from(bull1, bull2, bull3, bull4, bull5, bull6, bull7, bull8, bull9, bull10, bull11, bull12, bull13, bull14,
bull15, bull16, bull17, bull18, bull19, bull20, bull21, bull22, bull23, bull24, bull25, bull26, bull27, bull28, bull29,
bull30, bull31, bull32, bull33, bull34, bull35, bull36, bull37, bull38, bull39, bull40)
//----------display----------//
if barstate.islast
for i = 0 to 5
if combos.get(i)
table.cell(screener, i, 0, headers.get(i), text_color = tblHeaderCol, text_size = tableTextSize.textsize(), width = 5, bgcolor = tableBgColor)
for i = 0 to 39
if bools.get(i) == true
table.cell(screener, 0, i+1, str.tostring(syms.get(i).splitter()), text_color = tblHeaderCol, text_size = tableTextSize.textsize(), bgcolor = tableBgColor)
if kickerBool
for i = 0 to 39
if bools.get(i) == true
table.cell(screener, 1, i+1, kickers.get(i) == true ? 'Kicker' : na, bgcolor = kickers.get(i) == true ? bullColor : tableBgColor, text_color = tableTextColor, text_size = tableTextSize.textsize())
if oopsBool
for i = 0 to 39
if bools.get(i) == true
table.cell(screener, 2, i+1, oups.get(i) == true ? 'Oops' : odns.get(i) == true ? 'Oops' : na, bgcolor = oups.get(i) == true ? bullColor : odns.get(i) == true ? bearColor : tableBgColor, text_color = tableTextColor, text_size = tableTextSize.textsize())
if oelBool
for i = 0 to 39
if bools.get(i) == true
table.cell(screener, 3, i+1, oels.get(i) == true ? 'OEL' : oehs.get(i) == true ? 'OEH' : na, bgcolor = oels.get(i) == true ? bullColor : oehs.get(i) == true ? bearColor : tableBgColor, text_color = tableTextColor, text_size = tableTextSize.textsize())
if insideBool
for i = 0 to 39
if bools.get(i) == true
table.cell(screener, 4, i+1, ins.get(i) == true ? 'Inside' : ens.get(i) == true ? 'Engulfing' : na, bgcolor = ins.get(i) == true ? bullColor : ens.get(i) == true ? bulls.get(i) == true ? bullColor : bearColor : tableBgColor, text_color = tableTextColor, text_size = tableTextSize.textsize())
if threeBarBool
for i = 0 to 39
if bools.get(i) == true
table.cell(screener, 5, i+1, b3ups.get(i) == true or b3dns.get(i) == true ? '3BB' : na, bgcolor = b3ups.get(i) == true ? bullColor : b3dns.get(i) == true ? bearColor : tableBgColor, text_color = tableTextColor, text_size = tableTextSize.textsize())
1件のコメント