Skip to content

MacdHistogram

interface cAlgo.API.Indicators

DesktopCLICloud

The calculation of the MACD Histogram.

Definition

public interface MacdHistogram

Namespace: cAlgo.API.Indicators · Group: Indicators · Implements: StandardIndicator

Remarks

MACD (moving average convergence/divergence) is used to spot changes in the strength, direction, momentum, and duration of a trend.

Examples

Example 1

var macd = Indicators.MacdHistogram(Bars.ClosePrices, 26, 12, 9);
Print("Histogram: {0}, Signal: {1}", macd.Histogram.Last(1), macd.Signal.Last(1));
macd = api.Indicators.MacdHistogram(api.Bars.ClosePrices, 26, 12, 9)
api.Print(f"Histogram: {macd.Histogram.Last(1)}, Signal: {macd.Signal.Last(1)}")

Example 2

using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    // This sample cBot shows how to use the MACD Histogram indicator
    public partial class MacdHistogramSample : Robot
    {
        private double _volumeInUnits;

        private MacdHistogram _macdHistogram;

        public Position[] BotPositions
        {
            get
            {
                return Positions.FindAll(Label);
            }
        }

        protected override void OnStart()
        {
            _volumeInUnits = Symbol.QuantityToVolumeInUnits(VolumeInLots);

            _macdHistogram = Indicators.MacdHistogram(Bars.ClosePrices, 26, 12, 9);
        }

        protected override void OnBar()
        {
            if (_macdHistogram.Histogram.Last(1) > 0 && _macdHistogram.Histogram.Last(2) <= 0)
            {
                ClosePositions(TradeType.Sell);

                ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
            }
            else if (_macdHistogram.Histogram.Last(1) < 0 && _macdHistogram.Histogram.Last(2) >= 0)
            {
                ClosePositions(TradeType.Buy);

                ExecuteMarketOrder(TradeType.Sell, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
            }
        }

        private void ClosePositions(TradeType tradeType)
        {
            foreach (var position in BotPositions)
            {
                if (position.TradeType != tradeType) continue;

                ClosePosition(position);
            }
        }
    }
}
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class MacdHistogramSample():
    def on_start(self):
        self.volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)
        self.macdHistogram = api.Indicators.MacdHistogram(api.Bars.ClosePrices, 26, 12, 9)

    def on_bar_closed(self):
        if self.macdHistogram.Histogram.Last(0) > 0 and self.macdHistogram.Histogram.Last(1) <= 0:
            self.close_positions(TradeType.Sell)
            api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, self.volumeInUnits, api.Label, api.StopLossInPips, api.TakeProfitInPips)
        elif self.macdHistogram.Histogram.Last(0) < 0 and self.macdHistogram.Histogram.Last(1) >= 0:
            self.close_positions(TradeType.Buy)
            api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, self.volumeInUnits, api.Label, api.StopLossInPips, api.TakeProfitInPips)

    def get_bot_positions(self):
        return api.Positions.FindAll(api.Label)

    def close_positions(self, tradeType):
        for position in self.get_bot_positions():
            if position.TradeType != tradeType:
                continue
            api.ClosePosition(position)
{
  "AccessRights": "None",
  "TimeZone": "UTC",
  "Parameters": [
    {
      "Name": "VolumeInLots",
      "DisplayName": "Volume (Lots)",
      "Type": "Double",
      "DefaultValue": 0.01
    },
    {
      "Name": "StopLossInPips",
      "DisplayName": "Stop Loss (Pips)",
      "Type": "Double",
      "DefaultValue": 10
    },
    {
      "Name": "TakeProfitInPips",
      "DisplayName": "Take Profit (Pips)",
      "Type": "Double",
      "DefaultValue": 10
    },
    {
      "Name": "Label",
      "Type": "String",
      "DefaultValue": "Sample"
    }
  ]
}

Properties

Name Description
HistogramDesktopCLICloudIndicatorDataSeries The histogram (bar graph). The difference between the short and long cycles.
SignalDesktopCLICloudIndicatorDataSeries The signal (red line). The exponential moving average of the MACD histogram.

Inherited members

From StandardIndicator: AddToChart, Symbol, TimeFrame, Bars