Liquidity Thermal Map visualizes where the highest traded volume has accumulated across price levels over a fixed lookback period. Instead of plotting classic volume profiles with bars, the indicator builds a horizontal thermal heatmap directly on the chart, highlighting areas of strong and weak liquidity using smooth color gradients.
This makes it easy to identify high-interest price zones, volume clusters, and the dominant Point of Control (PoC) at a glance.
Original concept: https://www.tradingview.com/script/G30eUYdH-Liquidity-Thermal-Map-BigBeluga/
This is a daily chart of TSLA. Notice when price enters a Liquidity Zone, price reacted to it.
FEATURES:
Thermal Gradient Mapping — Volume intensity is translated into a color gradient, forming a continuous liquidity heatmap.
Point of Control (PoC) — The price level with the highest accumulated volume is highlighted using a distinct PoC color.
Directional Liquidity Breakdown — The label at the top summarizes how total traded volume is distributed between bullish and bearish candles within the analyzed range.
Buy Liquidity (Green) — Represents the total traded volume during candles that closed higher than they opened.
This approximates aggressive buying pressure and shows how much volume has accumulated below the current price.
Sell Liquidity (Red) — Represents the total traded volume during candles that closed lower than they opened.
This reflects periods where selling pressure dominated and shows how much volume accumulated above the current price.
Liquidity Percentage — Each side displays the percentage share of total traded volume.
This helps quickly identify which side of the market controlled the majority of activity within the lookback range.
Volume Imbalance — The Imbalance value at the top shows the absolute difference between total buy and sell liquidity.
HOW TO USE:
Identify Liquidity Clusters — Bright or dense zones indicate prices where significant trading activity occurred.
Support & Resistance Context — High-volume zones often act as reaction areas for price.
PoC Tracking — The PoC shows where the market spent the most time and volume.
Breakout Awareness — Moves away from dense liquidity areas may signal expansion into lower-volume zones.
Contextual Analysis — Use the heatmap as a background liquidity reference alongside trend or structure tools.
CONCLUSION:
Liquidity Thermal Map provides a clean, intuitive way to visualize where liquidity truly exists across price.
By transforming raw volume data into a continuous thermal layer, it helps traders quickly locate dominant trading zones, identify high-interest price levels, and better understand how volume is distributed within the market.
Another cool thing to do is to load the indicator twice, and have one set to Balanced Profile, and set the other one to Shallow Profile. Now you can have short and medium timeframes on the same chart. Here is an example.
Here is a Daily chart of NVDA. Notice how price reacts to these zones. These are good areas to place straddle options.
Code:
This makes it easy to identify high-interest price zones, volume clusters, and the dominant Point of Control (PoC) at a glance.
Original concept: https://www.tradingview.com/script/G30eUYdH-Liquidity-Thermal-Map-BigBeluga/
This is a daily chart of TSLA. Notice when price enters a Liquidity Zone, price reacted to it.
FEATURES:
Thermal Gradient Mapping — Volume intensity is translated into a color gradient, forming a continuous liquidity heatmap.
Point of Control (PoC) — The price level with the highest accumulated volume is highlighted using a distinct PoC color.
Directional Liquidity Breakdown — The label at the top summarizes how total traded volume is distributed between bullish and bearish candles within the analyzed range.
Buy Liquidity (Green) — Represents the total traded volume during candles that closed higher than they opened.
This approximates aggressive buying pressure and shows how much volume has accumulated below the current price.
Sell Liquidity (Red) — Represents the total traded volume during candles that closed lower than they opened.
This reflects periods where selling pressure dominated and shows how much volume accumulated above the current price.
Liquidity Percentage — Each side displays the percentage share of total traded volume.
This helps quickly identify which side of the market controlled the majority of activity within the lookback range.
Volume Imbalance — The Imbalance value at the top shows the absolute difference between total buy and sell liquidity.
HOW TO USE:
Identify Liquidity Clusters — Bright or dense zones indicate prices where significant trading activity occurred.
Support & Resistance Context — High-volume zones often act as reaction areas for price.
PoC Tracking — The PoC shows where the market spent the most time and volume.
Breakout Awareness — Moves away from dense liquidity areas may signal expansion into lower-volume zones.
Contextual Analysis — Use the heatmap as a background liquidity reference alongside trend or structure tools.
CONCLUSION:
Liquidity Thermal Map provides a clean, intuitive way to visualize where liquidity truly exists across price.
By transforming raw volume data into a continuous thermal layer, it helps traders quickly locate dominant trading zones, identify high-interest price levels, and better understand how volume is distributed within the market.
Another cool thing to do is to load the indicator twice, and have one set to Balanced Profile, and set the other one to Shallow Profile. Now you can have short and medium timeframes on the same chart. Here is an example.
Here is a Daily chart of NVDA. Notice how price reacts to these zones. These are good areas to place straddle options.
Code:
Code:
# Liquidity Thermal Map [BigBeluga]
# Converted by Chewie 8/15/2026
declare upper;
DefineGlobalColor("POC", CreateColor(255, 255, 255));
DefineGlobalColor("R1", CreateColor( 54, 35, 35));
DefineGlobalColor("R2", CreateColor( 77, 41, 41));
DefineGlobalColor("R3", CreateColor( 101, 46, 46));
DefineGlobalColor("R4", CreateColor( 125, 52, 52));
DefineGlobalColor("R5", CreateColor(148, 57, 57));
DefineGlobalColor("R6", CreateColor(172, 62, 62));
DefineGlobalColor("R7", CreateColor(250, 150, 150));
DefineGlobalColor("R8", CreateColor(240, 50, 50));
DefineGlobalColor("G1", CreateColor(35, 53, 40));
DefineGlobalColor("G2", CreateColor(40, 75, 51));
DefineGlobalColor("G3", CreateColor(45, 98, 61));
DefineGlobalColor("G4", CreateColor(51, 120, 72));
DefineGlobalColor("G5", CreateColor(56, 143, 82));
DefineGlobalColor("G6", CreateColor(61,165, 92));
DefineGlobalColor("G7", CreateColor(150,250, 150));
DefineGlobalColor("G8", CreateColor(50,240, 50));
# ═══════════════════════════════════════════════════════════
# INPUTS
# ═══════════════════════════════════════════════════════════
input profileDepth = {default "Balanced Profile", "Shallow Profile", "Deep Profile"};
input thermalSensitivity = {default "Smooth", "Balanced", "High Contrast"};
input hideActiveCandleColor = yes;
def period =
if profileDepth == profileDepth."Shallow Profile" then 100
else if profileDepth == profileDepth."Deep Profile" then 600
else 300;
def gradMin =
if thermalSensitivity == thermalSensitivity."High Contrast" then 0.5
else if thermalSensitivity == thermalSensitivity."Smooth" then 0.0
else 0.25;
# ═══════════════════════════════════════════════════════════
# RANGE & BIN GEOMETRY
# ═══════════════════════════════════════════════════════════
def H = Highest(high, period);
def L = Lowest(low, period);
def step = (H - L) / 31;
def lv00 = L + step * 0; def lv01 = L + step * 1; def lv02 = L + step * 2;
def lv03 = L + step * 3; def lv04 = L + step * 4; def lv05 = L + step * 5;
def lv06 = L + step * 6; def lv07 = L + step * 7; def lv08 = L + step * 8;
def lv09 = L + step * 9; def lv10 = L + step * 10; def lv11 = L + step * 11;
def lv12 = L + step * 12; def lv13 = L + step * 13; def lv14 = L + step * 14;
def lv15 = L + step * 15; def lv16 = L + step * 16; def lv17 = L + step * 17;
def lv18 = L + step * 18; def lv19 = L + step * 19; def lv20 = L + step * 20;
def lv21 = L + step * 21; def lv22 = L + step * 22; def lv23 = L + step * 23;
def lv24 = L + step * 24; def lv25 = L + step * 25; def lv26 = L + step * 26;
def lv27 = L + step * 27; def lv28 = L + step * 28; def lv29 = L + step * 29;
def lv30 = L + step * 30;
# ═══════════════════════════════════════════════════════════
# VOLUME ACCUMULATION PER BIN
# ═══════════════════════════════════════════════════════════
script binVol {
input binBottom = 0.0;
input stepSize = 0.0;
input lookback = 300;
def mid = binBottom + stepSize / 2;
plot vol = fold k = 0 to lookback with s = 0.0 do
s + (if AbsValue(close[k] - mid) < stepSize then volume[k] else 0.0);
}
def vol00 = binVol(lv00, step, period); def vol01 = binVol(lv01, step, period);
def vol02 = binVol(lv02, step, period); def vol03 = binVol(lv03, step, period);
def vol04 = binVol(lv04, step, period); def vol05 = binVol(lv05, step, period);
def vol06 = binVol(lv06, step, period); def vol07 = binVol(lv07, step, period);
def vol08 = binVol(lv08, step, period); def vol09 = binVol(lv09, step, period);
def vol10 = binVol(lv10, step, period); def vol11 = binVol(lv11, step, period);
def vol12 = binVol(lv12, step, period); def vol13 = binVol(lv13, step, period);
def vol14 = binVol(lv14, step, period); def vol15 = binVol(lv15, step, period);
def vol16 = binVol(lv16, step, period); def vol17 = binVol(lv17, step, period);
def vol18 = binVol(lv18, step, period); def vol19 = binVol(lv19, step, period);
def vol20 = binVol(lv20, step, period); def vol21 = binVol(lv21, step, period);
def vol22 = binVol(lv22, step, period); def vol23 = binVol(lv23, step, period);
def vol24 = binVol(lv24, step, period); def vol25 = binVol(lv25, step, period);
def vol26 = binVol(lv26, step, period); def vol27 = binVol(lv27, step, period);
def vol28 = binVol(lv28, step, period); def vol29 = binVol(lv29, step, period);
def vol30 = binVol(lv30, step, period);
# ═══════════════════════════════════════════════════════════
# POC
# ═══════════════════════════════════════════════════════════
def mx0=Max(vol00,vol01); def mx1=Max(vol02,vol03); def mx2=Max(vol04,vol05);
def mx3=Max(vol06,vol07); def mx4=Max(vol08,vol09); def mx5=Max(vol10,vol11);
def mx6=Max(vol12,vol13); def mx7=Max(vol14,vol15); def mx8=Max(vol16,vol17);
def mx9=Max(vol18,vol19); def mx10=Max(vol20,vol21); def mx11=Max(vol22,vol23);
def mx12=Max(vol24,vol25); def mx13=Max(vol26,vol27); def mx14=Max(vol28,vol29);
def mxA=Max(mx0,mx1); def mxB=Max(mx2,mx3); def mxC=Max(mx4,mx5);
def mxD=Max(mx6,mx7); def mxE=Max(mx8,mx9); def mxF=Max(mx10,mx11);
def mxG=Max(mx12,mx13); def mxH=Max(mx14,vol30);
def mxI=Max(mxA,mxB); def mxJ=Max(mxC,mxD); def mxK=Max(mxE,mxF); def mxL=Max(mxG,mxH);
def mxM=Max(mxI,mxJ); def mxN=Max(mxK,mxL);
def volMax = Max(mxM,mxN);
# ═══════════════════════════════════════════════════════════
# SCALE & COLOR STEP
# ═══════════════════════════════════════════════════════════
script scale {
input v=0.0; input vMax=1.0; input gMin=0.25;
input bLow=0.0; input bHigh=0.0; input mask=yes;
input o=0.0; input h=0.0; input l=0.0; input c=0.0;
def hl2v = (h+l)/2;
def hlc3v = (h+l+c)/3;
def masked = mask and (
(o>=bLow and o<=bHigh) or (c>=bLow and c<=bHigh) or
(hl2v>=bLow and hl2v<=bHigh) or (hlc3v>=bLow and hlc3v<=bHigh));
def norm = if vMax>0 then v/vMax else 0.0;
plot result = if masked or norm<gMin then 0.0
else (norm-gMin)/(1.0-gMin+0.00001);
}
script colorStep {
input s=0.0;
plot result =
if s == 0 then 0
else if s < 0.143 then 1
else if s < 0.286 then 2
else if s < 0.429 then 3
else if s < 0.571 then 4
else if s < 0.714 then 5
else if s < 0.857 then 6
else if s < 1.000 then 7
else 8;
}
def s00=scale(vol00,volMax,gradMin,lv00,lv01,hideActiveCandleColor,open,high,low,close);
def s01=scale(vol01,volMax,gradMin,lv01,lv02,hideActiveCandleColor,open,high,low,close);
def s02=scale(vol02,volMax,gradMin,lv02,lv03,hideActiveCandleColor,open,high,low,close);
def s03=scale(vol03,volMax,gradMin,lv03,lv04,hideActiveCandleColor,open,high,low,close);
def s04=scale(vol04,volMax,gradMin,lv04,lv05,hideActiveCandleColor,open,high,low,close);
def s05=scale(vol05,volMax,gradMin,lv05,lv06,hideActiveCandleColor,open,high,low,close);
def s06=scale(vol06,volMax,gradMin,lv06,lv07,hideActiveCandleColor,open,high,low,close);
def s07=scale(vol07,volMax,gradMin,lv07,lv08,hideActiveCandleColor,open,high,low,close);
def s08=scale(vol08,volMax,gradMin,lv08,lv09,hideActiveCandleColor,open,high,low,close);
def s09=scale(vol09,volMax,gradMin,lv09,lv10,hideActiveCandleColor,open,high,low,close);
def s10=scale(vol10,volMax,gradMin,lv10,lv11,hideActiveCandleColor,open,high,low,close);
def s11=scale(vol11,volMax,gradMin,lv11,lv12,hideActiveCandleColor,open,high,low,close);
def s12=scale(vol12,volMax,gradMin,lv12,lv13,hideActiveCandleColor,open,high,low,close);
def s13=scale(vol13,volMax,gradMin,lv13,lv14,hideActiveCandleColor,open,high,low,close);
def s14=scale(vol14,volMax,gradMin,lv14,lv15,hideActiveCandleColor,open,high,low,close);
def s15=scale(vol15,volMax,gradMin,lv15,lv16,hideActiveCandleColor,open,high,low,close);
def s16=scale(vol16,volMax,gradMin,lv16,lv17,hideActiveCandleColor,open,high,low,close);
def s17=scale(vol17,volMax,gradMin,lv17,lv18,hideActiveCandleColor,open,high,low,close);
def s18=scale(vol18,volMax,gradMin,lv18,lv19,hideActiveCandleColor,open,high,low,close);
def s19=scale(vol19,volMax,gradMin,lv19,lv20,hideActiveCandleColor,open,high,low,close);
def s20=scale(vol20,volMax,gradMin,lv20,lv21,hideActiveCandleColor,open,high,low,close);
def s21=scale(vol21,volMax,gradMin,lv21,lv22,hideActiveCandleColor,open,high,low,close);
def s22=scale(vol22,volMax,gradMin,lv22,lv23,hideActiveCandleColor,open,high,low,close);
def s23=scale(vol23,volMax,gradMin,lv23,lv24,hideActiveCandleColor,open,high,low,close);
def s24=scale(vol24,volMax,gradMin,lv24,lv25,hideActiveCandleColor,open,high,low,close);
def s25=scale(vol25,volMax,gradMin,lv25,lv26,hideActiveCandleColor,open,high,low,close);
def s26=scale(vol26,volMax,gradMin,lv26,lv27,hideActiveCandleColor,open,high,low,close);
def s27=scale(vol27,volMax,gradMin,lv27,lv28,hideActiveCandleColor,open,high,low,close);
def s28=scale(vol28,volMax,gradMin,lv28,lv29,hideActiveCandleColor,open,high,low,close);
def s29=scale(vol29,volMax,gradMin,lv29,lv30,hideActiveCandleColor,open,high,low,close);
def s30=scale(vol30,volMax,gradMin,lv30,H, hideActiveCandleColor,open,high,low,close);
def cs00=colorStep(s00); def cs01=colorStep(s01); def cs02=colorStep(s02);
def cs03=colorStep(s03); def cs04=colorStep(s04); def cs05=colorStep(s05);
def cs06=colorStep(s06); def cs07=colorStep(s07); def cs08=colorStep(s08);
def cs09=colorStep(s09); def cs10=colorStep(s10); def cs11=colorStep(s11);
def cs12=colorStep(s12); def cs13=colorStep(s13); def cs14=colorStep(s14);
def cs15=colorStep(s15); def cs16=colorStep(s16); def cs17=colorStep(s17);
def cs18=colorStep(s18); def cs19=colorStep(s19); def cs20=colorStep(s20);
def cs21=colorStep(s21); def cs22=colorStep(s22); def cs23=colorStep(s23);
def cs24=colorStep(s24); def cs25=colorStep(s25); def cs26=colorStep(s26);
def cs27=colorStep(s27); def cs28=colorStep(s28); def cs29=colorStep(s29);
def cs30=colorStep(s30);
# above-close flag (1=sell/red, 0=buy/green)
def ab00=close<=(lv00+step/2); def ab01=close<=(lv01+step/2); def ab02=close<=(lv02+step/2);
def ab03=close<=(lv03+step/2); def ab04=close<=(lv04+step/2); def ab05=close<=(lv05+step/2);
def ab06=close<=(lv06+step/2); def ab07=close<=(lv07+step/2); def ab08=close<=(lv08+step/2);
def ab09=close<=(lv09+step/2); def ab10=close<=(lv10+step/2); def ab11=close<=(lv11+step/2);
def ab12=close<=(lv12+step/2); def ab13=close<=(lv13+step/2); def ab14=close<=(lv14+step/2);
def ab15=close<=(lv15+step/2); def ab16=close<=(lv16+step/2); def ab17=close<=(lv17+step/2);
def ab18=close<=(lv18+step/2); def ab19=close<=(lv19+step/2); def ab20=close<=(lv20+step/2);
def ab21=close<=(lv21+step/2); def ab22=close<=(lv22+step/2); def ab23=close<=(lv23+step/2);
def ab24=close<=(lv24+step/2); def ab25=close<=(lv25+step/2); def ab26=close<=(lv26+step/2);
def ab27=close<=(lv27+step/2); def ab28=close<=(lv28+step/2); def ab29=close<=(lv29+step/2);
def ab30=close<=(lv30+step/2);
# ═══════════════════════════════════════════════════════════
# BOUNDARY PLOTS
# Must NOT be hidden — AddCloud needs visible plots as anchors.
# SetStyle to POINTS at weight 1 makes them nearly invisible
# while still satisfying TOS's cloud anchor requirement.
# ═══════════════════════════════════════════════════════════
def B00=lv00; #B00.SetStyle(Curve.POINTS); B00.SetLineWeight(1); B00.SetDefaultColor(Color.DARK_GRAY);
def B01=lv01; #B01.SetStyle(Curve.POINTS); B01.SetLineWeight(1); B01.SetDefaultColor(Color.DARK_GRAY);
def B02=lv02; #B02.SetStyle(Curve.POINTS); B02.SetLineWeight(1); B02.SetDefaultColor(Color.DARK_GRAY);
def B03=lv03; #B03.SetStyle(Curve.POINTS); B03.SetLineWeight(1); B03.SetDefaultColor(Color.DARK_GRAY);
def B04=lv04; #B04.SetStyle(Curve.POINTS); B04.SetLineWeight(1); B04.SetDefaultColor(Color.DARK_GRAY);
def B05=lv05; #B05.SetStyle(Curve.POINTS); B05.SetLineWeight(1); B05.SetDefaultColor(Color.DARK_GRAY);
def B06=lv06; #B06.SetStyle(Curve.POINTS); B06.SetLineWeight(1); B06.SetDefaultColor(Color.DARK_GRAY);
def B07=lv07; #B07.SetStyle(Curve.POINTS); B07.SetLineWeight(1); B07.SetDefaultColor(Color.DARK_GRAY);
def B08=lv08; #B08.SetStyle(Curve.POINTS); B08.SetLineWeight(1); B08.SetDefaultColor(Color.DARK_GRAY);
def B09=lv09; #B09.SetStyle(Curve.POINTS); B09.SetLineWeight(1); B09.SetDefaultColor(Color.DARK_GRAY);
def B10=lv10; #B10.SetStyle(Curve.POINTS); B10.SetLineWeight(1); B10.SetDefaultColor(Color.DARK_GRAY);
def B11=lv11; #B11.SetStyle(Curve.POINTS); B11.SetLineWeight(1); B11.SetDefaultColor(Color.DARK_GRAY);
def B12=lv12; #B12.SetStyle(Curve.POINTS); B12.SetLineWeight(1); B12.SetDefaultColor(Color.DARK_GRAY);
def B13=lv13; #B13.SetStyle(Curve.POINTS); B13.SetLineWeight(1); B13.SetDefaultColor(Color.DARK_GRAY);
def B14=lv14; #B14.SetStyle(Curve.POINTS); B14.SetLineWeight(1); B14.SetDefaultColor(Color.DARK_GRAY);
def B15=lv15; #B15.SetStyle(Curve.POINTS); B15.SetLineWeight(1); B15.SetDefaultColor(Color.DARK_GRAY);
def B16=lv16; #B16.SetStyle(Curve.POINTS); B16.SetLineWeight(1); B16.SetDefaultColor(Color.DARK_GRAY);
def B17=lv17; #B17.SetStyle(Curve.POINTS); B17.SetLineWeight(1); B17.SetDefaultColor(Color.DARK_GRAY);
def B18=lv18; #B18.SetStyle(Curve.POINTS); B18.SetLineWeight(1); B18.SetDefaultColor(Color.DARK_GRAY);
def B19=lv19; #B19.SetStyle(Curve.POINTS); B19.SetLineWeight(1); B19.SetDefaultColor(Color.DARK_GRAY);
def B20=lv20; #B20.SetStyle(Curve.POINTS); B20.SetLineWeight(1); B20.SetDefaultColor(Color.DARK_GRAY);
def B21=lv21; #B21.SetStyle(Curve.POINTS); B21.SetLineWeight(1); B21.SetDefaultColor(Color.DARK_GRAY);
def B22=lv22; #B22.SetStyle(Curve.POINTS); B22.SetLineWeight(1); B22.SetDefaultColor(Color.DARK_GRAY);
def B23=lv23; #B23.SetStyle(Curve.POINTS); B23.SetLineWeight(1); B23.SetDefaultColor(Color.DARK_GRAY);
def B24=lv24; #B24.SetStyle(Curve.POINTS); B24.SetLineWeight(1); B24.SetDefaultColor(Color.DARK_GRAY);
def B25=lv25; #B25.SetStyle(Curve.POINTS); B25.SetLineWeight(1); B25.SetDefaultColor(Color.DARK_GRAY);
def B26=lv26; #B26.SetStyle(Curve.POINTS); B26.SetLineWeight(1); B26.SetDefaultColor(Color.DARK_GRAY);
def B27=lv27; #B27.SetStyle(Curve.POINTS); B27.SetLineWeight(1); B27.SetDefaultColor(Color.DARK_GRAY);
def B28=lv28; #B28.SetStyle(Curve.POINTS); B28.SetLineWeight(1); B28.SetDefaultColor(Color.DARK_GRAY);
def B29=lv29; #B29.SetStyle(Curve.POINTS); B29.SetLineWeight(1); B29.SetDefaultColor(Color.DARK_GRAY);
def B30=lv30; #B30.SetStyle(Curve.POINTS); B30.SetLineWeight(1); B30.SetDefaultColor(Color.DARK_GRAY);
def BHH=H; #BHH.SetStyle(Curve.POINTS); BHH.SetLineWeight(1); BHH.SetDefaultColor(Color.DARK_GRAY);
# ═══════════════════════════════════════════════════════════
# CLOUD FILLS — 16 per bin (8 red + 8 green), NaN-gated
# ═══════════════════════════════════════════════════════════
# bin 00
AddCloud(if cs00==1 and ab00 then B01 else Double.NaN, B00, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs00==2 and ab00 then B01 else Double.NaN, B00, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs00==3 and ab00 then B01 else Double.NaN, B00, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs00==4 and ab00 then B01 else Double.NaN, B00, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs00==5 and ab00 then B01 else Double.NaN, B00, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs00==6 and ab00 then B01 else Double.NaN, B00, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs00==7 and ab00 then B01 else Double.NaN, B00, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs00==8 and ab00 then B01 else Double.NaN, B00, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs00==1 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs00==2 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs00==3 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs00==4 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs00==5 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs00==6 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs00==7 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs00==8 and !ab00 then B01 else Double.NaN, B00, GlobalColor("G8"), GlobalColor("G8"));
# bin 01
AddCloud(if cs01==1 and ab01 then B02 else Double.NaN, B01, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs01==2 and ab01 then B02 else Double.NaN, B01, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs01==3 and ab01 then B02 else Double.NaN, B01, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs01==4 and ab01 then B02 else Double.NaN, B01, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs01==5 and ab01 then B02 else Double.NaN, B01, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs01==6 and ab01 then B02 else Double.NaN, B01, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs01==7 and ab01 then B02 else Double.NaN, B01, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs01==8 and ab01 then B02 else Double.NaN, B01, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs01==1 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs01==2 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs01==3 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs01==4 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs01==5 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs01==6 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs01==7 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs01==8 and !ab01 then B02 else Double.NaN, B01, GlobalColor("G8"), GlobalColor("G8"));
# bin 02
AddCloud(if cs02==1 and ab02 then B03 else Double.NaN, B02, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs02==2 and ab02 then B03 else Double.NaN, B02, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs02==3 and ab02 then B03 else Double.NaN, B02, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs02==4 and ab02 then B03 else Double.NaN, B02, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs02==5 and ab02 then B03 else Double.NaN, B02, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs02==6 and ab02 then B03 else Double.NaN, B02, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs02==7 and ab02 then B03 else Double.NaN, B02, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs02==8 and ab02 then B03 else Double.NaN, B02, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs02==1 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs02==2 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs02==3 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs02==4 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs02==5 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs02==6 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs02==7 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs02==8 and !ab02 then B03 else Double.NaN, B02, GlobalColor("G8"), GlobalColor("G8"));
# bin 03
AddCloud(if cs03==1 and ab03 then B04 else Double.NaN, B03, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs03==2 and ab03 then B04 else Double.NaN, B03, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs03==3 and ab03 then B04 else Double.NaN, B03, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs03==4 and ab03 then B04 else Double.NaN, B03, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs03==5 and ab03 then B04 else Double.NaN, B03, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs03==6 and ab03 then B04 else Double.NaN, B03, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs03==7 and ab03 then B04 else Double.NaN, B03, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs03==8 and ab03 then B04 else Double.NaN, B03, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs03==1 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs03==2 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs03==3 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs03==4 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs03==5 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs03==6 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs03==7 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs03==8 and !ab03 then B04 else Double.NaN, B03, GlobalColor("G8"), GlobalColor("G8"));
# bin 04
AddCloud(if cs04==1 and ab04 then B05 else Double.NaN, B04, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs04==2 and ab04 then B05 else Double.NaN, B04, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs04==3 and ab04 then B05 else Double.NaN, B04, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs04==4 and ab04 then B05 else Double.NaN, B04, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs04==5 and ab04 then B05 else Double.NaN, B04, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs04==6 and ab04 then B05 else Double.NaN, B04, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs04==7 and ab04 then B05 else Double.NaN, B04, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs04==8 and ab04 then B05 else Double.NaN, B04, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs04==1 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs04==2 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs04==3 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs04==4 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs04==5 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs04==6 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs04==7 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs04==8 and !ab04 then B05 else Double.NaN, B04, GlobalColor("G8"), GlobalColor("G8"));
# bin 05
AddCloud(if cs05==1 and ab05 then B06 else Double.NaN, B05, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs05==2 and ab05 then B06 else Double.NaN, B05, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs05==3 and ab05 then B06 else Double.NaN, B05, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs05==4 and ab05 then B06 else Double.NaN, B05, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs05==5 and ab05 then B06 else Double.NaN, B05, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs05==6 and ab05 then B06 else Double.NaN, B05, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs05==7 and ab05 then B06 else Double.NaN, B05, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs05==8 and ab05 then B06 else Double.NaN, B05, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs05==1 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs05==2 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs05==3 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs05==4 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs05==5 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs05==6 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs05==7 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs05==8 and !ab05 then B06 else Double.NaN, B05, GlobalColor("G8"), GlobalColor("G8"));
# bin 06
AddCloud(if cs06==1 and ab06 then B07 else Double.NaN, B06, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs06==2 and ab06 then B07 else Double.NaN, B06, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs06==3 and ab06 then B07 else Double.NaN, B06, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs06==4 and ab06 then B07 else Double.NaN, B06, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs06==5 and ab06 then B07 else Double.NaN, B06, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs06==6 and ab06 then B07 else Double.NaN, B06, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs06==7 and ab06 then B07 else Double.NaN, B06, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs06==8 and ab06 then B07 else Double.NaN, B06, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs06==1 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs06==2 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs06==3 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs06==4 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs06==5 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs06==6 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs06==7 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs06==8 and !ab06 then B07 else Double.NaN, B06, GlobalColor("G8"), GlobalColor("G8"));
# bin 07
AddCloud(if cs07==1 and ab07 then B08 else Double.NaN, B07, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs07==2 and ab07 then B08 else Double.NaN, B07, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs07==3 and ab07 then B08 else Double.NaN, B07, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs07==4 and ab07 then B08 else Double.NaN, B07, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs07==5 and ab07 then B08 else Double.NaN, B07, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs07==6 and ab07 then B08 else Double.NaN, B07, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs07==7 and ab07 then B08 else Double.NaN, B07, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs07==8 and ab07 then B08 else Double.NaN, B07, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs07==1 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs07==2 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs07==3 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs07==4 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs07==5 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs07==6 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs07==7 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs07==8 and !ab07 then B08 else Double.NaN, B07, GlobalColor("G8"), GlobalColor("G8"));
# bin 08
AddCloud(if cs08==1 and ab08 then B09 else Double.NaN, B08, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs08==2 and ab08 then B09 else Double.NaN, B08, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs08==3 and ab08 then B09 else Double.NaN, B08, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs08==4 and ab08 then B09 else Double.NaN, B08, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs08==5 and ab08 then B09 else Double.NaN, B08, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs08==6 and ab08 then B09 else Double.NaN, B08, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs08==7 and ab08 then B09 else Double.NaN, B08, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs08==8 and ab08 then B09 else Double.NaN, B08, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs08==1 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs08==2 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs08==3 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs08==4 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs08==5 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs08==6 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs08==7 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs08==8 and !ab08 then B09 else Double.NaN, B08, GlobalColor("G8"), GlobalColor("G8"));
# bin 09
AddCloud(if cs09==1 and ab09 then B10 else Double.NaN, B09, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs09==2 and ab09 then B10 else Double.NaN, B09, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs09==3 and ab09 then B10 else Double.NaN, B09, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs09==4 and ab09 then B10 else Double.NaN, B09, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs09==5 and ab09 then B10 else Double.NaN, B09, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs09==6 and ab09 then B10 else Double.NaN, B09, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs09==7 and ab09 then B10 else Double.NaN, B09, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs09==8 and ab09 then B10 else Double.NaN, B09, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs09==1 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs09==2 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs09==3 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs09==4 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs09==5 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs09==6 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs09==7 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs09==8 and !ab09 then B10 else Double.NaN, B09, GlobalColor("G8"), GlobalColor("G8"));
# bin 10
AddCloud(if cs10==1 and ab10 then B11 else Double.NaN, B10, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs10==2 and ab10 then B11 else Double.NaN, B10, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs10==3 and ab10 then B11 else Double.NaN, B10, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs10==4 and ab10 then B11 else Double.NaN, B10, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs10==5 and ab10 then B11 else Double.NaN, B10, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs10==6 and ab10 then B11 else Double.NaN, B10, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs10==7 and ab10 then B11 else Double.NaN, B10, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs10==8 and ab10 then B11 else Double.NaN, B10, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs10==1 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs10==2 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs10==3 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs10==4 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs10==5 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs10==6 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs10==7 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs10==8 and !ab10 then B11 else Double.NaN, B10, GlobalColor("G8"), GlobalColor("G8"));
# bin 11
AddCloud(if cs11==1 and ab11 then B12 else Double.NaN, B11, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs11==2 and ab11 then B12 else Double.NaN, B11, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs11==3 and ab11 then B12 else Double.NaN, B11, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs11==4 and ab11 then B12 else Double.NaN, B11, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs11==5 and ab11 then B12 else Double.NaN, B11, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs11==6 and ab11 then B12 else Double.NaN, B11, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs11==7 and ab11 then B12 else Double.NaN, B11, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs11==8 and ab11 then B12 else Double.NaN, B11, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs11==1 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs11==2 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs11==3 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs11==4 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs11==5 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs11==6 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs11==7 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs11==8 and !ab11 then B12 else Double.NaN, B11, GlobalColor("G8"), GlobalColor("G8"));
# bin 12
AddCloud(if cs12==1 and ab12 then B13 else Double.NaN, B12, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs12==2 and ab12 then B13 else Double.NaN, B12, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs12==3 and ab12 then B13 else Double.NaN, B12, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs12==4 and ab12 then B13 else Double.NaN, B12, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs12==5 and ab12 then B13 else Double.NaN, B12, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs12==6 and ab12 then B13 else Double.NaN, B12, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs12==7 and ab12 then B13 else Double.NaN, B12, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs12==8 and ab12 then B13 else Double.NaN, B12, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs12==1 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs12==2 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs12==3 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs12==4 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs12==5 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs12==6 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs12==7 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs12==8 and !ab12 then B13 else Double.NaN, B12, GlobalColor("G8"), GlobalColor("G8"));
# bin 13
AddCloud(if cs13==1 and ab13 then B14 else Double.NaN, B13, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs13==2 and ab13 then B14 else Double.NaN, B13, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs13==3 and ab13 then B14 else Double.NaN, B13, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs13==4 and ab13 then B14 else Double.NaN, B13, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs13==5 and ab13 then B14 else Double.NaN, B13, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs13==6 and ab13 then B14 else Double.NaN, B13, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs13==7 and ab13 then B14 else Double.NaN, B13, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs13==8 and ab13 then B14 else Double.NaN, B13, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs13==1 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs13==2 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs13==3 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs13==4 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs13==5 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs13==6 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs13==7 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs13==8 and !ab13 then B14 else Double.NaN, B13, GlobalColor("G8"), GlobalColor("G8"));
# bin 14
AddCloud(if cs14==1 and ab14 then B15 else Double.NaN, B14, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs14==2 and ab14 then B15 else Double.NaN, B14, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs14==3 and ab14 then B15 else Double.NaN, B14, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs14==4 and ab14 then B15 else Double.NaN, B14, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs14==5 and ab14 then B15 else Double.NaN, B14, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs14==6 and ab14 then B15 else Double.NaN, B14, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs14==7 and ab14 then B15 else Double.NaN, B14, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs14==8 and ab14 then B15 else Double.NaN, B14, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs14==1 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs14==2 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs14==3 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs14==4 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs14==5 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs14==6 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs14==7 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs14==8 and !ab14 then B15 else Double.NaN, B14, GlobalColor("G8"), GlobalColor("G8"));
# bin 15
AddCloud(if cs15==1 and ab15 then B16 else Double.NaN, B15, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs15==2 and ab15 then B16 else Double.NaN, B15, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs15==3 and ab15 then B16 else Double.NaN, B15, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs15==4 and ab15 then B16 else Double.NaN, B15, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs15==5 and ab15 then B16 else Double.NaN, B15, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs15==6 and ab15 then B16 else Double.NaN, B15, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs15==7 and ab15 then B16 else Double.NaN, B15, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs15==8 and ab15 then B16 else Double.NaN, B15, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs15==1 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs15==2 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs15==3 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs15==4 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs15==5 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs15==6 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs15==7 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs15==8 and !ab15 then B16 else Double.NaN, B15, GlobalColor("G8"), GlobalColor("G8"));
# bin 16
AddCloud(if cs16==1 and ab16 then B17 else Double.NaN, B16, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs16==2 and ab16 then B17 else Double.NaN, B16, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs16==3 and ab16 then B17 else Double.NaN, B16, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs16==4 and ab16 then B17 else Double.NaN, B16, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs16==5 and ab16 then B17 else Double.NaN, B16, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs16==6 and ab16 then B17 else Double.NaN, B16, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs16==7 and ab16 then B17 else Double.NaN, B16, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs16==8 and ab16 then B17 else Double.NaN, B16, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs16==1 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs16==2 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs16==3 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs16==4 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs16==5 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs16==6 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs16==7 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs16==8 and !ab16 then B17 else Double.NaN, B16, GlobalColor("G8"), GlobalColor("G8"));
# bin 17
AddCloud(if cs17==1 and ab17 then B18 else Double.NaN, B17, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs17==2 and ab17 then B18 else Double.NaN, B17, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs17==3 and ab17 then B18 else Double.NaN, B17, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs17==4 and ab17 then B18 else Double.NaN, B17, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs17==5 and ab17 then B18 else Double.NaN, B17, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs17==6 and ab17 then B18 else Double.NaN, B17, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs17==7 and ab17 then B18 else Double.NaN, B17, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs17==8 and ab17 then B18 else Double.NaN, B17, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs17==1 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs17==2 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs17==3 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs17==4 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs17==5 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs17==6 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs17==7 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs17==8 and !ab17 then B18 else Double.NaN, B17, GlobalColor("G8"), GlobalColor("G8"));
# bin 18
AddCloud(if cs18==1 and ab18 then B19 else Double.NaN, B18, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs18==2 and ab18 then B19 else Double.NaN, B18, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs18==3 and ab18 then B19 else Double.NaN, B18, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs18==4 and ab18 then B19 else Double.NaN, B18, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs18==5 and ab18 then B19 else Double.NaN, B18, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs18==6 and ab18 then B19 else Double.NaN, B18, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs18==7 and ab18 then B19 else Double.NaN, B18, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs18==8 and ab18 then B19 else Double.NaN, B18, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs18==1 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs18==2 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs18==3 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs18==4 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs18==5 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs18==6 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs18==7 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs18==8 and !ab18 then B19 else Double.NaN, B18, GlobalColor("G8"), GlobalColor("G8"));
# bin 19
AddCloud(if cs19==1 and ab19 then B20 else Double.NaN, B19, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs19==2 and ab19 then B20 else Double.NaN, B19, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs19==3 and ab19 then B20 else Double.NaN, B19, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs19==4 and ab19 then B20 else Double.NaN, B19, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs19==5 and ab19 then B20 else Double.NaN, B19, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs19==6 and ab19 then B20 else Double.NaN, B19, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs19==7 and ab19 then B20 else Double.NaN, B19, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs19==8 and ab19 then B20 else Double.NaN, B19, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs19==1 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs19==2 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs19==3 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs19==4 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs19==5 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs19==6 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs19==7 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs19==8 and !ab19 then B20 else Double.NaN, B19, GlobalColor("G8"), GlobalColor("G8"));
# bin 20
AddCloud(if cs20==1 and ab20 then B21 else Double.NaN, B20, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs20==2 and ab20 then B21 else Double.NaN, B20, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs20==3 and ab20 then B21 else Double.NaN, B20, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs20==4 and ab20 then B21 else Double.NaN, B20, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs20==5 and ab20 then B21 else Double.NaN, B20, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs20==6 and ab20 then B21 else Double.NaN, B20, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs20==7 and ab20 then B21 else Double.NaN, B20, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs20==8 and ab20 then B21 else Double.NaN, B20, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs20==1 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs20==2 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs20==3 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs20==4 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs20==5 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs20==6 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs20==7 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs20==8 and !ab20 then B21 else Double.NaN, B20, GlobalColor("G8"), GlobalColor("G8"));
# bin 21
AddCloud(if cs21==1 and ab21 then B22 else Double.NaN, B21, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs21==2 and ab21 then B22 else Double.NaN, B21, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs21==3 and ab21 then B22 else Double.NaN, B21, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs21==4 and ab21 then B22 else Double.NaN, B21, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs21==5 and ab21 then B22 else Double.NaN, B21, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs21==6 and ab21 then B22 else Double.NaN, B21, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs21==7 and ab21 then B22 else Double.NaN, B21, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs21==8 and ab21 then B22 else Double.NaN, B21, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs21==1 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs21==2 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs21==3 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs21==4 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs21==5 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs21==6 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs21==7 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs21==8 and !ab21 then B22 else Double.NaN, B21, GlobalColor("G8"), GlobalColor("G8"));
# bin 22
AddCloud(if cs22==1 and ab22 then B23 else Double.NaN, B22, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs22==2 and ab22 then B23 else Double.NaN, B22, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs22==3 and ab22 then B23 else Double.NaN, B22, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs22==4 and ab22 then B23 else Double.NaN, B22, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs22==5 and ab22 then B23 else Double.NaN, B22, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs22==6 and ab22 then B23 else Double.NaN, B22, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs22==7 and ab22 then B23 else Double.NaN, B22, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs22==8 and ab22 then B23 else Double.NaN, B22, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs22==1 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs22==2 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs22==3 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs22==4 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs22==5 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs22==6 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs22==7 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs22==8 and !ab22 then B23 else Double.NaN, B22, GlobalColor("G8"), GlobalColor("G8"));
# bin 23
AddCloud(if cs23==1 and ab23 then B24 else Double.NaN, B23, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs23==2 and ab23 then B24 else Double.NaN, B23, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs23==3 and ab23 then B24 else Double.NaN, B23, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs23==4 and ab23 then B24 else Double.NaN, B23, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs23==5 and ab23 then B24 else Double.NaN, B23, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs23==6 and ab23 then B24 else Double.NaN, B23, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs23==7 and ab23 then B24 else Double.NaN, B23, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs23==8 and ab23 then B24 else Double.NaN, B23, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs23==1 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs23==2 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs23==3 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs23==4 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs23==5 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs23==6 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs23==7 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs23==8 and !ab23 then B24 else Double.NaN, B23, GlobalColor("G8"), GlobalColor("G8"));
# bin 24
AddCloud(if cs24==1 and ab24 then B25 else Double.NaN, B24, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs24==2 and ab24 then B25 else Double.NaN, B24, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs24==3 and ab24 then B25 else Double.NaN, B24, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs24==4 and ab24 then B25 else Double.NaN, B24, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs24==5 and ab24 then B25 else Double.NaN, B24, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs24==6 and ab24 then B25 else Double.NaN, B24, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs24==7 and ab24 then B25 else Double.NaN, B24, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs24==8 and ab24 then B25 else Double.NaN, B24, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs24==1 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs24==2 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs24==3 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs24==4 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs24==5 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs24==6 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs24==7 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs24==8 and !ab24 then B25 else Double.NaN, B24, GlobalColor("G8"), GlobalColor("G8"));
# bin 25
AddCloud(if cs25==1 and ab25 then B26 else Double.NaN, B25, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs25==2 and ab25 then B26 else Double.NaN, B25, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs25==3 and ab25 then B26 else Double.NaN, B25, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs25==4 and ab25 then B26 else Double.NaN, B25, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs25==5 and ab25 then B26 else Double.NaN, B25, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs25==6 and ab25 then B26 else Double.NaN, B25, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs25==7 and ab25 then B26 else Double.NaN, B25, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs25==8 and ab25 then B26 else Double.NaN, B25, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs25==1 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs25==2 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs25==3 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs25==4 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs25==5 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs25==6 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs25==7 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs25==8 and !ab25 then B26 else Double.NaN, B25, GlobalColor("G8"), GlobalColor("G8"));
# bin 26
AddCloud(if cs26==1 and ab26 then B27 else Double.NaN, B26, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs26==2 and ab26 then B27 else Double.NaN, B26, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs26==3 and ab26 then B27 else Double.NaN, B26, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs26==4 and ab26 then B27 else Double.NaN, B26, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs26==5 and ab26 then B27 else Double.NaN, B26, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs26==6 and ab26 then B27 else Double.NaN, B26, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs26==7 and ab26 then B27 else Double.NaN, B26, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs26==8 and ab26 then B27 else Double.NaN, B26, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs26==1 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs26==2 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs26==3 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs26==4 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs26==5 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs26==6 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs26==7 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs26==8 and !ab26 then B27 else Double.NaN, B26, GlobalColor("G8"), GlobalColor("G8"));
# bin 27
AddCloud(if cs27==1 and ab27 then B28 else Double.NaN, B27, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs27==2 and ab27 then B28 else Double.NaN, B27, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs27==3 and ab27 then B28 else Double.NaN, B27, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs27==4 and ab27 then B28 else Double.NaN, B27, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs27==5 and ab27 then B28 else Double.NaN, B27, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs27==6 and ab27 then B28 else Double.NaN, B27, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs27==7 and ab27 then B28 else Double.NaN, B27, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs27==8 and ab27 then B28 else Double.NaN, B27, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs27==1 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs27==2 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs27==3 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs27==4 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs27==5 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs27==6 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs27==7 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs27==8 and !ab27 then B28 else Double.NaN, B27, GlobalColor("G8"), GlobalColor("G8"));
# bin 28
AddCloud(if cs28==1 and ab28 then B29 else Double.NaN, B28, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs28==2 and ab28 then B29 else Double.NaN, B28, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs28==3 and ab28 then B29 else Double.NaN, B28, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs28==4 and ab28 then B29 else Double.NaN, B28, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs28==5 and ab28 then B29 else Double.NaN, B28, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs28==6 and ab28 then B29 else Double.NaN, B28, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs28==7 and ab28 then B29 else Double.NaN, B28, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs28==8 and ab28 then B29 else Double.NaN, B28, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs28==1 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs28==2 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs28==3 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs28==4 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs28==5 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs28==6 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs28==7 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs28==8 and !ab28 then B29 else Double.NaN, B28, GlobalColor("G8"), GlobalColor("G8"));
# bin 29
AddCloud(if cs29==1 and ab29 then B30 else Double.NaN, B29, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs29==2 and ab29 then B30 else Double.NaN, B29, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs29==3 and ab29 then B30 else Double.NaN, B29, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs29==4 and ab29 then B30 else Double.NaN, B29, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs29==5 and ab29 then B30 else Double.NaN, B29, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs29==6 and ab29 then B30 else Double.NaN, B29, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs29==7 and ab29 then B30 else Double.NaN, B29, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs29==8 and ab29 then B30 else Double.NaN, B29, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs29==1 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs29==2 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs29==3 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs29==4 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs29==5 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs29==6 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs29==7 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs29==8 and !ab29 then B30 else Double.NaN, B29, GlobalColor("G8"), GlobalColor("G8"));
# bin 30
AddCloud(if cs30==1 and ab30 then BHH else Double.NaN, B30, GlobalColor("R1"), GlobalColor("R1"));
AddCloud(if cs30==2 and ab30 then BHH else Double.NaN, B30, GlobalColor("R2"), GlobalColor("R2"));
AddCloud(if cs30==3 and ab30 then BHH else Double.NaN, B30, GlobalColor("R3"), GlobalColor("R3"));
AddCloud(if cs30==4 and ab30 then BHH else Double.NaN, B30, GlobalColor("R4"), GlobalColor("R4"));
AddCloud(if cs30==5 and ab30 then BHH else Double.NaN, B30, GlobalColor("R5"), GlobalColor("R5"));
AddCloud(if cs30==6 and ab30 then BHH else Double.NaN, B30, GlobalColor("R6"), GlobalColor("R6"));
AddCloud(if cs30==7 and ab30 then BHH else Double.NaN, B30, GlobalColor("R7"), GlobalColor("R7"));
AddCloud(if cs30==8 and ab30 then BHH else Double.NaN, B30, GlobalColor("R8"), GlobalColor("R8"));
AddCloud(if cs30==1 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G1"), GlobalColor("G1"));
AddCloud(if cs30==2 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G2"), GlobalColor("G2"));
AddCloud(if cs30==3 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G3"), GlobalColor("G3"));
AddCloud(if cs30==4 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G4"), GlobalColor("G4"));
AddCloud(if cs30==5 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G5"), GlobalColor("G5"));
AddCloud(if cs30==6 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G6"), GlobalColor("G6"));
AddCloud(if cs30==7 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G7"), GlobalColor("G7"));
AddCloud(if cs30==8 and !ab30 then BHH else Double.NaN, B30, GlobalColor("G8"), GlobalColor("G8"));
# ═══════════════════════════════════════════════════════════
# BUY / SELL TOTALS & LABELS
# ═══════════════════════════════════════════════════════════
def buyVol =
(if close>(lv00+step/2) then vol00 else 0)+(if close>(lv01+step/2) then vol01 else 0)+
(if close>(lv02+step/2) then vol02 else 0)+(if close>(lv03+step/2) then vol03 else 0)+
(if close>(lv04+step/2) then vol04 else 0)+(if close>(lv05+step/2) then vol05 else 0)+
(if close>(lv06+step/2) then vol06 else 0)+(if close>(lv07+step/2) then vol07 else 0)+
(if close>(lv08+step/2) then vol08 else 0)+(if close>(lv09+step/2) then vol09 else 0)+
(if close>(lv10+step/2) then vol10 else 0)+(if close>(lv11+step/2) then vol11 else 0)+
(if close>(lv12+step/2) then vol12 else 0)+(if close>(lv13+step/2) then vol13 else 0)+
(if close>(lv14+step/2) then vol14 else 0)+(if close>(lv15+step/2) then vol15 else 0)+
(if close>(lv16+step/2) then vol16 else 0)+(if close>(lv17+step/2) then vol17 else 0)+
(if close>(lv18+step/2) then vol18 else 0)+(if close>(lv19+step/2) then vol19 else 0)+
(if close>(lv20+step/2) then vol20 else 0)+(if close>(lv21+step/2) then vol21 else 0)+
(if close>(lv22+step/2) then vol22 else 0)+(if close>(lv23+step/2) then vol23 else 0)+
(if close>(lv24+step/2) then vol24 else 0)+(if close>(lv25+step/2) then vol25 else 0)+
(if close>(lv26+step/2) then vol26 else 0)+(if close>(lv27+step/2) then vol27 else 0)+
(if close>(lv28+step/2) then vol28 else 0)+(if close>(lv29+step/2) then vol29 else 0)+
(if close>(lv30+step/2) then vol30 else 0);
def sellVol =
(if close<=(lv00+step/2) then vol00 else 0)+(if close<=(lv01+step/2) then vol01 else 0)+
(if close<=(lv02+step/2) then vol02 else 0)+(if close<=(lv03+step/2) then vol03 else 0)+
(if close<=(lv04+step/2) then vol04 else 0)+(if close<=(lv05+step/2) then vol05 else 0)+
(if close<=(lv06+step/2) then vol06 else 0)+(if close<=(lv07+step/2) then vol07 else 0)+
(if close<=(lv08+step/2) then vol08 else 0)+(if close<=(lv09+step/2) then vol09 else 0)+
(if close<=(lv10+step/2) then vol10 else 0)+(if close<=(lv11+step/2) then vol11 else 0)+
(if close<=(lv12+step/2) then vol12 else 0)+(if close<=(lv13+step/2) then vol13 else 0)+
(if close<=(lv14+step/2) then vol14 else 0)+(if close<=(lv15+step/2) then vol15 else 0)+
(if close<=(lv16+step/2) then vol16 else 0)+(if close<=(lv17+step/2) then vol17 else 0)+
(if close<=(lv18+step/2) then vol18 else 0)+(if close<=(lv19+step/2) then vol19 else 0)+
(if close<=(lv20+step/2) then vol20 else 0)+(if close<=(lv21+step/2) then vol21 else 0)+
(if close<=(lv22+step/2) then vol22 else 0)+(if close<=(lv23+step/2) then vol23 else 0)+
(if close<=(lv24+step/2) then vol24 else 0)+(if close<=(lv25+step/2) then vol25 else 0)+
(if close<=(lv26+step/2) then vol26 else 0)+(if close<=(lv27+step/2) then vol27 else 0)+
(if close<=(lv28+step/2) then vol28 else 0)+(if close<=(lv29+step/2) then vol29 else 0)+
(if close<=(lv30+step/2) then vol30 else 0);
def totalVol = buyVol + sellVol;
def buyPct = if totalVol > 0 then Round(buyVol / totalVol * 100, 1) else 0;
def sellPct = if totalVol > 0 then Round(sellVol / totalVol * 100, 1) else 0;
def imbalance = buyVol - sellVol;
AddLabel(yes, "BUY LIQ: " + Round(buyVol, 0) + " (" + buyPct + "%)", GlobalColor("G8"));
AddLabel(yes, "SELL LIQ: " + Round(sellVol, 0) + " (" + sellPct + "%)", GlobalColor("R8"));
AddLabel(yes, "Imbalance: " + Round(imbalance, 0),
if imbalance > 0 then GlobalColor("G8") else GlobalColor("R8"));
# ═══════════════════════════════════════════════════════════
# POC LINE
# ═══════════════════════════════════════════════════════════
def pocBin =
if vol00==volMax then 0 else if vol01==volMax then 1 else
if vol02==volMax then 2 else if vol03==volMax then 3 else
if vol04==volMax then 4 else if vol05==volMax then 5 else
if vol06==volMax then 6 else if vol07==volMax then 7 else
if vol08==volMax then 8 else if vol09==volMax then 9 else
if vol10==volMax then 10 else if vol11==volMax then 11 else
if vol12==volMax then 12 else if vol13==volMax then 13 else
if vol14==volMax then 14 else if vol15==volMax then 15 else
if vol16==volMax then 16 else if vol17==volMax then 17 else
if vol18==volMax then 18 else if vol19==volMax then 19 else
if vol20==volMax then 20 else if vol21==volMax then 21 else
if vol22==volMax then 22 else if vol23==volMax then 23 else
if vol24==volMax then 24 else if vol25==volMax then 25 else
if vol26==volMax then 26 else if vol27==volMax then 27 else
if vol28==volMax then 28 else if vol29==volMax then 29 else 30;
def pocPrice = L + pocBin * step + step / 2;
plot POCLine = pocPrice;
POCLine.SetDefaultColor(GlobalColor("POC"));
PocLine.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
POCLine.SetLineWeight(5);
AddLabel(yes, "POC: " + Round(pocPrice, 2), GlobalColor("POC"));
Last edited by a moderator: