Summary
The Average True Range is a measure of market volatility developed by Wilder.
Syntax
public interface TrueRange
Members
Name | Type | Summary |
---|---|---|
Result | Property | Gets the resulting time series of the True Range indicator calculation. |
Example 1
private TrueRange tri; protected override void Initialize() { tri = Indicators.TrueRange(); }
Example 2
using cAlgo.API; using cAlgo.API.Indicators; using System; namespace cAlgo.Robots { // This sample cBot shows how to use the True Range indicator [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)] public class TrueRangeSample : Robot { private double _volumeInUnits; private TrueRange _trueRange; [Parameter("Volume (Lots)", DefaultValue = 0.01)] public double VolumeInLots { get; set; } [Parameter("Label", DefaultValue = "Sample")] public string Label { get; set; } public Position[] BotPositions { get { return Positions.FindAll(Label); } } protected override void OnStart() { _volumeInUnits = Symbol.QuantityToVolumeInUnits(VolumeInLots); _trueRange = Indicators.TrueRange(); } protected override void OnBar() { if (Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) && Bars.ClosePrices.Last(2) < Bars.OpenPrices.Last(2)) { ClosePositions(TradeType.Sell); ExecuteOrder(TradeType.Buy); } else if (Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) && Bars.ClosePrices.Last(2) > Bars.OpenPrices.Last(2)) { ClosePositions(TradeType.Buy); ExecuteOrder(TradeType.Sell); } } private void ClosePositions(TradeType tradeType) { foreach (var position in BotPositions) { if (position.TradeType != tradeType) continue; ClosePosition(position); } } private void ExecuteOrder(TradeType tradeType) { var trueRangeInPips = _trueRange.Result.Last(1) * (Symbol.TickSize / Symbol.PipSize * Math.Pow(10, Symbol.Digits)); var stopLossInPips = trueRangeInPips * 2; var takeProfitInPips = stopLossInPips * 2; ExecuteMarketOrder(tradeType, SymbolName, _volumeInUnits, Label, stopLossInPips, takeProfitInPips); } } }