Untitled
user_0084968
plain_text
2 years ago
22 kB
15
Indexable
//@version=5
indicator("3P Beta", overlay = false, max_bars_back = 5000)
//volume_ok for usdcad 700, minimum volume to generate candle pattern
//avgvol for usdcad is below 800, to be in inSession avgvol needs to be under a certain low volume
//ampl for usdcad is 2, if box height is very small, make ampl higher, if box size is quite big, lower ampl
//minimum for lackvol for usdcad is 3000
//minimum for sduvol for usdcad is 1000
//minimum for news for usdcad is 3000
//minimum for volume patterns (cpt1b - cpt5b) for usdcad is 1000
//usdchf 57M volume, 1y , 4.74M, 1M, 0.96
//usdcad 60M volume, 1y, 4.82M, 1M, 1
//audusd 69M volume, 1y, 5.30M, 1M, 1.12
//eurusd 78M, volume, 1y, 5.69M, 1M, 1.24
//usdjpy 101M volume, 1y, 7.30M, 1M, 1.6
//gbpusd 118M volume, 1y, 7.43M, 1M, 1.7
//usdcad 0.0094
//eurusd 0.0087
//gbpusd 0.0119
//audusd 0.0079
//usdjpy 1.2700
//usdchf 0.0077
currentSymbol = syminfo.tickerid
symbols = array.new_string(6)
array.set(symbols, 0, "FX:USDCAD")
array.set(symbols, 1, "FX:EURUSD")
array.set(symbols, 2, "FX:USDJPY")
array.set(symbols, 3, "FX:USDCHF")
array.set(symbols, 4, "FX:AUDUSD")
array.set(symbols, 5, "FX:GBPUSD")
dcur_vals = array.new_float(6)
array.set(dcur_vals, 0, 1)
array.set(dcur_vals, 1, 1.24)
array.set(dcur_vals, 2, 1.6)
array.set(dcur_vals, 3, 0.96)
array.set(dcur_vals, 4, 1.12)
array.set(dcur_vals, 5, 1.7)
pipm_vals = array.new_float(6)
array.set(pipm_vals, 0, 1)
array.set(pipm_vals, 1, 1)
array.set(pipm_vals, 2, 90)
array.set(pipm_vals, 3, 0.82)
array.set(pipm_vals, 4, 0.84)
array.set(pipm_vals, 5, 1.27)
var float dcur = 1.0
var float pipm = 1.0
var bool rightsymbol = false
for i = 0 to 5
if currentSymbol == array.get(symbols, i)
dcur := array.get(dcur_vals, i)
pipm := array.get(pipm_vals, i)
rightsymbol := true
// Definitions
bl_ok = input(false)
enableall = input(true) and rightsymbol
lookback2 = input(2000)
volume_ok = volume>(input(700))*dcur
sizze = size.small
box_ok = input(false) or enableall
keylevels_ok = input(false) or enableall
kld_ok = input(false) or enableall
adj = input(0.0001)*pipm
dis = input(40)
day = 86400000
fvg_ok = input(false) or enableall
fvg_det = input(false) or enableall
lookback = input(400)
sens = input(0.0010)
ob_ok = input(false) or enableall
len = input(2)
borline = input(0.0004)
sborline = input(0.0016)
news_ok = input(false) or enableall
risvol_ok = input(false) or enableall
falvol_ok = input(false) or enableall
dist = input(50)
ampl = input(2)
sudIntr_ok = input(false) or enableall
lackvol_ok = input(false) or enableall
sudvol_ok = input(false) or enableall
candlepat_ok = input(false) or enableall
cptper = input(0.85)
voldif_ok = input(false) or enableall
multp=input(5)
color_candles = input(false) or enableall
cp_ok = input(false) or enableall
bl = input(0.26)
mcs = input(0.67)
pmval = input(0.0)
b61_ok = cp_ok, b51_ok = cp_ok, b41_ok = cp_ok, b31_ok = cp_ok
r61_ok = cp_ok, r51_ok = cp_ok, r41_ok = cp_ok, r31_ok = cp_ok
b62_ok = cp_ok, b52_ok = cp_ok, b42_ok = cp_ok, b32_ok = cp_ok
r62_ok = cp_ok, r52_ok = cp_ok, r42_ok = cp_ok, r32_ok = cp_ok
b63_ok = cp_ok, b53_ok = cp_ok, b43_ok = cp_ok, b21_ok = cp_ok
r63_ok = cp_ok, r53_ok = cp_ok, r43_ok = cp_ok, r21_ok = cp_ok
b64_ok = cp_ok, b54_ok = cp_ok, b44_ok = cp_ok
r64_ok = cp_ok, r54_ok = cp_ok, r44_ok = cp_ok
b65_ok = cp_ok, b55_ok = cp_ok
r65_ok = cp_ok, r55_ok = cp_ok
b66_ok = cp_ok
r66_ok = cp_ok
bhc_ok = cp_ok
rhc_ok = cp_ok
tws_ok = cp_ok
tbs_ok = cp_ok
//2nd Definitions
c1=close,c2=close[1],c3=close[2],o1=open,o2=open[1],o3=open[2],h1=high,h2=high[1],h3=high[2],l1=low,l2=low[1],l3=low[2]
c4=close[3],c5=close[4],c6=close[5],o4=open[3],o5=open[4],o6=open[5],h4=high[3],h5=high[4],h6=high[5],l4=low[3],l5=low[4],l6=low[5]
vol = volume
avgvol = (volume + volume[1]+ volume[2])/3
atr=ta.atr(14)
atr2=ta.atr(7)
atr3=ta.atr(2)
inSession = ((atr<0.0007*pipm or atr2<0.0007*pipm or atr3<0.0007*pipm) and avgvol<800*dcur) and ((time >= timestamp(year, month, dayofmonth, 12, 0)) or (time <= timestamp(year, month, dayofmonth, 3, 00)))
//Boxes
var float low_val = 0.0
var float high_val = 0.0
startTime = 0
startTime := inSession and not inSession[1] ? time : startTime[1]
endTime = 0
endTime := not inSession and inSession[1] ? time : endTime[1]
if inSession and not inSession[1]
low_val := low
high_val := high
if inSession and startTime < timestamp(year, month, dayofmonth, 18, 0) and startTime > (timestamp(year, month, dayofmonth, 12, 00)) and time > timestamp(year, 8, 20, 0, 0)
if low < low_val
low_val := low
low_val
if high > high_val
high_val := high
high_val
//checks if below/above middle line of box
var bool belowLine_b = na
var bool belowLine_r = na
if bl_ok
belowLine_b := (c1<((high_val + low_val) / 2))
belowLine_r := (c1>((high_val + low_val) / 2))
else
belowLine_b := true
belowLine_r := true
boxsize = high_val - low_val
//Key Levels
var float prevhih2 = na
var float prevlol2 = na
var float prevtop2 = na
var float prevbot2 = na
var box res21 = na
var box sup21 = na
var color impcolor = na
var bool shouldPlot6 = na
var bool shouldPlot7 = na
var float hih2 = na
var float lol2 = na
var float top2 = na
var float bot2 = na
bounce_conditions_b(_level) =>
conb = low < _level+adj*2 and low > _level-adj*2 and kld_ok and (c4>_level and c3>_level and c2>_level and c1>_level) and vol>1000*dcur and belowLine_b
bounce_conditions_r(_level) =>
conr = high > _level-adj*2 and high < _level+adj*2 and kld_ok and (c4<_level and c3<_level and c2<_level and c1<_level) and vol>1000 and belowLine_r
if keylevels_ok and bar_index>last_bar_index-lookback2
hih2 := ta.pivothigh(high, dis, dis)
lol2 := ta.pivotlow(low, dis, dis)
top2 := ta.valuewhen(hih2, high[dis], 0)
bot2 := ta.valuewhen(lol2, low[dis], 0)
if bar_index == 0
prevtop2 := top2
if bar_index == 0
prevbot2 := bot2
prevbot2 := bot2
prevtop2 := top2
if kld_ok
var int max_lookback = 500
bounce_detected_w = false
bounce_detected_m = false
bounce_detected_s = false
for i = 0 to max_lookback
if not na(top2[i]) and bounce_conditions_b(top2[i])
bounce_detected_w := true
if not na(bot2[i]) and bounce_conditions_b(bot2[i])
bounce_detected_w := true
var int barsSincePattern6 = 0
shouldPlot6 := bounce_detected_w and (barsSincePattern6 >= 7 or na(barsSincePattern6))
barsSincePattern6 := shouldPlot6 ? 0 : barsSincePattern6 + 1
var int max_lookback_r = 500
bounce_detected_r_w = false
bounce_detected_r_m = false
bounce_detected_r_s = false
for i = 0 to max_lookback_r
if not na(top2[i]) and bounce_conditions_r(top2[i])
bounce_detected_r_w := true
if not na(bot2[i]) and bounce_conditions_r(bot2[i])
bounce_detected_r_w := true
var int barsSincePattern7 = 0
shouldPlot7 := bounce_detected_r_w and (barsSincePattern7 >= 7 or na(barsSincePattern7))
barsSincePattern7 := shouldPlot7 ? 0 : barsSincePattern7 + 1
//Volume Divergence rising
var bool risvol = na
var bool risvol1 = na
var bool risvol2 = na
var bool risvol3 = na
var bool risvol4 = na
var bool red = na
var bool green = na
if risvol_ok and bar_index>last_bar_index-lookback2
risvol1 := vol > ta.highest(vol[1], dist)
for V = 10 to dist
for tes = 1 to 10
risvol4 := (vol[V] > vol[V+tes])
for am = 1 to (V-1)
risvol2 := (vol > vol[V-am])
risvol3 := risvol3 or (vol[V-am] < (0.34 * vol[V]))
risvol := risvol1 and risvol2 and risvol3 and risvol4 and not risvol[1] and not risvol[2] and not risvol[2] and not risvol[3] and not risvol[4] and not risvol[5] and not risvol[6] and not risvol[7] and not risvol[8] and not risvol[9] and not risvol[10]
red := risvol and close<open[2] and belowLine_r
green := risvol and close>open[2] and belowLine_b
//Volume falling
var bool redr = na
var bool greenr = na
if falvol_ok and bar_index>last_bar_index-lookback2
falvol1 = vol*ampl < ta.highest(vol, 15)
falvol = falvol1 and falvol_ok and (time == timestamp(year, month, dayofmonth, 0, 30) or time == timestamp(year, month, dayofmonth, 7, 0) or time == timestamp(year, month, dayofmonth, 13, 0))
redr := falvol and close>(((high_val + low_val)/2)+boxsize*ampl)
greenr := falvol and close<(((high_val + low_val)/2)-boxsize*ampl)
//fvg
var bool shouldPlot8 = na
var bool shouldPlot9 = na
bounce_conditions_bb(_level) =>
conbb = low < _level and fvg_det
bounce_conditions_bb2(_level) =>
conbb = low > _level and fvg_det
bounce_conditions_rr(_level) =>
conrr = high > _level and fvg_det
bounce_conditions_rr2(_level) =>
conrr = high < _level and fvg_det
if fvg_ok and bar_index>last_bar_index-lookback
var bool cond_b = na
var bool cond_r = na
if ((c2-o2>sens*pipm) or (o2-c2>sens*pipm))
if ((h3<l1) or (l3>h1))
if close[1]>open[1]
if l1-h3>0.0002*pipm
cond_b := true
if open[1]>close[1]
if l3-h1>0.0002*pipm
cond_r := true
else
cond_b := false
cond_r := false
var int max_lookbackk = lookback
bounce_det = false
bounce_det2 = false
for i = 0 to max_lookbackk
if not na(low[i])
if bounce_conditions_bb(low[i])
if cond_b[i]
if not na(high[2+i])
if bounce_conditions_bb2(high[2+i])
bounce_det := true
if not na(high[i])
if bounce_conditions_rr(high[i])
if cond_r[i]
if not na(low[2+i])
if bounce_conditions_rr2(low[2+i])
bounce_det2 := true
var int barsSincePattern8 = 0
shouldPlot8 := bounce_det and (barsSincePattern8 >= 5 or na(barsSincePattern8))
barsSincePattern8 := shouldPlot8 ? 0 : barsSincePattern8 + 1
var int barsSincePattern9 = 0
shouldPlot9 := bounce_det2 and (barsSincePattern9 >= 5 or na(barsSincePattern9))
barsSincePattern9 := shouldPlot9 ? 0 : barsSincePattern9 + 1
//Order Blocks
bounce_conditions_rr3(_level) =>
conr = high > _level
bounce_conditions_rr4(_level) =>
conr = high < _level
bounce_conditions_bb3(_level) =>
conb = low < _level
bounce_conditions_bb4(_level) =>
conb = low > _level
var bool shouldPlot10 = na
var bool shouldPlot11 = na
if ob_ok
left_highest = ta.highest(vol[len+1], len)
right_highest = ta.highest(vol, len)
barr=900000
volhi = vol[len] > ta.highest(vol[len+1], len) and vol[len] > ta.highest(vol, len)
hi = high[len] == ta.pivothigh(len,len)
lo = low[len] == ta.pivotlow(len,len)
var bool cond_b2 = na
var bool cond_r2 = na
if volhi
if lo
cond_b2 := true
if hi
cond_r2 := true
else
cond_b2 := false
cond_r2 := false
var box[] boxes = array.new_box()
var float[] bbobsize_values = array.new_float()
var box[] boxes_r = array.new_box()
var float[] robsize_values = array.new_float()
var float[] bobsize_values = array.new_float()
var float[] rrobsize_values = array.new_float()
var float bbobsize_value = na
var float robsize_value = na
var float bobsize_value = na
var float rrobsize_value = na
bobsize_value := close[len]-low[len] < borline ? high[len] : close[len]
robsize_value := high[len]-close[len] < borline ? low[len] : close[len]
bbobsize_value := close[len]-low[len] > sborline ? (close[len]+low[len])/2 : low[len]
rrobsize_value := high[len]-close[len] > sborline ? (high[len]+close[len])/2 : high[len]
var box bob = na
var box rob = na
if cond_b2
bob := box.new(time-barr*len, bobsize_value, timenow, bbobsize_value, xloc=xloc.bar_time, bgcolor=color.blue, border_color=color.new(color.green, 100))
array.push(boxes, bob)
array.push(bbobsize_values, bbobsize_value)
array.push(bobsize_values, bobsize_value)
if cond_r2
rob := box.new(time-barr*len, robsize_value, timenow, rrobsize_value, xloc=xloc.bar_time, bgcolor=color.orange, border_color=color.new(color.red, 100))
array.push(boxes_r, rob)
array.push(robsize_values, robsize_value)
array.push(rrobsize_values, rrobsize_value)
if array.size(boxes) > 0
for i = 0 to array.size(boxes) - 1
box_id = array.get(boxes, i)
bbobsize_value := array.get(bbobsize_values, i)
bobsize_value := array.get(bobsize_values, i)
if na(box_id) == false and ta.crossunder(close, bbobsize_value)
box.delete(box_id)
array.set(boxes, i, na)
array.set(bbobsize_values, i, na)
array.set(bobsize_values, i, na)
if array.size(boxes_r) > 0
for i = 0 to array.size(boxes_r) - 1
box_id_r = array.get(boxes_r, i)
robsize_value := array.get(robsize_values, i)
rrobsize_value := array.get(rrobsize_values, i)
if na(box_id_r) == false and ta.crossover(close, robsize_value)
box.delete(box_id_r)
array.set(boxes_r, i, na)
array.set(robsize_values, i, na)
array.set(rrobsize_values, i, na)
var int max_lookback2 = lookback2
bounce_det3 = false
for i = 0 to max_lookback2
if not na(bobsize_value[i])
if bounce_conditions_bb3(bobsize_value[i])
if cond_b2[i]
if bounce_conditions_bb4(bbobsize_value[i])
if not na(bbobsize_value[i])
if not (close[i]<bbobsize_value[i])
if (close[5]>close)
bounce_det3 := true
bounce_det4 = false
for i = 0 to max_lookback2
if not na(robsize_value[i])
if bounce_conditions_rr3(robsize_value[i])
if cond_r2[i]
if bounce_conditions_rr4(rrobsize_value[i])
if not na(rrobsize_value[i])
if not (close[i]>robsize_value[i])
if (close[5]<close)
bounce_det4 := true
var int barsSincePattern10 = 0
shouldPlot10 := bounce_det3 and (barsSincePattern10 >= 10 or na(barsSincePattern10))
barsSincePattern10 := shouldPlot10 ? 0 : barsSincePattern10 + 1
var int barsSincePattern11 = 0
shouldPlot11 := bounce_det4 and (barsSincePattern11 >= 10 or na(barsSincePattern11))
barsSincePattern11 := shouldPlot11 ? 0 : barsSincePattern11 + 1
shouldPlot62 = shouldPlot6 and vol>1500*dcur and c1-l1>0.0008*pipm and vol<3000
shouldPlot63 = shouldPlot6 and vol>3000*dcur and c1-l1>0.0012*pipm
shouldPlot61 = shouldPlot6 and not shouldPlot62 and not shouldPlot63
shouldPlot72 = shouldPlot7 and vol>1500*dcur and h1-c1>0.0008*pipm and vol<3000
shouldPlot73 = shouldPlot7 and vol>3000*dcur and h1-c1>0.0012*pipm
shouldPlot71 = shouldPlot7 and not shouldPlot72 and not shouldPlot73
shouldPlot81 = shouldPlot8 and vol<1500*dcur
shouldPlot83 = shouldPlot8 and vol>1500*dcur and ((o1-l1>(h1-l1)*0.5 and c1>o1) or (c1-l1>(h1-l1)*0.5 and o1>c1))
shouldPlot82 = shouldPlot8 and vol>1500*dcur and not shouldPlot83
shouldPlot91 = shouldPlot9 and vol<1500*dcur
shouldPlot93 = shouldPlot9 and vol>1500*dcur and ((h1-c1>(h1-l1)*0.5 and c1>o1) or (h1-o1>(h1-l1)*0.5 and o1>c1))
shouldPlot92 = shouldPlot9 and vol>1500*dcur and not shouldPlot93
shouldPlot101 = shouldPlot10 and vol<1500*dcur
shouldPlot103 = shouldPlot10 and vol>1500*dcur and ((o1-l1>(h1-l1)*0.5 and c1>o1) or (c1-l1>(h1-l1)*0.5 and o1>c1))
shouldPlot102 = shouldPlot10 and vol>1500*dcur and not shouldPlot103
shouldPlot111 = shouldPlot11 and vol<1500*dcur
shouldPlot113 = shouldPlot11 and vol>1500*dcur and ((h1-c1>(h1-l1)*0.5 and c1>o1) or (h1-o1>(h1-l1)*0.5 and o1>c1))
shouldPlot112 = shouldPlot11 and vol>1500*dcur and not shouldPlot113
//Sudden Lack of Volume
var bool lackvol1b = na
var bool lackvol2b = na
var bool lackvol3b = na
var bool lackvol1 = na
var bool lackvol2 = na
var bool lackvol3 = na
if lackvol_ok and bar_index>last_bar_index-lookback2
lackvol1b := c1>o1 and ((vol[1]*0.80)>vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>3000*dcur and belowLine_r
lackvol2b := c1>o1 and ((vol[1]*0.75)>vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>3000*dcur and belowLine_r
lackvol3b := c1>o1 and ((vol[1]*0.67)>vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>3000*dcur and belowLine_r
lackvol1 := o1>c1 and ((vol[1]*0.80)>vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>3000*dcur and belowLine_b
lackvol2 := o1>c1 and ((vol[1]*0.75)>vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>3000*dcur and belowLine_b
lackvol3 := o1>c1 and ((vol[1]*0.67)>vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>3000*dcur and belowLine_b
//Sudden Volume
var bool sudvol1b = na
var bool sudvol2b = na
var bool sudvol3b = na
var bool sudvol1 = na
var bool sudvol2 = na
var bool sudvol3 = na
if sudvol_ok and bar_index>last_bar_index-lookback2
sudvol1b := c1>o1 and ((vol[1]*1.4)<vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>1000*dcur and belowLine_b
sudvol2b := c1>o1 and ((vol[1]*1.7)<vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>1000*dcur and belowLine_b
sudvol3b := c1>o1 and ((vol[1]*2.0)<vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>1000*dcur and belowLine_b
sudvol1 := o1>c1 and ((vol[1]*1.4)<vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>1000*dcur and belowLine_r
sudvol2 := o1>c1 and ((vol[1]*1.7)<vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>1000*dcur and belowLine_r
sudvol3 := o1>c1 and ((vol[1]*2.0)<vol) and not ((time >= timestamp(year, month, dayofmonth, 12, 0))) and vol[1]>1000*dcur and belowLine_r
si_lo_ab = location.abovebar
si_lo_bb = location.belowbar
//Sudden interest
var bool sig1b = na
var bool sig1r = na
if sudIntr_ok and bar_index>last_bar_index-lookback2
sig1b := (c1-o1)>atr*1.5 and belowLine_b
sig1r := (o1-c1)>atr*1.5 and belowLine_r
//News
var bool news = na
if news_ok and bar_index>last_bar_index-lookback2
news := (vol>3000*dcur) and (h1-l1>0.0025*pipm) and (vol[1]<vol*0.5) and news_ok
//Volume Patterns
var bool cpt1b = na
var bool cpt2b = na
var bool cpt3b = na
var bool cpt4b = na
var bool cpt5b = na
var bool cpt1r = na
var bool cpt2r = na
var bool cpt3r = na
var bool cpt4r = na
var bool cpt5r = na
if candlepat_ok and bar_index>last_bar_index-lookback2
cpt1b1 = vol[2]>1000*dcur and c3>o3
cpt1b2 = vol[1]<vol[2]*cptper and c2<o2
cpt1b3 = vol>vol[2] and c1>o1
cpt1b := cpt1b1 and cpt1b2 and cpt1b3 and belowLine_b
cpt1r1 = vol[2]>1000*dcur and c3<o3
cpt1r2 = vol[1]<vol[2]*cptper and c2>o2
cpt1r3 = vol>vol[2] and c1<o1
cpt1r := cpt1r1 and cpt1r2 and cpt1r3 and belowLine_r
cpt2b1 = vol[3]>1000*dcur and c4>o4
cpt2b2 = vol[2]<vol[3]*cptper and c3<o3
cpt2b3 = vol[1]<vol[3]*cptper and c2<o2
cpt2b4 = vol>vol[3] and c1>o1
cpt2b := cpt2b1 and cpt2b2 and cpt2b3 and cpt2b4 and belowLine_b
cpt2r1 = vol[3]>1000*dcur and c4<o4
cpt2r2 = vol[2]<vol[3]*cptper and c3>o3
cpt2r3 = vol[1]<vol[3]*cptper and c2>o2
cpt2r4 = vol>vol[3] and c1<o1
cpt2r := cpt2r1 and cpt2r2 and cpt2r3 and cpt2r4 and belowLine_r
cpt3b1 = vol[4]>1000*dcur and c5>o5
cpt3b2 = vol[3]<vol[4]*cptper and c4<o4
cpt3b3 = vol[2]<vol[4]*cptper and c3<o3
cpt3b4 = vol[1]<vol[4]*cptper and c2<o2
cpt3b5 = vol>vol[4] and c1>o1
cpt3b := cpt3b1 and cpt3b2 and cpt3b3 and cpt3b4 and cpt3b5 and belowLine_b
cpt3r1 = vol[4]>1000*dcur and c5<o5
cpt3r2 = vol[3]<vol[4]*cptper and c4>o4
cpt3r3 = vol[2]<vol[4]*cptper and c3>o3
cpt3r4 = vol[1]<vol[4]*cptper and c2>o2
cpt3r5 = vol>vol[4] and c1<o1
cpt3r := cpt3r1 and cpt3r2 and cpt3r3 and cpt3r4 and cpt3r5 and belowLine_r
cpt4b0 = vol[2]>vol[3]
cpt4b1 = c3<o3
cpt4b2 = vol[1]>vol[2] and c2<o2
cpt4b3 = vol>vol[1] and c1>o1
cpt4b4 = (time >= timestamp(year, month, dayofmonth, 0, 30) and time <= timestamp(year, month, dayofmonth, 3, 15)) or (time >= timestamp(year, month, dayofmonth, 6, 0) and time <= timestamp(year, month, dayofmonth, 10, 15))
cpt4b := cpt4b1 and cpt4b2 and cpt4b3 and cpt4b4 and cpt4b0 and belowLine_b
cpt4r0 = vol[2]>vol[3]
cpt4r1 = c3>o3
cpt4r2 = vol[1]>vol[2] and c2>o2
cpt4r3 = vol>vol[1] and c1<o1
cpt4r4 = (time >= timestamp(year, month, dayofmonth, 0, 30) and time <= timestamp(year, month, dayofmonth, 3, 15)) or (time >= timestamp(year, month, dayofmonth, 6, 0) and time <= timestamp(year, month, dayofmonth, 10, 15))
cpt4r := cpt4r1 and cpt4r2 and cpt4r3 and cpt4r4 and cpt4r0 and belowLine_r
cpt5b1 = c4<o4
cpt5b2 = (vol[2]>vol[3]*1.34 or vol[2]>vol[1]*1.34)and c3>o3
cpt5b3 = c2<o2
cpt5b4 = (vol>vol[3]*1.34 or vol>vol[1]*1.34) and vol>vol[2] and c1>o1 and vol>1000*dcur and (vol[1]+vol[3]<vol+vol[2])
cpt5b := cpt5b1 and cpt5b2 and cpt5b3 and cpt5b4 and belowLine_b
cpt5r1 = c4>o4
cpt5r2 = (vol[2]>vol[3]*1.34 or vol[2]>vol[1]*1.34) and c3<o3
cpt5r3 = c2>o2
cpt5r4 = (vol>vol[3]*1.34 or vol>vol[1]*1.34) and vol>vol[2] and c1<o1 and vol>1000*dcur and (vol[1]+vol[3]<vol+vol[2])
cpt5r := cpt5r1 and cpt5r2 and cpt5r3 and cpt5r4 and belowLine_rEditor is loading...