Saturday, June 16, 2018

HullMA code

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

namespace WealthLab.Strategies
{
public class HullMA : DataSeries
{
public HullMA ( DataSeries ds, int period ) : base(ds, "HullMA")
{
DataSeries SlowWMA = WMA.Series( ds, period );
DataSeries FastWMA = WMA.Series( ds, (int)(period/2) );
DataSeries hma = WMA.Series( ( FastWMA + ( FastWMA - SlowWMA ) ), (int)Math.Sqrt(period) );

for (int bar = period; bar < ds.Count; bar++)
{
this[bar] = hma[bar];
}
}

public static HullMA Series( DataSeries ds, int period )
{
HullMA _hma = new HullMA( ds, period );
return _hma;
}
}

public class HMAStrategy : WealthScript
{
private StrategyParameter paramPeriod;

//Pushed indicator StrategyParameter statements
private StrategyParameter slider1;
private StrategyParameter slider2;
private StrategyParameter slider3;
private StrategyParameter slider4;
private StrategyParameter slider5;
private StrategyParameter slider6;
public HMAStrategy()
{
//Pushed indicator CreateParameter statements
slider1 = CreateParameter("AroonDown_Period_1",20,2,200,20);
slider2 = CreateParameter("AroonUp_Period_2",20,2,200,20);
slider3 = CreateParameter("DIMinus_Period_3",14,2,200,20);
slider4 = CreateParameter("DIPlus_Period_4",14,2,200,20);
slider5 = CreateParameter("ADX_Period_5",14,2,200,20);
slider6 = CreateParameter("RSI_Period_6",20,2,200,20);
paramPeriod = CreateParameter( "Period", 20, 2, 100, 1 );
}

protected override void Execute()
{
HullMA hma = new HullMA( Close, paramPeriod.ValueInt );
PlotSeries( PricePane, hma, Color.Blue, WealthLab.LineStyle.Solid, 1 );
//Pushed indicator ChartPane statements
ChartPane paneAroon1 = CreatePane(40,true,true);
ChartPane paneADX1 = CreatePane(40,true,true);
ChartPane paneRSI1 = CreatePane(40,true,true);

//Pushed indicator PlotSeries statements
PlotSeries(paneAroon1,AroonDown.Series(Close,slider1.ValueInt),Color.FromArgb(255,139,0,0),LineStyle.Solid,2);
PlotSeries(paneAroon1,AroonUp.Series(Close,slider2.ValueInt),Color.FromArgb(255,0,100,0),LineStyle.Solid,2);
PlotSeries(paneADX1,DIMinus.Series(Bars,slider3.ValueInt),Color.Red,LineStyle.Solid,3);
PlotSeries(paneADX1,DIPlus.Series(Bars,slider4.ValueInt),Color.Teal,LineStyle.Solid,3);
PlotSeries(paneADX1,ADX.Series(Bars,slider5.ValueInt),Color.Purple,LineStyle.Solid,3);
PlotSeries(paneRSI1,RSI.Series(Close,slider6.ValueInt),Color.FromArgb(255,0,0,128),LineStyle.Solid,2);

}
}
}

No comments:

Post a Comment