MF Context
Structure, FVG and active ribbon context. Configuration includes pivot/ATR/ribbon/regime controls.
mf context context { ... }The complete practical guide to the native MF Fusion scripting language — from your first indicator to multi-pane studies, strategies, alerts, market-structure engines and publishing.
FurryScript is the native scripting language of MF Fusion. It is designed for market indicators, strategies, chart visuals, alerts and MF intelligence engines. The compiler in MF Quant Core is the authority: if syntax is not documented here, do not assume it exists.
Every script starts with furryscript 1.0 or furryscript 1.1. Use 1.1 when a generic dashboard is present.
furryscript 1.0
indicator "EMA Trend" { overlay: true }
input fastLen = 8
input slowLen = 21
series fast = EMA(close, fastLen)
series slow = EMA(close, slowLen)
condition bullish {
fast > slow
}
plot fast { width: 2 style: line }
plot slow { width: 2 style: line }
label BUY { when: bullish position: below }How to read it: declare the language version, choose an indicator/strategy/library shell, declare inputs and calculated series, create named conditions, then consume those declarations in visuals, signals, alerts or strategy orders.
One top-level declaration follows the version line. Supported types are indicator, strategy and library. The shell block contains only overlay.
furryscript 1.0
indicator "My Indicator" { overlay: true }
// line comment
/* block comment */| Shell | Use |
|---|---|
| indicator | Analysis, visuals and signals. |
| strategy | Rules that can use entries/exits and trade evaluation. |
| library | Library-style script package supported by the compiler. |
| overlay: true | Main price chart. |
| overlay: false | Separate study pane for a whole-script oscillator. For mixed price + oscillator layouts, use the 1.1 multi-pane API instead. |
Inputs expose values a user can configure without editing the strategy logic.
input length = 20
input enabled = true
input mode = "Fast"
input fast = 21 {
title: "Fast EMA"
group: "TREND"
tooltip: "Fast trend length"
type: number
min: 1
max: 200
step: 1
}Metadata types: number, bool, text, select, timeframe, symbol. Select inputs may define options: "A", "B", "C".
Generic calculated series intentionally use a focused set of functions: EMA, SMA, WMA, RSI and ATR. Price sources are open, high, low and close, including historical references such as close[1].
series fast = EMA(close, 21)
series slow = SMA(close, 50)
series momentum = RSI(close, 14)
series atr = ATR(14)
series previousClose = close[1]
series h1Fast = EMA(close, 21, timeframe: "H1")
series h4Atr = ATR(14, timeframe: "H4")Generic multi-timeframe series support M5, M15, H1, H4 and D1. There is no Pine-style request.security().
Conditions are named boolean rules. Each line is a clause. Use and, or, and the not prefix; comparisons support > < >= <= == !=.
condition trendUp {
fast > slow and close > fast
}
condition crossUp {
crossover(fast, slow)
}
condition entryReady {
trendUp and crossUp
}Cross functions: crossover(a,b), crossunder(a,b), cross(a,b). Conditions may reference earlier named conditions.
plot fast { width: 2 style: line }
fill fast, slow { opacity: 15 }
label BUY { when: entryReady position: below }
line stopLine { price: low extend: right width: 1 when: entryReady }
box zone { top: high bottom: low bars: 20 extend: none opacity: 12 when: entryReady }Plot styles are line and step; multi-pane plots also support histogram. Plot width is 1–8. Drawing values can use numeric literals, inputs, declared series, or OHLC/history sources.
FurryScript 1.1 can keep price visuals on the main chart while routing oscillator visuals to independent lower panes.
furryscript 1.1
indicator "Trend + Momentum" { overlay: true }
pane momentum {
title: "Momentum"
position: bottom
height: 28
scale: independent
zero_line: true
}
series rsi = RSI(close, 14)
plot rsi {
pane: momentum
style: histogram
width: 2
}Pane height is a 12–60 percent hint. Add pane: momentum to plot, fill, label or signal blocks. Untagged visuals stay on the main price pane.
signal BUY {
when: entryReady
confirm: bar.closed
mode: event
}
alertcondition LongAlert {
when: entryReady
title: "Long setup"
message: "{{symbol}} long on {{timeframe}} @ {{price}}"
frequency: once
confirm: bar.closed
}Signal confirmation: bar.closed or none. Signal modes: event, every, reversal. Alert frequency: once or every; alert confirmation: bar.closed or bar.live.
strategy.entry LONG {
when: entryReady
confirm: bar.closed
stop: ATR(14) * 1.5
target: 2R
}
strategy.exit LONG {
when: exitLong
confirm: bar.closed
}The strategy. prefix is optional for entry/exit. Prefer closed-bar confirmation unless you deliberately need supported live behavior. Generic position sizing, commission, pyramiding, trailing-stop, break-even and partial-exit commands are not part of the current generic grammar.
FurryScript provides high-level structure blocks so developers do not need to rebuild common market-context machinery from unsupported low-level syntax.
structure market { swing: 3 show_levels: true show_labels: true }
support resistance { source: market zones: true broken: true width_atr: 0.12 }
fvg gaps { min_atr: 0.15 show_bullish: true show_bearish: true show_zones: true show_labels: true mitigation: true max_zones: 6 }
liquidity liq { source: market equal_tolerance_atr: 0.15 show_buyside: true show_sellside: true show_levels: true show_sweeps: true show_labels: true max_levels: 6 }
confluence conf { structure: market bullish_trend: bullTrend bearish_trend: bearTrend min_score: 3 show_labels: true max_signals: 6 proximity_atr: 0.18 sweep_memory: 4 }Confluence can be consumed with confluence(conf, bullish) >= 3 or component checks such as confluence_has(conf, bullish, fvg).
MF engines are documented public runtime blocks. They expose specific predicates and presentation controls; their internal calculations are not generic language functions.
Structure, FVG and active ribbon context. Configuration includes pivot/ATR/ribbon/regime controls.
mf context context { ... }Primary reversal engine. Consume with turn_buy(major) and turn_sell(major).
Market regime / readiness. Consume with intelligence_ready(regime) and intelligence_forming(regime).
Continuation engine linked to dominant turns. Consume with continuation_buy(cont) / continuation_sell(cont).
Maps named long/short conditions into ATR-based stop and TP1/TP2/TP3 geometry plus journal presentation.
Scans exactly six symbols in this language version. It discovers opportunity state; it is not an order executor.
Documentation explains supported public blocks and predicates. It does not expose the proprietary source implementation of Master Furry Algo Pro or the Momentum Engine.
furryscript 1.1
indicator "Trend Dashboard" { overlay: true }
dashboard status {
title: "TREND STATUS"
position: top_right
width: 260
row "Fast EMA" value: fast decimals: 2
row "Bullish" condition: bullish true: "YES" false: "NO"
row "State" text: "ACTIVE"
}Positions: top_left, top_right, bottom_left, bottom_right. Built-ins include position, entry, sl, tp, tp1, tp2, tp3, trades, wins, losses, win_rate, net_r and avg_r.
Debug from the first compiler error downward. Most follow-on errors disappear after the earliest invalid declaration is fixed.
| Problem | Check |
|---|---|
| Unknown function/property | Use only functions and block properties in this reference. |
| Unknown identifier | Declare the input, series, condition or engine before consuming it. |
| Plot does not compile | A plot must reference a declared series. |
| when reference fails | when must reference a declared condition. |
| Dashboard rejected | Use furryscript 1.1. |
| Lower pane empty | Ensure a finite series is actually plotted with pane: paneName. |
| Radar rejected | The current Opportunity Radar grammar accepts exactly six symbols. |
EMA SMA WMA RSI ATRM5 M15 H1 H4 D1crossover crossunder crossplot fill label line box panesignal entry exit alertconditionstructure support resistance fvg liquidity confluencecontext · dominant turns · intelligence · continuation · trade · algo pro · opportunity radarFurryScript is not Pine Script, JavaScript or Python. Current generic syntax does not expose arbitrary variables/assignment, loops, arrays, custom functions, ternaries, arbitrary arithmetic series expressions, a math namespace, volume as a generic series, generic ADX/DMI, MACD, Bollinger Bands, VWAP, stochastic, Supertrend, sessions/date filters, account balance, quantity sizing, commissions/slippage, pyramiding, generic trailing stops/break-even/partial exits, HTTP access or Pine APIs.
Some MF engines internally calculate values such as ADX/DMI or volume context. That does not make those internals callable as generic FurryScript syntax.
furryscript 1.0
indicator "EMA Cross Signals" { overlay: true }
series fast = EMA(close, 8)
series slow = EMA(close, 21)
condition longCross { crossover(fast, slow) }
condition shortCross { crossunder(fast, slow) }
plot fast { width: 2 style: line }
plot slow { width: 2 style: line }
signal BUY { when: longCross confirm: bar.closed mode: event }
signal SELL { when: shortCross confirm: bar.closed mode: event }
alertcondition BuyAlert { when: longCross title: "EMA Buy" message: "{{symbol}} BUY" frequency: once confirm: bar.closed }series h1Fast = EMA(close, 21, timeframe: "H1")
series h1Slow = EMA(close, 50, timeframe: "H1")
condition h1Bull { h1Fast > h1Slow }
condition localBull { close > fast }
condition qualifiedLong { h1Bull and localBull }