VT TRADER: TREND, MOMENTUM, VOLATILITY, AND VOLUME (TMV)
- Details
- Parent Category: Departments
- Category: Traders' Tips
- Written by Chris Skidmore

Our Traders’ Tip this month is based on Barbara Star’s article in this issue, “Trade Breakouts And Retracements With TMV.”
This trading system template based on the one described in Star’s article combines trend, momentum, and volatility indicators into an easy-to-use format, providing the trader with a multidimensional perspective of price behavior.
Our version of the TMV includes Keltner bands, CCI, and ADX. The volume oscillator was not included. Since the TMV is an analytic template made up of a series of indicators, traders are encouraged to experiment with their own mix of indicators. For additional information regarding the use of TMV, please refer to Star’s article.
We’ll be offering the TMV analytic template for download in our VT client forums at http://forum.vtsystems.comalong with hundreds of other precoded and free indicators and trading systems. The VT Trader step-by-step instructions for recreating this analytic template are as follows:
- Ribbon → Technical Analysis menu → Trading Systems group → Trading Systems Builder command → [New] button
-
In the General tab, input the following text for each field:
Name: TASC - 02/2012 - TMV Analytic Template Function Name Alias: tasc_TMVTemplate Label Mask: TASC - 02/2012 - TMV Analytic Template
-
In the Input Variable(s) tab, set up the following variables:
[New] button... Name: KcPr Display Name: Keltner Channel Periods Type: integer Default: 13 [New] button... Name: cciperiods Display Name: CCI Periods Type: integer Default: 13 [New] button... Name: AdxPeriods Display Name: ADX Periods Type: integer Default: 10
-
In the Output Variable(s) tab, set up the following variables:
[New] button... Var Name: MidKC Name: Middle Keltner Channel * Checkmark: Indicator Output Select Indicator Output Tab Line Color: dark blue Line Width: 1 Ling Style: dashed Placement: Price Frame [OK] button... [New] button... Var Name: UpperKC Name: Upper Keltner Channel * Checkmark: Indicator Output Select Indicator Output Tab Line Color: purple Line Width: 1 Ling Style: solid Placement: Price Frame [OK] button... [New] button... Var Name: LowerKC Name: Lower Keltner Channel * Checkmark: Indicator Output Select Indicator Output Tab Line Color: purple Line Width: 1 Ling Style: solid Placement: Price Frame [OK] button... [New] button... Var Name: CCIndex Name: CCIndex * Checkmark: Indicator Output Select Indicator Output Tab Line Color: red Line Width: 2 Ling Style: histogram Placement: Additional Frame 1 [OK] button... [New] button... Var Name: CCIUpExtreme Name: CCIUpExtreme * Checkmark: Indicator Output Select Indicator Output Tab Line Color: black Line Width: 1 Ling Style: dashed Placement: Additional Frame 1 [OK] button... [New] button... Var Name: CCIDownExtreme Name: CCIDownExtreme * Checkmark: Indicator Output Select Indicator Output Tab Line Color: black Line Width: 1 Ling Style: dashed Placement: Additional Frame 1 [OK] button... [New] button... Var Name: CCIZero Name: CCIZero * Checkmark: Indicator Output Select Indicator Output Tab Line Color: black Line Width: 1 Ling Style: dashed Placement: Additional Frame 1 [OK] button... [New] button... Var Name: AdxPriceRising Name: AdxPriceRising * Checkmark: Highlights Enabled Select Highlights Tab Color: green [OK] button... [New] button... Var Name: AdxPriceFalling Name: AdxPriceFalling * Checkmark: Highlights Enabled Select Highlights Tab Color: pink [OK] button...
-
In the Formula tab, input the following formula via copy and paste:
{Keltner Channels} MidKC:= Mov(TP(),KcPr,S); UpperKC:= MidKC + Mov((H-L),KcPr,S); LowerKC:= MidKC - Mov((H-L),KcPr,S); {Commodity Channel Index} CCIndex:= CCI(cciperiods); CCIUpExtreme:= 100; CCIDownExtreme:= -100; CCIZero:= 0; {Average Directional Movement Index (ADX)} TH:= if(Ref(C,-1)>H,Ref(C,-1),H); TL:= if(Ref(C,-1)<L,Ref(C,-1),L); TR:= TH-TL; PlusDM:= if(H>Ref(H,-1) AND L>=Ref(L,-1), H-Ref(H,-1), if(H>Ref(H,-1) AND L<Ref(L,-1) AND H-Ref(H,-1)>Ref(L,-1)-L, H-Ref(H,-1), 0)); PlusDI:= 100 * Wilders(PlusDM,AdxPeriods)/Wilders(Tr,AdxPeriods); MinusDM:= if(L<Ref(L,-1) AND H<=Ref(H,-1), Ref(L,-1)-L, if(H>Ref(H,-1) AND L<Ref(L,-1) AND H-Ref(H,-1)<Ref(L,-1)-L, Ref(L,-1)-L, 0)); MinusDI:= 100 * Wilders(MinusDM,AdxPeriods)/Wilders(Tr,AdxPeriods); DIDif:= Abs(PlusDI-MinusDI); DISum:= PlusDI + MinusDI; _ADX:= 100 * Wilders(DIDif/DISum,AdxPeriods); {ADX/Price Paint Bars Conditions} AdxPriceRising:= _ADX>ref(_ADX,-1) AND C>Mov(C,8,S); AdxPriceFalling:= _ADX>ref(_ADX,-1) AND C<Mov(C,8,S); - Click the “Save” icon to finish building the trading system.
To attach the trading system to a chart (Figure 14), select the “Add trading system” option from the chart’s contextual menu, select “TASC - 02/2012 - TMV Analytic Template” from the trading systems list, and click the [Add] button.
To learn more about VT Trader, visit www.vtsystems.com.
Risk disclaimer: Forex trading involves a substantial risk of loss and may not be suitable for all investors.
FIGURE 14: VT TRADER, ADX, CCI, AND KELTNER BANDS. Here is the TMV template attached to a EUR/USD one-hour candlestick chart.

