OPEN-SOURCE SCRIPT

SteveFi Trade Cockpit

386
The dashboard has 15 rows:

| Row | Purpose |
| ----------- | ---------------------------------------------------- |
| **ACTION** | Final decision output |
| **AGG** | Weighted overall score using all 13 major attributes |
| **EWave** | Elliott/Wolfe/Stoch/RSI-style timing score |
| **CANSLIM** | CANSLIM-style technical quality score |
| **RS** | Relative strength vs QQQ |
| **52W** | Distance from 52-week high |
| **Vol** | Current volume vs average volume |
| **Accum** | Accumulation vs distribution pressure |
| **Pivot** | Whether price is near a breakout/pivot area |
| **MR** | Mean reversion / extension risk |
| **Trend** | Overall trend structure |
| **Stoch** | Momentum reset/exhaustion |
| **Price** | Price action confirmation |
| **INV** | Invalidation level |
| **Target** | Potential upside target |

The color coding is:

| Color | Meaning |
| ------------- | ---------------------------------------------- |
| **Green** | Positive / bullish |
| **Orange** | Watch / caution / constructive but not perfect |
| **Dark gray** | Neutral / waiting |
| **Red** | Negative / risk / failure |

---

# 1. ACTION

This is the **main output**.

Possible values:

| ACTION | Meaning |
| ------------------ | --------------------------------------------------------------------------------- |
| **BUY TRIGGER** | Aggregate score is strong, price confirms, not invalidated, and not too stretched |
| **BUY WATCH** | Setup is building, but not fully confirmed |
| **TRIM / CAUTION** | Momentum may be rolling over or price is stretched |
| **WAIT** | Some positives exist, but not enough for action |
| **NO TRADE** | Weak overall setup |
| **INV** | Invalidation level broke. Setup failed. |

The action row is based mostly on **AGG**, not just EWave.

Current logic:

```text
BUY TRIGGER =
AGG >= 80
AND Price is Confirmed
AND not invalidated
AND MR is not Stretched
```

If you turn on:

```text
Require CANSLIM Filter for BUY TRIGGER
```

Then BUY TRIGGER also requires a minimum CANSLIM-quality pass.

That is the stricter version.

---

# 2. AGG

**AGG** is the most important score now.

It is the weighted aggregate score based on all major dashboard factors. This is the “whole chart quality” score.

Current weighting:

| Attribute | Weight |
| ----------- | -----: |
| **CANSLIM** | 21% |
| **RS** | 13% |
| **Price** | 12% |
| **Trend** | 10% |
| **Pivot** | 10% |
| **52W** | 8% |
| **EWave** | 8% |
| **Vol** | 6% |
| **MR** | 5% |
| **Accum** | 3% |
| **Stoch** | 2% |
| **INV** | 1% |
| **Target** | 1% |

This weighting intentionally makes the dashboard **less wave-heavy**.

The thinking is:

> Great stocks with strong RS and confirmed price action matter more than a possible wave count.

AGG grades:

| AGG Score | Grade | Meaning |
| -----------: | ----- | ---------------------------------- |
| **85+** | A+ | Excellent |
| **80–84** | A | Strong / trigger zone if confirmed |
| **70–79** | B | Good watchlist setup |
| **60–69** | C | Developing but not there yet |
| **50–59** | D | Weak / wait |
| **Under 50** | Weak | No trade |

How I’d use it:

| AGG | Interpretation |
| -----------: | ------------------------------------------------- |
| **80+** | Potential action zone |
| **70–79** | Watch closely |
| **60–69** | Setup forming, still early |
| **Under 60** | Probably ignore unless you have a separate thesis |

---

# 3. EWave

**EWave** is the Elliott/Wolfe-style timing score.

It uses:

| EWave Component | Points |
| --------------------------------------------- | -----: |
| Bullish trend context | 20 |
| Fib pullback / possible Wave 2 or Wave 4 zone | 20 |
| RSI bullish divergence | 20 |
| Stoch reset | 15 |
| Wolfe-like structure | 10 |
| Price action confirmation | 10 |

Maximum is **95**.

Dashboard examples:

| EWave | Meaning |
| ----------------------- | ------------------------ |
| **75+ / A** | Strong wave/timing setup |
| **60–74 / B Watch** | Setup is building |
| **40–59 / C Early** | Early or incomplete |
| **Under 40 / No Trade** | Weak timing setup |

Important: **EWave is only 8% of AGG now.**

That means it helps with timing, but it does not dominate the decision.

Best interpretation:

> EWave tells you whether the pullback/structure/timing looks constructive.

It does **not** mean “this is definitely Wave 3.”

---

# 4. CANSLIM

**CANSLIM** is a technical approximation of CANSLIM-style stock quality.

It does not use IBD’s proprietary EPS, sales, or fund ownership data. TradingView cannot reliably recreate that from Pine.

Instead, it uses technical leadership proxies:

| CANSLIM Component | Points |
| ---------------------------- | -----: |
| RS vs benchmark | 20 |
| RS line near/new high | 15 |
| Distance from 52-week high | 15 |
| Volume vs average | 15 |
| Accumulation vs distribution | 15 |
| Pivot/base status | 20 |

Maximum is **100**.

Grades:

| CANSLIM Score | Grade | Meaning |
| ------------: | ----- | -------------------------------------- |
| **80+** | A | Strong CANSLIM-style technical profile |
| **65–79** | B | Good |
| **50–64** | C | Mixed |
| **Under 50** | Weak | Not acting like a leader |

This is now the **largest weight in AGG** at **21%**.

That’s intentional.

The dashboard is saying:

> Stock quality and leadership come first. Timing comes second.

---

# 5. RS

**RS** means relative strength versus the benchmark, currently defaulted to **QQQ**.

It compares the stock’s performance to QQQ over the selected lookback period.

Possible values:

| RS | Meaning |
| ---------- | ------------------------------------------------------------------------- |
| **Strong** | Stock is outperforming QQQ and its RS line is above its RS moving average |
| **OK** | Stock is outperforming QQQ, but not as strongly |
| **Weak** | Stock is underperforming QQQ |

Why this matters:

CANSLIM-style trading wants **leaders**, not laggards.

A stock with **RS Strong** is showing better demand than the market.

Best read:

| RS | Interpretation |
| ------------------ | ------------------------ |
| **Strong / green** | Good leader behavior |
| **OK / orange** | Acceptable but not elite |
| **Weak / red** | Caution |

---

# 6. 52W

**52W** shows how far the stock is from its 52-week high.

Example:

```text
-6.1%
```

Means the stock is 6.1% below its 52-week high.

Interpretation:

| 52W Distance | Meaning |
| ---------------: | ----------------- |
| **0% to -5%** | Very strong |
| **-5% to -15%** | Good / acceptable |
| **-15% to -25%** | Caution |
| **Below -25%** | Weak / damaged |

Why it matters:

CANSLIM usually prefers stocks near highs, not stocks buried far below highs.

A stock near highs is often showing institutional demand.

---

# 7. Vol

**Vol** shows current volume as a percentage of average volume.

Example:

```text
89%
```

Means current volume is 89% of the average volume.

Interpretation:

| Vol | Meaning |
| -------------- | --------------------------------------- |
| **140%+** | Strong demand / breakout-quality volume |
| **100–139%** | Decent |
| **Under 100%** | Light / not confirmed |

Why it matters:

A breakout or strong move is more convincing when volume expands.

For CANSLIM-style buying, strong volume gives confirmation that bigger buyers may be involved.

One note: on intraday bars or during the trading day, volume can look low until the day completes. On daily charts, interpret it best near/after the close.

---

# 8. Accum

**Accum** tries to detect whether the stock has more accumulation or distribution pressure.

It compares:

* Up days on above-average volume
* Down days on above-average volume

Possible values:

| Accum | Meaning |
| ----------- | ----------------------------------------------------- |
| **Accum** | More heavy-volume up days than heavy-volume down days |
| **Neutral** | No clear edge |
| **Distrib** | More heavy-volume down days than up days |

Why it matters:

CANSLIM cares about institutional accumulation.

A stock can look okay on price, but if it is under distribution, the setup is lower quality.

---

# 9. Pivot

**Pivot** tells you where price is relative to a recent breakout/base area.

It uses the recent high over the base lookback period as a rough pivot reference.

Possible values:

| Pivot | Meaning |
| --------------- | ---------------------------------------------- |
| **Breakout** | Price broke above pivot with strong volume |
| **Near Pivot** | Price is within about 5% below the pivot |
| **Above Pivot** | Price is above pivot, but volume is not strong |
| **Extended** | Price is more than about 5% above pivot |
| **Base Low** | Price is not near a useful pivot area |

Why it matters:

The best setups are often near proper buy areas.

For your dashboard:

| Pivot | Interpretation |
| ----------------------- | ------------------ |
| **Breakout / green** | Strong |
| **Near Pivot / orange** | Watch closely |
| **Extended / red** | Be careful chasing |
| **Base Low / gray** | Not actionable yet |

---

# 10. MR

**MR** means mean reversion / extension risk.

It measures how far price is from the fast EMA using ATR.

Example:

```text
Extended 1.73x ATR
```

Means price is 1.73 ATR above the fast EMA.

Possible values:

| MR | Meaning |
| ------------- | ---------------------------------------------------------- |
| **Discount** | Price pulled back below fast EMA but remains above mid EMA |
| **Normal** | Price is within normal range of fast EMA |
| **Extended** | Price is above normal range |
| **Stretched** | Price is too far extended |
| **Weak** | Price is below mid EMA |
| **n/a** | Not enough data |

Why this matters:

This row helps prevent chasing.

A stock can be strong but too extended for a fresh entry.

Important trigger rule:

```text
BUY TRIGGER cannot fire if MR = Stretched
```

That’s a guardrail.

Best read:

| MR | Interpretation |
| --------------------- | ------------------------ |
| **Discount / green** | Pullback zone |
| **Normal / neutral** | Healthy |
| **Extended / orange** | Be careful |
| **Stretched / red** | Probably not a fresh buy |
| **Weak / red** | Structure may be broken |

---

# 11. Trend

**Trend** gives the broader moving-average structure.

Possible values:

| Trend | Meaning |
| --------------- | ------------------------------------------------------------------- |
| **Bull Strong** | Price above mid EMA, fast EMA above mid EMA, mid EMA above long SMA |
| **Bull Basic** | Price and fast trend are above mid EMA |
| **Neutral** | Mixed |
| **Bear** | Price and averages are bearish |

This row is important because you generally want to buy pullbacks in strong trends, not fight broken charts.

Best setup:

```text
Trend = Bull Strong
```

---

# 12. Stoch

**Stoch** shows Stochastic momentum condition.

Possible values:

| Stoch | Meaning |
| ------------- | ------------------------------------------------------------ |
| **Reset** | Stoch recently got oversold/reset and is turning back up |
| **K>D** | Momentum is positive, but not necessarily from a fresh reset |
| **Roll Over** | Stoch was overbought and crossed down |
| **No Reset** | No useful signal |

Why this matters:

This came from the original HeidingOut-style method:

> Price action leads, Stoch/RSI confirm.

Best entry setup:

```text
Stoch = Reset
```

Caution setup:

```text
Stoch = Roll Over
```

But Stoch is only **2% of AGG** now because oscillators can be noisy.

---

# 13. Price

**Price** is one of the most important rows.

It checks whether price action has actually confirmed.

It requires:

* Higher-low structure
* Close above fast EMA
* Bullish candle
* Close above prior bar high

Possible values:

| Price | Meaning |
| ------------- | -------------------------------------------- |
| **Confirmed** | Price action supports the setup |
| **Waiting** | Setup may exist, but price has not confirmed |

This is weighted **12%** in AGG, which is high.

Why?

Because a setup without price confirmation is still just a possibility.

A BUY TRIGGER requires:

```text
Price = Confirmed
```

---

# 14. INV

**INV** is the invalidation level.

This is the key structural low from the detected impulse/pullback logic.

Plain English:

> If price closes below this level, the setup is probably broken.

Possible values:

| INV | Meaning |
| ----------- | --------------------------------- |
| Price level | Key invalidation reference |
| n/a | Not enough structure detected yet |

Important:

If price breaks below INV, ACTION becomes:

```text
INV
```

Invalidation overrides everything.

Even if RS is strong and CANSLIM is good, a broken structure means the setup has failed.

---

# 15. Target

**Target** shows the projected upside target and upside percentage.

It uses a **1.618 Fib extension** from the detected impulse.

Example:

```text
145.20 / +12.4%
```

Means:

* Potential target: 145.20
* Upside from current price: +12.4%

This is intentionally weighted only **1%** in AGG.

Why so low?

Because targets are estimates. Useful, but not reliable enough to drive the decision.

Use Target as:

> “Is there enough upside to justify the risk?”

Not as:

> “This will definitely go there.”

---

# How the AGG score thinks

The new AGG is intentionally biased toward objective leadership and confirmation.

Current hierarchy:

## Most important

* CANSLIM
* RS
* Price
* Trend
* Pivot

These answer:

> Is this a quality leader acting correctly?

## Middle importance

* 52W
* EWave
* Vol
* MR

These answer:

> Is it near highs, reasonably timed, supported by volume, and not too stretched?

## Lower importance

* Accum
* Stoch
* INV
* Target

These help, but do not dominate.

---

# How to read a good setup

A very good setup would look like:

| Row | Ideal |
| ------- | -------------------------- |
| ACTION | BUY TRIGGER |
| AGG | 80+ |
| EWave | 60+ |
| CANSLIM | 65+ |
| RS | Strong |
| 52W | Better than -15% |
| Vol | 100%+ or 140%+ on breakout |
| Accum | Accum |
| Pivot | Near Pivot or Breakout |
| MR | Normal or Discount |
| Trend | Bull Strong |
| Stoch | Reset or K>D |
| Price | Confirmed |
| INV | Below nearby structure |
| Target | Positive upside |

That is the kind of dashboard that says:

> This is worth real attention.

---

# How to read your ALAB screenshot

From your screenshot, the dashboard looked roughly like:

| Row | Reading |
| ------- | ------------------ |
| ACTION | WAIT |
| EWave | 40 / C Early |
| CANSLIM | 57 / C |
| RS | Strong |
| 52W | -6.1% |
| Vol | 89% |
| Accum | Accum |
| Pivot | Near Pivot |
| MR | Extended 1.73x ATR |
| Trend | Bull Strong |
| Stoch | K>D |
| Price | Waiting |
| Target | n/a |

That says:

**Good stock. Strong RS. Near highs. In a bullish trend. But not confirmed yet, volume is light, and price is a little extended.**

So **WAIT** makes sense.

It is not saying “bad stock.”

It is saying:

> Good candidate, but not a clean entry yet.

---

# The key dashboard philosophy

This is now the right structure:

## CANSLIM finds the leader

Rows:

* CANSLIM
* RS
* 52W
* Vol
* Accum
* Pivot

## EWave helps timing

Rows:

* EWave
* Stoch
* Price
* MR

## Risk/reward controls the trade

Rows:

* INV
* Target
* MR

## AGG combines it all

AGG answers:

> Overall, is this setup strong enough to act on?

---

# My simple decision rules

Use it like this:

## BUY TRIGGER

Only consider buying when:

* ACTION = BUY TRIGGER
* AGG is 80+
* Price is Confirmed
* MR is not Stretched
* INV is clear
* Target gives enough upside

## BUY WATCH

Put on watchlist when:

* ACTION = BUY WATCH
* RS is Strong
* CANSLIM is at least C/B
* Pivot is Near Pivot
* Price is Waiting

## WAIT

Do nothing when:

* Stock is good, but price is not confirmed
* MR is extended
* Volume is not there
* EWave is early

## TRIM / CAUTION

Consider trimming when:

* Stoch rolls over
* MR becomes Stretched
* Price action weakens after a run

## INV

Respect it.

If INV triggers, the setup is broken. Reassess from scratch.

免責聲明

這些資訊和出版物並非旨在提供,也不構成TradingView提供或認可的任何形式的財務、投資、交易或其他類型的建議或推薦。請閱讀使用條款以了解更多資訊。