Jump to content

Recommended Posts

Posted

can someone change this formula

 

 

#region Using declarations

using System;

using System.ComponentModel;

using System.Diagnostics;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Xml.Serialization;

using NinjaTrader.Cbi;

using NinjaTrader.Data;

using NinjaTrader.Gui.Chart;

#endregion

 

// This namespace holds all indicators and is required. Do not change it.

namespace NinjaTrader.Indicator

{

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

[Description("Enter the description of your new custom indicator here")]

public class LWADMA : Indicator

{

#region Variables

private int perioda = 3, periodb = 10;

private double trueRangeHigh;

private double trueRangeLow;

private double priceMove;

private DataSeries iAD;

#endregion

 

/// <summary>

/// This method is used to configure the indicator and is called once before any bar data is loaded.

/// </summary>

protected override void Initialize()

{

Add(new Plot(new Pen(Color.Blue, 3), "AD")); // plot 0

 

trueRangeHigh = trueRangeLow = priceMove = 0d;

iAD = new DataSeries(this);

 

Overlay = false;

PriceTypeSupported = true;

}

 

/// <summary>

/// Called on each bar update event (incoming tick)

/// </summary>

protected override void OnBarUpdate()

{

// Use this method for calculating your indicator values. Assign a value to each

// plot below by replacing 'Close[0]' with your own formula.

if (CurrentBar >0)

{

// calculate true range high and low

trueRangeHigh = Math.Max(High[0], Close[1]);

trueRangeLow = Math.Min(Low[0], Close[1]);

 

priceMove = 0;

 

// compare closing price to yesterdays

// CumulativeSum (Iff (Close > Close. 1 , Close - True Low, Iff (Close < Close A , Close - True High,0)))

 

if(Close[0] > Close[1])

{

priceMove = Close[0] - trueRangeLow;

}

else if(Close[0] < Close[1])

{

priceMove = Close[0] - trueRangeHigh;

}

else if(Close[0] == Close[1])

{

priceMove = 0d;

}

 

iAD.Set((CurrentBar == 0 ? (Close[0] - Low[0]) : iAD[1]) + priceMove);

}

 

// ((MovingAvgMethod (Williams AccumDist Positive , vara , Method) -

// MovingAvgMethod (Williams AccumDist Positive , varb , Method)) /

// MovingAvgMethod (Williams AccumDist Positive , vara , Method)) * 100

if (CurrentBar > periodb)

{

AD.Set((SMA(iAD, perioda)[0] - SMA(iAD, periodb)[0])/SMA(iAD, perioda)[0]*100);

}

}

 

#region Properties

[browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

public DataSeries AD

{

get { return Values[0]; }

}

 

[Description("Numbers of bars used for calculations")]

[GridCategory("Parameters")]

public int PeriodA

{

get { return perioda; }

set { perioda = Math.Max(1, value); }

}

[Description("Numbers of bars used for calculations")]

[GridCategory("Parameters")]

public int PeriodB

{

get { return periodb; }

set { periodb = Math.Max(1, value); }

}

#endregion

}

}

 

#region NinjaScript generated code. Neither change nor remove.

// This namespace holds all indicators and is required. Do not change it.

namespace NinjaTrader.Indicator

{

public partial class Indicator : IndicatorBase

{

private LWADMA[] cacheLWADMA = null;

 

private static LWADMA checkLWADMA = new LWADMA();

 

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

/// <returns></returns>

public LWADMA LWADMA(int periodA, int periodB)

{

return LWADMA(Input, periodA, periodB);

}

 

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

/// <returns></returns>

public LWADMA LWADMA(Data.IDataSeries input, int periodA, int periodB)

{

if (cacheLWADMA != null)

for (int idx = 0; idx < cacheLWADMA.Length; idx++)

if (cacheLWADMA[idx].PeriodA == periodA && cacheLWADMA[idx].PeriodB == periodB && cacheLWADMA[idx].EqualsInput(input))

return cacheLWADMA[idx];

 

lock (checkLWADMA)

{

checkLWADMA.PeriodA = periodA;

periodA = checkLWADMA.PeriodA;

checkLWADMA.PeriodB = periodB;

periodB = checkLWADMA.PeriodB;

 

if (cacheLWADMA != null)

for (int idx = 0; idx < cacheLWADMA.Length; idx++)

if (cacheLWADMA[idx].PeriodA == periodA && cacheLWADMA[idx].PeriodB == periodB && cacheLWADMA[idx].EqualsInput(input))

return cacheLWADMA[idx];

 

LWADMA indicator = new LWADMA();

indicator.BarsRequired = BarsRequired;

indicator.CalculateOnBarClose = CalculateOnBarClose;

#if NT7

indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;

indicator.MaximumBarsLookBack = MaximumBarsLookBack;

#endif

indicator.Input = input;

indicator.PeriodA = periodA;

indicator.PeriodB = periodB;

Indicators.Add(indicator);

indicator.SetUp();

 

LWADMA[] tmp = new LWADMA[cacheLWADMA == null ? 1 : cacheLWADMA.Length + 1];

if (cacheLWADMA != null)

cacheLWADMA.CopyTo(tmp, 0);

tmp[tmp.Length - 1] = indicator;

cacheLWADMA = tmp;

return indicator;

}

}

}

}

 

// This namespace holds all market analyzer column definitions and is required. Do not change it.

namespace NinjaTrader.MarketAnalyzer

{

public partial class Column : ColumnBase

{

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

/// <returns></returns>

[Gui.Design.WizardCondition("Indicator")]

public Indicator.LWADMA LWADMA(int periodA, int periodB)

{

return _indicator.LWADMA(Input, periodA, periodB);

}

 

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

/// <returns></returns>

public Indicator.LWADMA LWADMA(Data.IDataSeries input, int periodA, int periodB)

{

return _indicator.LWADMA(input, periodA, periodB);

}

}

}

 

// This namespace holds all strategies and is required. Do not change it.

namespace NinjaTrader.Strategy

{

public partial class Strategy : StrategyBase

{

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

/// <returns></returns>

[Gui.Design.WizardCondition("Indicator")]

public Indicator.LWADMA LWADMA(int periodA, int periodB)

{

return _indicator.LWADMA(Input, periodA, periodB);

}

 

/// <summary>

/// Enter the description of your new custom indicator here

/// </summary>

/// <returns></returns>

public Indicator.LWADMA LWADMA(Data.IDataSeries input, int periodA, int periodB)

{

if (InInitialize && input == null)

throw new ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");

 

return _indicator.LWADMA(input, periodA, periodB);

}

}

}

#endregion

 

 

 

 

 

 

 

 

 

to this one

 

 

 

 

(((MovingAvgMethod (Close , 3 , 1) - MovingAvgMethod (Close , 10 , 1)) / MovingAvgMethod (Close , 3 , 1)) * 100 + ((MovingAvgMethod (Williams AccumDist Positive , 3 , 1) - MovingAvgMethod (Williams AccumDist Positive , 9 , 1)) / MovingAvgMethod (Williams AccumDist Positive , 3 , 1)) * 100) / 2

 

 

Williams AccumDist Positive

 

Williams AccumDist + (100 - Lowest (Williams AccumDist , 0))

 

Williams AccumDist

 

CumulativeSum (Iff (Close > Close.1 , Close - True Low , Iff (Close < Close.1 , Close - True High , 0)))

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...