The following table was compiled to help you
translate indicators expressed in Metastock Formula Language to Trademan.
The list of Metastock functions comes from the Equis Formula Primer.
This document can be obtained from http://groups.yahoo.com/group/equismetastock/files/formulabook.zip
. You will have to join the Yahoo group, if you haven't already.
For most of the Metastock functions which are technical indicators, I have had to rely on sources other than the Formula Primer or Equis for a description. The simpler functions should behave very similarly to the description provided in that book, but please don't hold me to that. I believe that the "equivalent" expressions provided here will produce results that would be expected from a given indicator. Candlestick function expressions represent the behavior described in the Formula Primer, but may not exactly replicate Metastock's behavior due to factors left ambiguous in the Equis description.
You can find descriptions of technical indicators online at:
By using parm1, parm2, and parm3 in the definitions,
I can show the new indicators exactly the way they would have to be defined
to be used as functions in other indicators. That way, you can copy
and paste a definition directly to the formula definition dialog.
|
|
|
| Absolute Value -- syntax: abs(data) | abs(data) |
| Accumulation/Distribution -- syntax: ad() | Accumulation/Distribution |
| Accumulation Swing Index -- syntax: aswing(LIMIT MOVE) | Accumulative Swing Index(LIMIT MOVE, trailing stop) |
| Addition -- syntax: add(data1, data2) or data1 + data2 | data1 + data2 or plus(data1, data2) |
| Alert -- syntax: alert(condition, periods) | since(condition, bars) |
| Arc Tangent -- syntax: atan(y data, x data) | |
| Aroon Down -- syntax: aroondown(periods) | Aroon(periods, 0, 0, 1) |
| Aroon Up -- syntax: aroonup(periods) | Aroon(periods, 0, 0, 0) |
| Average Directional Movement -- syntax: adx(periods) | Directional Movement(periods, 0, 0, 2) |
| Average True Range -- syntax: atr(periods) | Average True Range(periods) |
| Bars Since -- syntax: barssince(data) | barsSince(data) |
| Bollinger Band Bottom -- syntax: bbandbot(data, periods, method, deviation), where method is SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, or VARIABLE | <method>(data, periods) - deviation*sdev(data, periods), where <method> is replaced by the Trademan function corresponding to the one that would be used by Metastock. See the Moving Average item. |
| Bollinger Band Top -- syntax: bbandtop(data, periods, method, deviation), where method is SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, or VARIABLE | <method>(data, periods) + deviation*sdev(data, periods), where <method> is replaced by the Trademan function corresponding to the one that would be used by Metastock. See the Moving Average item. |
| Buying Pressure -- syntax: buyp() | buyp or buyp(5) |
| Ceiling -- syntax: ceiling(data) | Define mceiling(data) as
int(highest(parm1, size(parm1)+1)+1) |
| Chaikin A/D Oscillator -- syntax: co() | Chaikin Oscillator or Chaikin Oscillator(10, 3) |
| Chaikin's Money Flow -- syntax: cmf() | mov((2*close-high-low)/(high-low)*volume,21)/mov(volume,21) |
| Chande Momentum Oscillator -- syntax: cmo(data, periods) | Chande Momemtum Oscillator(periods) is cmo(close, parm1)
Define cmo(data, periods) to use in other formulas as: 100*(cmo1(parm1, parm2)-cmo2(parm1,parm2))/ (cmo1(parm1,parm2)+cmo2(parm1,parm2), where cmo1 = mov(if(parm1>delay(parm1,1), delta(parm1), 0), parm2), and cmo2 = mov(if(parm1<delay(parm1,1), -1*delta(parm1), 0), parm2) |
| Commodity Channel Index (Equis) -- syntax: ccie(periods) | |
| Commodity Channel Index (Standard) -- syntax: cci(periods) | Commodity Channel Index(periods) |
| Commodity Selection Index -- syntax: csi(periods, value, margin, commission) | Commodity Selection Index(value, margin, commission)
Define Commodity Selection Index as: ADXR(14)*ATR(14)*parm1/sqrt(parm2)/(150+parm3)*100 (Wilder's definition) |
| Correlation Analysis -- syntax: correl(indep data, dep data, period, shift) | corr(indep data, delay(dep data, shift), period) |
| Cosine -- syntax: cos(data) | cos(data) |
| Cross -- syntax: cross(data1, data2) returns 1 at crossover, 0 otherwise | Define mcross(data1, data2) as
if(pcross(parm1, parm2)>0, pcross(parm1, parm2), 0) |
| Cumulate -- syntax: cum(data) | accum(data) |
| Day of Month -- syntax: dayofmonth() | Define dayofmonth as date()%100 |
| Day of Week -- syntax: dayofweek() | weekday() |
| Delta -- syntax: delta(type, date, price, interest, dividend) | Define mdelta(type, date, price, interest, dividend) as
erf(d1(parm2, parm3, parm4, parm5)), where d1 is part of Black-Scholes definition. You must supply dividend dependence. |
| Dema -- syntax: dema(data, periods) | Define dema(data, periods) as
2*emov(parm1, parm2) - emov(emov(parm1, parm2), parm2) |
| Demand Index -- syntax: di() | Demand Index(5) (formula indicator example) |
| Detrended Price Oscillator -- syntax: dpo(periods) | Detrended Price Oscillator(periods) |
| Directional Movement Index -- syntax: dx(periods) | (Directional Movement(periods)-Directional Movement(periods,0,0,1))/
(Directional Movement(periods)+Directional Movement(periods,0,0,1))*100 |
| Directional Movement Rating -- syntax: adxr(periods) | ADXR(periods) |
| Divergence -- syntax: divergence(data1, data2, min change) | divergence(data1, data2, min change) is defined as
if(delta(zigzag(parm1, parm3))> 0, if(delta(zigzag(parm2, parm3)) < 0, 1, 0), if(delta(zigzag(parm2, parm3)) > 0, -1, 0)) |
| Division -- syntax: div(data1, data2) or data1/data2 | data1/data2 or div(data1, data2) |
| Dynamic Momentum Index -- syntax: dmi(data) | Define dmi(data) as
100 - (100/(1+RS(parm1)), where RS is defined as: emov(pgains(parm1,1), 2*vperiod-1)/ emov(plosses(parm1,1),2*vperiod-1) where vperiod is if(14/svol(parm1) < 5, 5, if(14/svol(parm1) > 30, 30, 14/svol(parm1))) where svol is sdev(parm1,5)/mov(sdev(parm1, 5), 10) (not necessarily Metastock or Chande formulation) |
| Ease of Movement -- syntax: eom(periods, method), where method is SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, and VARIABLE | <method>(Ease of Movement(14,0,1), periods), where <method> is
mov for SIMPLE, emov for EXPONENTIAL, wmov for WEIGHTED, tsf for TIMESERIES, and tmov for TRIANGULAR. The variable moving average is available as a formula indicator. |
| Exponent -- syntax: exp(data) | exp(data) |
| Fast Fourier Transform -- syntax: fft(data, periods, length, detrend or mean, amplitude or power) | |
| Floor -- syntax: floor(data) | Define mfloor(data) as
int(lowest(parm1, size(parm1))) |
| Forecast Oscillator -- syntax: forecastosc(data, periods) | Define forecastosc(data, periods) as
(parm1 - delay(lr(parm1, parm2), 1)-delay(slope(parm1,parm2),1))/ parm1*100 |
| Formula Call -- syntax: fml("<formula name>") | <formula name> |
| Formula Variable Call -- syntax: fmlvar("<formula name>", "<variable name>") | |
| Fraction -- syntax: frac(data) | Define frac(data) as
parm1 - int(parm1) |
| Gamma -- syntax: gamma(type, date, price, interest, dividend) | |
| Gap Down -- syntax: gapdown() | if (high < delay(low,1), 1, 0) |
| Gap Up -- syntax: gapup() | if (low > delay(high,1), 1, 0) |
| Herrick Payoff Index -- syntax: hpi(cents, multiplying factor) | |
| Highest -- syntax: highest(data) | Define highestever(data) as
highest(parm1, size(parm1)) |
| Highest Bars Ago -- syntax: highestbars(data) | Define highestbars(data) as
barsSince(parm1 == highest(parm1, size(parm1))) |
| Highest High Value -- syntax: hhv(data, periods) | highest(data, periods) |
| Highest High Value Bars Ago -- syntax: hhvbars(data, periods) | Define barsSinceHighest(data, periods) as
barsSince(parm1 == highest(parm1, parm2)) |
| Highest Since -- syntax: highestsince(nth, condition, data) | Define highestsincenth(nth, condition, data) as
highest(parm3, barsSinceNth(parm2, parm1)) |
| Highest Since Bars Ago -- syntax: highestsincebars(nth, condition, data) | Define barsSinceHighestSince(nth, condition, data) as
highest(parm3, barsSinceNth(parm2, parm1)) |
| If -- syntax: if(condition, data if true, data if false) | if(condition, data if true, data if false) |
| Inertia -- syntax: inertia(periods, RVI periods) | Define inertia(periods, RVI periods) as
mov(relvol(parm1, parm2), where relvol is (100*relvoluph(parm1)/(relvoluph(parm1)+relvoldownh(parm1)) + 100*revolupl(parm1)/(relvolupl(parm1)+relvoldownl(parm1)))/2 relvoluph is emov(if(delta(high)>0,sdev(high,10),0),parm1) relvoldownh is emov(if(delta(high)<0,sdev(high,10),0),parm1) relvolupl is emov(if(delta(low)>0,sdev(low,10),0),parm1) relvoldownl is emov(if(delta(low)<0,sdev(low,10),0),parm1) |
| Input -- syntax: input("<prompt text>", min value, max value, default value) | parameters are inputs |
| Inside -- syntax: inside() | if (high < delay(high,1) && low > delay(low, 1), 1, 0) |
| Integer -- syntax: int(data) | int(data) |
| Intraday Momentum Index -- syntax: imi(periods) | |
| Klinger Volume Oscillator -- syntax: kvo() | |
| Last Value in Data Array -- syntax: lastvalue(data) | last(data) |
| Linear Regression Indicator -- syntax: linearreg(data, periods) | lr(data, periods) |
| Linear Regression Slope -- syntax: linregslope(data, periods) | slope(data, periods) |
| Logarithm (natural) -- syntax: log(data) | ln(data) |
| Lowest -- syntax: lowest(data) | Define lowerstever(data) as
lowest(parm1, size(parm1)) |
| Lowest Bars Ago -- syntax: lowestbars(data) | Define lowestbars(data) as
barsSince(parm1 == lowest(parm1, size(parm1))) |
| Lowest Low Value -- syntax: llv(data, periods) | lowest(data, period) |
| Lowest Low Value Bars Ago -- syntax: llvbars(data, periods) | Define barsSinceHighest(data, periods) as
barsSince(parm1 == lowest(parm1, parm2)) |
| Lowest Since -- syntax: lowestsince(nth, condition, data) | Define lowestSinceNth(nth, condition, data) as
lowest(parm3, barsSinceNth(parm2, parm1)) |
| Lowest Since Bars Ago -- syntax: lowestsincebars(nth, condition, data) | Define barsSinceLowestSince(nth, condition, data) as
lowest(parm3, barsSinceNth(parm2, parm1)) |
| MACD -- syntax: macd() | MACD |
| Market Facilitation Index -- syntax: marketfacindex() | if (delta((high-low)/volume) > 0, if (delta(volume) > 0, 4, 2),
if(delta(volume) > 0, 1, 3)), Green is 4, Fade is 3, Fake is 2, and Squat is 1. |
| Mass Index -- syntax: mass(periods) | Mass Index(periods, 0, 9) |
| Maximum -- syntax: max(data1, data2) | max(data1, data2) |
| Median Price -- syntax: mp() | median (This is a data input) |
| MESA Lead Sine -- syntax: mesaleadsine(cycle length) | |
| MESA Sine Wave -- syntax: mesasinewave(cycle length) | |
| Midpoint -- syntax: mid(data, periods) | Define midpoint(data, periods) as
(highest(parm1, parm2)+lowest(parm1, parm2))/2 |
| Minimum -- syntax: min(data1, data2) | min(data1, data2) |
| Minus Directional Movement -- syntax: mdi(periods) | Directional Movement(periods, 0, 0, 1) |
| Modulus -- syntax: mod(data1, data2) | data1 % data2 or mod(data1, data2) |
| Momentum -- syntax: mo(periods) | Momentum(periods, 0, 1) |
| Money Flow Index -- syntax: mfi(periods) | Money Flow Index(periods) |
| Month -- syntax: month() | (date() % 10000)/100 |
| Moving Average -- syntax: mov(data, periods, method), where method is one of SIMPLE(S), EXPONENTIAL(E), TIMESERIES(T), TRIANGULAR(TRI), WEIGHTED(W), VARIABLE(VAR), or VOLUMEADJUSTED(VOL) | mov(data, period) for SIMPLE
emov(data, period) for EXPONENTIAL wmov(data, period) for WEIGHTED tsf(data, period) for TIMESERIES define tmov(data, periods) as: mov(mov(parm1,halve(parm2)), halve(parm2)) for TRIANGULAR, where halve(periods) is if(int(parm1)%2 == 0, int((parm1+1)/2)+1, int((parm1+1)/2)) VARIABLE and VOLUMEADJUSTED available as formula indicators |
| Multiplication -- syntax: mul(data1, data2) | data1 * data2 or mult(data1, data2) |
| Negative -- syntax: neg(data) | -1*data |
| Negative Volume Index -- syntax: nvi() | Negative Volume Index |
| On Balance Volume -- syntax: obv() | On Balance Volume |
| Option Expiration -- syntax: optionexp() | |
| Option Life -- syntax: life(expiration date mmddyy) | Define getmmddyy(date) as
if (parm1 > 200000, 20000000 + parm1 - date(), 19000000 + parm1 - date()) |
| Outside -- syntax: outside() | if(delta(high) > 0 && delta(low) < 0, 1, 0) |
| Parabolic SAR -- syntax: sar(step, maximum) | Parabolic Sar(step, maximum) |
| Peak Bars Ago -- syntax: peakbars(nth, data, min change) | Define barsSinceNthPeak(nth, data, min change) as
barsSinceNth(atpeak(parm2, parm3), parm1) |
| Peak Value -- syntax: peak(nth, data, min change) | Define mpeak(nth, data, min change) as
peak(parm1, parm2, parm3/100) |
| Performance -- syntax: per() | Performance Index (?) |
| Plus Directional Movement -- syntax: pdi(periods) | Directional Movement(periods) |
| Polarized Fractal Efficiency -- syntax: pfe(data, periods, smoothing) | Define pfe(data, periods, smoothing) as
emov(if(parm1>delay(parm1,parm2), tpfe(parm1,parm2), -1*tpfe(parm1,parm2)), parm3) Define tpfe(data, periods) as: sqrt(pow(parm1-delay(parm1,parm2),2)+100)/ mov(sqrt(pow(delta(parm1),2)+1),parm2)/parm2*100 |
| Positive Volume Index -- syntax: pvi() | Positive Volume Index |
| Power -- syntax: pow(data, exponent) | pow(data, exponent) |
| Precision -- syntax: prec(data, precision) | Define prec(data, precision) as
int(parm1*pow(10,parm2))/pow(10,parm2) |
| Price Channel High -- syntax: pricechannelhigh(periods) | |
| Price Channel Low -- syntax: pricechannellow(periods) | |
| Price Oscillator -- syntax: oscp(period1, period2, ma method,
diff_method),
where ma method is SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, or VARIABLE. diff_method is PERCENT or POINTS |
mov(close, period1) - mov(close, period2) for SIMPLE, POINTS
(mov(close, period1) - mov(close, period2))/ mov(close, min(period1, period2)) for SIMPLE, PERCENT substitute emov for mov if EXPONENTIAL behavior is desired wmov if WEIGHTED, tsf if TIMESERIES, formula indicator for TRIANGULAR (see moving average entry) or VARIABLE |
| Price Volume Trend -- syntax: pvt() | Price Volume Trend |
| Projection Band Bottom -- syntax: Projbandbot(periods) | Define projbandbottom(periods) as
min(for(delay(low,var)+var*slope(low,parm1),;1;var<parm1;var+1)) |
| Projection Band Top -- syntax: Projbandtop(periods) | Define projbandtop(periods) as
max(for(delay(high,var)+var*slope(high, parm1),;1;var<parm1;var+1)) |
| Projection Oscillator -- syntax: Projosc(regression periods, slowing periods) | Define Projection Oscillator(regressions periods, slowing periods,
0, 0) as
(close - projbandbottom(parm1))/ (projbandtop(parm1) - projbandbottom(parm1))*100 Define Projection Oscillator(regression periods, slowing periods, 0, 1) as mov(Projection Oscillator(parm1), parm2) |
| Put/Call Price -- syntax: option(type, date, price, interest, dividend) | |
| Qstick -- syntax: qstick(periods) | Define qstick(periods) as
mov(close-open, parm1) |
| r-squared -- syntax: rsquared(data, periods) | Define rsquared(data, periods) as
pow(corr(parm1, parm2), 2) |
| Rally -- syntax: rally() | Define rally as
if(delta(high) > 0 && delta(low) >= 0, 1, 0) |
| Rally With Volume -- syntax: rallywithvol() | Define rallywithvol as
if(rally && delta(volume) > 0, 1, 0) |
| Random Walk Index of Highs -- syntax: rwih(periods) | Define rwih(periods) as
max(for(delay(high,var)-high)/ delay(mov(Average True Range(1), var+1),1)*sqrt(var+1),;1;var <= parm1; var+1)) (?) |
| Random Walk Index of Lows -- syntax: rwil(periods) | Define rwil(periods) as
min(for(delay(low,var)-low)/ delay(mov(Average True Range(1), var+1),1)*sqrt(var+1),;1;var <= parm1; var+1)) (?) |
| Range Indicator -- syntax: rangeindicator(periods, smoothing periods) | Define Range Indicator(periods, smoothing periods) as
emov(stochrange(parm1), parm2) Define stochrange(periods) as if(v3(parm1)>v2(parm1), 100*(v1-v2(parm1))/ (v3(parm1)-v2(parm1)), 100*(v1-v2(parm1))) Define v3(periods) as highest(v1, parm1) Define v2(periods) as lowest(v1, parm1) Define v1 as if(delta(close)>0, Average True Range(1)/delta(close), Average True Range(1)) |
| Rate of Change -- syntax: roc(data, periods, diff method), where diff method is PERCENT or POINTS | roc(data, periods) for PERCENT
Define rocpoints(data, periods) parm1 - delay(parm1, parm2) for POINTS |
| Reaction -- syntax: reaction() | Define reaction as
if(delta(high) <= 0 && delta(low) < 0, 1, 0) |
| Reaction with Volume -- syntax: reactionwithvol() | Define reactionwithvol as
if(delta(high) <= 0 && delta(low) < 0 && delta(volume) > 0, 1, 0) |
| Reference -- syntax: ref(data, periods) | delay(data, -1*periods) for periods <= 0 |
| Relative Momentum Index -- syntax: rmi(data, periods, momentum parm) | Define Relative Momentum Index(data, periods, momentum parm) as
100 - (100/(1+RS(parm1, parm2, parm3)), where RS(data, periods, momentum parm) is defined as: emov(pgains(parm1, parm3), 2*parm2-1)/ emov(plosses(parm1, parm3),2*parm2-1) where pgains(data, momentum parm) is defined as: if(data-delay(parm1,parm2) > 0, data-delay(parm1,parm2), 0) plosses(data, momentum parm) is: if(parm1-delay(parm1,parm2) < 0, abs(data-delay(parm1,parm2),0) |
| Relative Strength Index -- syntax: rsi(periods) | Relative Strength Index(periods) or
Relative Momentum Index(close, periods, 1) |
| Relative Volatility Index -- syntax: rvi(periods) | Define Relative Volatility Index(periods) as
100*rviup(parm1)/(rviup(parm1)+rvidown(parm1) Define rviup(periods) as: emov(if(delta(close)>0, sdev(close, 10), 0), 2*parm1+1) Define rvidown(periods) as: emov(if(delta(close)<0, sdev(close, 10), 0), 2*parm1+1) |
| Round -- syntax: round(data) | define round(data) as
if (parm1 - int(parm1) >= 0.5, int(parm1)+1, int(parm1)) |
| Selling Pressure -- syntax: sellp() | sellp or sellp(5) |
| Sine -- syntax: sin(data) | sin(data) |
| Square Root -- syntax: sqrt(data) | sqrt(data) |
| Standard Deviation -- syntax: stddev(data, periods) | sdev(data, periods) |
| Standard Error -- syntax:: ste(data,periods) | Define ste(data, periods) as:
sqrt(((parm2-1)*pow(sdev(parm1,parm2),2)-pow(slope(parm1,parm2),2)* (pow(parm2,3)-parm2)/12)/(parm2-2)) -- From other sources |
| Standard Error Band Bottom -- syntax: stebandbot(data, periods, deviants) | Define stebandbot(data, periods, deviants) as
lr(parm1,parm2)-parm3*ste(parm1, parm2) |
| Standard Error Band Top -- syntax: stebandtop(data, periods, deviants) | Define stebandtop(data, periods, deviants) as
lr(parm1,parm2)+parm3*ste(parm1, parm2) |
| Stochastic Momentum Index -- syntax: stochmomentum(periods, smoothing, double smoothing) | Define stochmomentum(periods, smoothing, double smoothing) as
100*emov( emov(close-(.5*(highest(high,parm1)+lowest(low,parm1),parm2),parm3)/ (.5*emov(emov(highest(high,parm1)-lowest(low,parm1),parm2),parm3)) |
| Stochastic Oscillator -- syntax: stoch(periods, slowing) | Stochastic Oscillator(periods, slowing) |
| Subtraction -- syntax: sub(data1, data2) or data1 - data2 | data1 - data2 or minus(data1, data2) |
| Summation -- syntax: sum(data, periods) | Define sum(data, periods) as
mov(parm1, parm2)*parm2 |
| Swing Index -- syntax: swing(limit move) | see Accumulation Swing Index |
| Tema -- syntax: tema(data, periods) | Define tema(data, periods) as
3*emov(parm1, parm2)- 3*emov(emov(parm1, parm2), parm2) + emov(emov(emov(parm1, parm2), parm2), parm2) |
| Theta -- syntax: theta(type, date, price, interest, dividend) | |
| Time Series Forecast -- syntax: tsf(data, periods) | Define tsf(data, periods) as
delay(lr(parm1, parm2) + slope(parm1, parm2),1) |
| Trade Volume Index -- syntax: tvi(minimum tick) | |
| TRIX -- syntax: trix(periods) | TRIX(periods) |
| Trough Bars Ago -- syntax: troughbars(nth, data, min change) | Define troughbars(nth, data, min change) as
barsSinceNth(at trough(parm2, parm3), parm1) |
| Trough Value -- syntax: trough(nth, data, min change) | trough(nth, data, min change) |
| Typical Price -- syntax: typical() | Define typical as
(high + low + close)/3 |
| Ultimate Oscillator -- syntax: ult(period1, period2, period3) | Define Ultimate Oscillator(period1, period2, period3) as
mov(true range, parm1)/mov(total activity, parm1)*max(parm1, parm2, parm3)/parm1 + mov(true range, parm2)/mov(total activity, parm2)*max(parm1, parm2, parm3)/parm2 + mov(true range, parm3)/mov(total activity, parm3*max(parm1, parm2, parm3)/parm3, where true range is defined as: max(close-low, close-delay(low,1)) and total activity is defined as: max(max(high-low, high-delay(low,1)), max(delay(high,1)-low, delay(high,1)-delay(low,1))) |
| Value When -- syntax: valuewhen(nth, expression, data) | valueAt(expression, data, nth) |
| Variance -- syntax: var(data, periods) | Define var(data, periods) as
pow(sdev(parm1, parm2), 2) |
| Vega -- syntax: vega(type, date, price, interest, dividend) | |
| Vertical Horizontal Filter -- syntax: vhf(data, periods) | Built-in Vertical Horizontal Filter calculates vhf on closes.
To use other data, define VHF(data, periods) as: mov(abs(highest(parm1, parm2)-lowest(parm1, parm2)), parm2)/ mov(abs(delta(parm1)), parm2) |
| Volatility, Chaikins's -- syntax: vol(ma period, roc period) | Chaikin's Volatility(roc period, 0, ma period) |
| Volatility, Option -- syntax: volo() | |
| Volume Oscillator -- syntax: oscv(period1, period2, method, diff_method), where method is one of SIMPLE, EXPONENTIAL, WEIGHTED, TIMESERIES, TRIANGULAR, and VARIABLE. diff_method is PERCENT or POINTS | Volume Oscillator(period1, period2) for SIMPLE and PERCENT
(emov(volume,min(period1,period2))-emov(volume,max(period1, period2)))/
(wmov(volume,min(period1,period2))-wmov(volume,max(period1,period2)))/
(tsf(volume,min(period1,period2))-tsf(volume,max(period1, period2)))/
(tmov(volume,min(period1,period2))-tmov(volume,max(period1, period2)))/
|
| Weighted Close -- syntax: wc() | Define wc as
(2*close + high + low)/4 |
| Wilder's Smoothing -- syntax: wilders(data, periods) | Define wilders(data, periods) as
emov(parm1, 2*parm2-1) |
| Williams' %R -- syntax: willr(periods) | Williams' %R(periods) |
| Williams' A/D -- syntax: willa() | Williams' A/D |
| WriteIf -- syntax: WriteIf(expression, text if true, text if false) | |
| Writeval -- syntax: writeval(data) | |
| Year -- syntax: year() | Define year as
int(date()/10000) |
| Zigzag -- syntax: zigzag(data, min change, diff method), where diff method is PERCENT or POINTS | zigzag(data, min change/100) for PERCENT
zigzag(data, min change, -1) for POINTS |
| Bearish 3 Method Formation -- syntax: bear3formation() | Define bear3formation as
bigblack && barsSinceNth(bigblack>1, 1) == 4 && count(short>1, 4) ==3 && barsSince(highest(delay(high,1))) == 3 && barsSince(lowest(delay(low,1))) == 3 Define count(condition, periods) as mov(if(parm1>0, 1, 0), parm2)*parm2 Define short as high-low < Average True Range(4)/3 (NOT Metastock formulation) |
| Bearish Harami -- syntax: bearharami() | Define bearharami as
delay(longwhite,1) && short && open>=close && delta(high)<0 && delta(low)>0 |
| Bearish Harami Cross -- syntax: bearharamicross() | Define bearharamicross as
bearharami && doji |
| Big Black Candle -- syntax: bigblack() | Define bigblack as
open > close && open-close > 2*(high-low)/3 && high-low > Average True Range(4) |
| Big White Candle -- syntax: bigwhite() | Define bigwhite as
open < close && close-open > 2*(high-low)/3 && high-low > Average True Range(4) |
| Black Body -- syntax: black() | Define black as
open > close |
| Bullish 3 Method Formation -- syntax: bull3formation() | Define bull3formation as
bigwhite && barsSinceNth(bigwhite>1, 1) == 4 && count(short>1, 4) ==3 && barsSince(highest(delay(high,1))) == 3 && barsSince(lowest(delay(low,1))) == 3 Define count as mov(if(parm1>0, 1, 0), parm2)*parm2 Define short as high-low < Average True Range(4)/2 (NOT Metastock formulation) |
| Bullish Harami -- syntax: bullharami() | Define bullharami as
delay(longblack,1) && short && open<=close && delta(high)<0 && delta(low)>0 |
| Bullish Harami Cross -- syntax: bullharamicross() | Define bullharamicross as
bullharami && open == doji |
| Dark Cloud Cover -- syntax: darkcloud() | Define darkcloud as
delay(bigwhite,1) && black && open > delay(high,1) && close < delay(close-(close-open)/4,1) |
| Doji -- syntax: doji() | Define doji as
open == close |
| Doji Star -- syntax: dojistar() | Define dojistar as
doji && (open < delay(low,1) || open > delay(high, 1)) |
| Engulfing Bearish Line -- syntax: engulfingbear() | Define engulfingbear as
delay(short,1) && delay(white,1) && bigblack && delta(low) < 0 && delta(high) > 0 |
| Engulfing Bullish Line -- syntax: engulfingbull() | Define engulfingbull
delay(short,1) && delay(black,1) && bigwhite && delta(low) < 0 && delta(high) > 0 |
| Evening Doji Star -- syntax: eveningdojistar() | Define eveningdojistar as
delay(dojistar,1) && delay(bigwhite, 2) && delay(open - delay(high,1),1) > 0 && bigblack && close < delay(close - (close-open)/3,2) |
| Evening Star -- syntax: eveningstar() | Define eveningstar as
delay(short, 1) && delay(bigwhite, 2) && delay(open - delay(high,1),1) > 0 && bigblack && close < delay(close - (close-open)/3,2) |
| Falling Window -- syntax: fallingwindow() | Define fallingwindow as
delay(low,1) > high |
| Gravestone Doji -- syntax: gravestonedoji() | Define gravestonedoji as
open == close && open == low |
| Hammer -- syntax: hammer() | Define hammer as
shortbody && (high-low) > 2*(abs(close-open)) && if(close-open > 0, high-close < abs(close-open)/2, high-open < abs(close-open)/2) Define shortbody as abs(close-open) < Average True Range(4)/3 |
| Hanging Man -- syntax: hangingman() | Define hangingman as
hammer && longlowershadow |
| Inverted Black Hammer -- syntax: invblackhammer() | Define invblackhammer as
invhammer && black |
| Inverted Hammer -- syntax: invhammer() | Define invhammer as
shortbody && (high-low) > 2*(abs(close-open)) && if(close-open > 0, open-low < abs(close-open)/2, close-low < abs(close-open)/2 |
| Long Legged Doji -- syntax: longleggeddoji() | Define longleggeddoji as
doji && high - low > Average True Range(4) && high-close > (high-low)/3 && close - low > (high-low)/3 |
| Long Lower Shadow -- syntax: longlowershadow() | Define longlowershadow as
if (close-open > 0, open-low > 2*(high-low)/3, close-low > 2*(high-low)/3) |
| Long Upper Shadow -- syntax: longuppershadow() | Define longuppershadow as
if (close-open > 0, high-close > 2*(high-low)/3, high-open > 2*(high-low)/3) |
| Morning Doji Star -- syntax: morningdojistar() | Define morningdojistar as
morningstar && delay(doji, 1) |
| Morning Star -- syntax: morningstar() | Define morningstar as
delay(bigblack, 2) && delay(shortbody, 1) && if(delay(close>open,1),delay(close,1) < delay(close,2), delay(open, 1) < delay(close,2)) && white && close > delay(open-close,2)/3 + delay(close,2) |
| On Neck-Line -- syntax: onneckline() | Define onneckline as
slope(close, 14) < 0 && white && short && delay(black, 1) && abs(close - delay(low,1)) < Average True Range(4)/5 |
| Piercing Line -- syntax: piercingline() | Define piercingline as
open < delay(low,1) && close > delay((open+close)/2, 1) && delay(black,1) |
| Rising Window -- syntax: risingwindow() | Define risingwindow as
low > delay(high,1) |
| Separating Lines -- syntax: separatinglines() | Define separatinglines as
open == delay(open,1) && if (slope(close, 14) > 0, white && delay(black,1), black && delay(white,1)) |
| Shaven Bottom -- syntax: shavenbottom() | Define shavenbottom as
if (open<close, open == low, close == low) |
| Shaven Head -- syntax: shavenhead() | Define shavenhead as
if (open>close, open == high, close == high) |
| Shooting Star -- syntax: shootingstar() | Define shootingstar as
shortbody && longuppershadow && if(open>close, close-low < Average True Range(4)/10, open-low < Average True Range(4)/10) |
| Spinning Top -- syntax: spinningtop() | Define spinnintop as
shortbody |
| Three Black Crows -- syntax: 3blackcrows() | Define threeblackcrows as
delay(bigblack, 2) && delay(bigblack,1) && bigblack && delay(close-low,2) < Average True Range(4)/5 && delay(close-low,1) < Average True Range(4)/5 && close-low < Average True Range(4)/5 && delay(delta(close),1) < 0 && delta(close) < 0 |
| Three White Soldiers -- syntax: 3whitesoldiers() | Define threewhitesoldiers as
delay(high-close,2) < Average True Range(4)/5 && delay(high-close,1) < Average True Range(4)/5 && high-close < Average True Range(4)/5 && delay(delta(close),1) > 0 && delta(close) > 0 |
| Tweezer Bottoms -- syntax: tweezerbottoms() | Define tweezerbottoms as
for(delay(min(open, close), var) == min(open, close) ||; 1; var<5; var+1) |
| Tweezer Tops -- syntax: tweezertops() | Define tweezertops as
for(delay(max(open, close), var) == max(open, close) ||; 1; var<5; var+1) |
| White Body -- syntax: white() | Define white as
close > open |