iqow-jump-fade.lua 6 KB · Free, MIT license
For the IQ Option web traderoom. Quadcode does not draw HIGHER and LOWER markers on mobile.
Add it to IQ Option in 3 steps
- Get the file. Press Get the script. Your browser saves a .lua file.
- Import it in IQ Option. Open the web traderoom on the Practice balance. Click the wave icon at the bottom left of the chart, open the Scripts tab, press Import script and pick the file.
- Add it to the chart. The code opens in an editor. Click the plus button under it (Add to chart). Save is only needed after you edit the code.
Full illustrated guide, with screenshots →
Risk. Trading can lose money. A marker is a chart observation, not a prediction, and this script is checked on test data, not proven in live trading. Try it on the Practice balance first.
- Reversal
- On price
- Advanced
Marks the first 1-minute candle whose single-candle move is an extreme outlier against the last 120 returns, expecting a short snap back. The researched setting also needs Supertrend(10, 3) to disagree with the fade.
The rules
HIGHER marker
The jump z-score falls to or below -3 and the previous z-score was above -3, while Supertrend(10, 3) is down.
LOWER marker
The jump z-score rises to or above +3 and the previous z-score was below +3, while Supertrend(10, 3) is up.
A marker appears after the next candle opens and is drawn on the candle that completed the setup. It is a chart observation, not an instruction to trade.
How to read it
A green HIGHER triangle appears after a fast drop that is already fading, only when the trailing Supertrend line still points down. A red LOWER triangle is the mirror case after a fast rise while Supertrend points up. The filter is the unusual part: it deliberately fades against the trailing trend.
Indicators used
- 1-candle log return z-score (120)
- Supertrend (10, 3), required to disagree
Same view with built-in indicators: Add IQ Option's Supertrend (10, 3) and watch for a single candle that is an extreme outlier against the last two hours of one-minute returns.
Default settings
| Return deviation period | 120 |
|---|---|
| Standard deviations of the jump | 3 |
| Use the Supertrend filter | on |
| Require Supertrend to disagree | on |
| Supertrend ATR period | 10 |
| Supertrend ATR multiplier | 3 |
Every value is an input in the script settings. Platform advice is off by default.
Key points
- A jump is a single candle that moves much more than the last 120 one-minute candles usually move.
- The script measures that move as a log return divided by the recent deviation, so it adapts to quiet and busy markets.
- It fades the first extreme reading, expecting a small snap back rather than a new trend.
- The researched variant also requires Supertrend to disagree with the fade, which keeps it counter-trend on purpose.
- The test only used 18:00 to 21:00 UTC and skipped candles closing at :15; the script cannot enforce either rule, so you must.
- The expiry in the test was one minute, so this is a fast study tool and not a set-and-forget marker.
What the research found
The evidence behind this script
This script comes from the long rolling test over 2016-2026, where the jump-fade family was the most often picked forex rule. The numbers below are for the exact researched variant: 1-minute candles, 1-minute expiry, Supertrend disagreement.
- Unseen hold-out 2024-2026
- 64.7%
- Every week 2016-2021
- 76.5%
- Session used in the research
- 18:00-21:00 UTC
- Unseen forward test 1-6 Nov
- not tested
736 trades; the last part of the long test, never used for picking
10,541 trades; the same rule traded in every week
also skip candles whose close lands on :15
left out of the frozen forward list because it is concentrated in one session
A high number on 1-minute forex candles can come from bid-price behaviour that IQ Option's feed does not share. Treat this as a research idea with an explicit session instruction, not as a result you can expect.
Limitations. The long test only used this rule from 18:00 to 21:00 UTC and skipped signals whose candle closed at :15. The script has no clock, so it marks all day and you must apply that session yourself. It uses a 1-minute expiry, so a slow click loses the measured edge. Not included in the unseen-day forward test because of its time concentration. Internal test only: outside price data, not IQ Option's own feed. Test on the Practice balance before risking real funds.
Complete source code
The download and this preview resolve to the same reviewed file. SHA-256: 650f0d5e07eb5609a392a84d90238a1e984f0ad66818b93d68d8626cc29d5c0a
-- SPDX-License-Identifier: MIT
-- IQOptionWiki QCS Library
-- IQOW Jump Fade v1.0.0
--
-- A jump is one candle whose log return is an extreme outlier against the last
-- 120 one-minute returns. The script marks the first candle that reaches 3
-- standard deviations of that jump measure and expects a short snap back.
-- It is built for 1-minute candles with a 1-minute expiry.
--
-- HIGHER: the jump z-score falls to or below -3 and the previous z-score was
-- above -3 (a fast drop that is fading).
-- LOWER: the jump z-score rises to or above +3 and the previous z-score was
-- below +3 (a fast rise that is fading).
--
-- The internal long test used this script only between 18:00 and 21:00 UTC and
-- skipped signals whose candle closed at :15. The script has no clock, so it
-- still marks outside that session; you must choose when you use it.
--
-- Markers use the previous completed candle: they appear after the next candle
-- opens and are shifted back one bar onto the candle that qualified.
-- Educational chart tool only. It does not place trades, choose an expiry,
-- predict outcomes, or guarantee results. Test on a Practice balance first.
instrument {
name = "IQOW Jump Fade",
short_name = "IQOW JUMPFADE",
overlay = true
}
input_group {
"1. Jump measure",
return_period = input (120, "Return deviation period", input.integer, 10, 500),
jump_threshold = input (3, "Standard deviations of the jump", input.double, 1, 8, 0.1, false)
}
input_group {
"2. Supertrend filter",
supertrend_filter_enabled = input { default = true, name = "Use the Supertrend filter", type = input.boolean },
supertrend_must_disagree = input { default = true, name = "Require Supertrend to disagree", type = input.boolean },
supertrend_atr_period = input (10, "Supertrend ATR period", input.integer, 1, 100),
supertrend_multiplier = input (3, "Supertrend ATR multiplier", input.double, 0.5, 10, 0.1, false)
}
input_group {
"Display and advice",
filter_lines_visible = input { default = true, type = input.plot_visibility },
signals_visible = input { default = true, type = input.plot_visibility },
advice_enabled = input { default = false, name = "Enable platform advice", type = input.boolean }
}
input_group {
"Colors",
supertrend_up_color = input { default = "#25E154", type = input.color },
supertrend_down_color = input { default = "#FF6C58", type = input.color },
line_width = input { default = 1, type = input.line_width },
higher_color = input { default = "#25E154", type = input.color },
lower_color = input { default = "#FF6C58", type = input.color },
signal_text_color = input { default = "#FFFFFF", type = input.color }
}
-- One-candle log return and its trailing deviation. Population deviation is
-- the sample form scaled by sqrt ((n - 1) / n), which is what the research used.
log_return = change (log (close))
return_deviation = stdev (log_return, return_period) * math.sqrt ((return_period - 1) / return_period)
return_deviation_previous = return_deviation [1]
jump_z = log_return / max (return_deviation_previous, 1e-10)
-- Supertrend, same recursion as the official library indicator.
band_offset = rma (tr, supertrend_atr_period) * supertrend_multiplier
raw_up = hl2 - band_offset
raw_down = hl2 + band_offset
trail_up = iff (not na (trail_up) and close [1] > trail_up [1], max (raw_up, trail_up [1]), raw_up)
trail_down = iff (not na (trail_down) and close [1] < trail_down [1], min (raw_down, trail_down [1]), raw_down)
trend_is_up = iff (close > trail_down [1], true, iff (close < trail_up [1], false, nz (trend_is_up [1], true)))
-- Current-bar scalars for the Lua rule logic.
local z_now = get_value (jump_z, nil)
local z_previous = get_value (jump_z [1], nil)
local deviation_now = get_value (return_deviation_previous, nil)
local trend_now = get_value (trend_is_up, nil)
local trend_before = get_value (trend_is_up [1], nil)
local trail_before = get_value (trail_up [1], nil)
local trend_ready = (not supertrend_filter_enabled) or (trend_now ~= nil and trend_before ~= nil and trail_before ~= nil)
local data_is_ready =
z_now ~= nil and
z_previous ~= nil and
deviation_now ~= nil and deviation_now > 0 and
trend_ready
-- First candle that crosses the outer jump level.
local higher_event = data_is_ready and z_previous > -jump_threshold and z_now <= -jump_threshold
local lower_event = data_is_ready and z_previous < jump_threshold and z_now >= jump_threshold
-- Optional Supertrend filter: agree with the fade, or (by default) disagree with it.
local higher_trend_allows =
(not supertrend_filter_enabled) or
(supertrend_must_disagree and not trend_now) or
((not supertrend_must_disagree) and trend_now)
local lower_trend_allows =
(not supertrend_filter_enabled) or
(supertrend_must_disagree and trend_now) or
((not supertrend_must_disagree) and not trend_now)
higher_setup = conditional (higher_event and higher_trend_allows)
lower_setup = conditional (lower_event and lower_trend_allows)
-- Confirm only a new setup on the previous completed candle.
confirmed_higher = conditional (
get_value (higher_setup [1], false) and
not get_value (higher_setup [2], false)
)
confirmed_lower = conditional (
get_value (lower_setup [1], false) and
not get_value (lower_setup [2], false)
)
if filter_lines_visible and supertrend_filter_enabled then
plot (iff (trend_is_up, trail_up, trail_down), "Supertrend", get_value (trend_is_up, true) and supertrend_up_color or supertrend_down_color, line_width)
end
if signals_visible then
plot_shape (
confirmed_higher,
"JUMP HIGHER",
shape_style.triangleup,
shape_size.small,
higher_color,
shape_location.belowbar,
-1,
"HIGHER",
signal_text_color
)
plot_shape (
confirmed_lower,
"JUMP LOWER",
shape_style.triangledown,
shape_size.small,
lower_color,
shape_location.abovebar,
-1,
"LOWER",
signal_text_color
)
end
-- QCS advice is a platform notification state only; it does not place trades.
if advice_enabled and
get_value (confirmed_higher, false) and
not get_value (confirmed_lower, false) then
advise (advice.buy)
elseif advice_enabled and
get_value (confirmed_lower, false) and
not get_value (confirmed_higher, false) then
advise (advice.sell)
else
advise (advice.neutral)
end
More reversal scripts
- Reversal
- Own panel
- Intermediate
Three Oscillators
Counts how many of three oscillators have just crossed back out of their extreme zone and marks the candle where at least two agree. It follows the article's trio setup, where all three is strongest and two of three is enough.
Indicators: RSI (14, 30/70) · CCI (20, +/-100) · Williams %R (14, -80/-20)
- Reversal
- On price
- Intermediate
Z-Score Fade
Marks the first 1-minute candle that closes 3 standard deviations away from its SMA(20), expecting a short snap back toward the average. It is a plain statistical-stretch setup for crypto pairs.
Indicators: Z-score bands (SMA 20, 3 standard deviations)
- Reversal
- On price
- Intermediate
Z-Score Fade Pro
A stricter Z-Score Fade: it marks the first 1-minute candle that reaches 2 standard deviations from its SMA(40), but only while price is not chasing far from its EMA(100) and, by default, only when Supertrend agrees with the fade.
Indicators: Z-score (SMA 40, 2 population deviations) · EMA 100 and ATR 14 chase filter · Supertrend (10, 3)
Download all 74 scripts as one ZIP · MIT License, provided “as is”, without warranty. IQOptionWiki is independent of the IQ Option platform operator. Nothing here is investment advice or a guarantee of results.