NewMax

Modified on 2015/11/13 12:58 by Eugene — Categorized as: Community Indicators

NewMax: Indicator Documentation

Syntax


DataSeries NewMax( DataSeries series, int period )

Parameter Description

series A price series
period Lookback period for indicator calculation

Description

NewMax


by DrKoch www.finantic.de 2004-06-22

This indicators finds new highs and new lows.
The value walks between -100 and +100.
If Price action reaches a new high relative to period Bars, the NewMax indicator is +100.
If Price action reaches a new low, the NewMax Indicator is -100.


Example

This example illustrates how to plot the NewMax indicator and trade using it, based on a WL4 chartscript by Dr.Koch called "NewMax Trader". It enters a new trade as soon as a new High or Low is found. It exits if the NewMax Indicator goes back from +100 / -100 to +95 / -95.


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Indicators;

namespace WealthLab.Strategies { public class NewMaxStrategy : WealthScript { private StrategyParameter paramperiod; private StrategyParameter paramexit_limit; public NewMaxStrategy() { paramperiod = CreateParameter( "period", 24, 5, 50, 5 ); paramexit_limit = CreateParameter( "exit_limit", 95, 90, 100, 1 ); } protected override void Execute() { LineStyle ls = LineStyle.Solid; int period = paramperiod.ValueInt; double exit_limit = paramexit_limit.Value; // Indicators NewMax new_high_s = NewMax.Series( High,period ); NewMax new_low_s = NewMax.Series( Low,period ); // Graphics HideVolume(); ChartPane newm_p = CreatePane( 50, false, true ); SetPaneMinMax(newm_p, -100, 100);

PlotSeries( newm_p, new_high_s, Color.Green, ls, 1 ); // New High PlotSeries( newm_p, new_low_s, Color.Red, ls, 1 ); // New Low // Trading for(int bar = 20; bar < Bars.Count; bar++) { if (!IsLastPositionActive) { if( new_high_s[bar] >= 100.0 ) ShortAtMarket( bar+1, "new high" ); if( new_low_s[bar] <= -100.0 ) BuyAtMarket( bar+1, "new low" ); } else { Position p = LastPosition; if( ( p.PositionType == PositionType.Long ) & ( new_high_s[bar] >= -exit_limit ) ) SellAtMarket( bar+1, p, "end of uptrend" ); if( ( p.PositionType == PositionType.Short ) & ( new_low_s[bar] <= exit_limit ) ) CoverAtMarket( bar+1, p, "end of downtrend" ); } } } } }