Description
This is all in one MAs for use in BTMM trading approach.
Version 1.1
- Customizable colors for arrows
- Improved offset calculation for arrows
Version 1.2
- Do not draw arrow marker if candle is not closed
using System;
using cAlgo.API;
using cAlgo.API.Internals;
using cAlgo.API.Indicators;
using cAlgo.Indicators;
namespace cAlgo
{
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AutoRescale = false, AccessRights = AccessRights.None)]
public class MultiMA : Indicator
{
[Parameter("Show Arrows", Group = "Arrows", DefaultValue = true)]
public bool ShowArrow { get; set; }
[Parameter("Buy Color", Group = "Arrows", DefaultValue = "LimeGreen")]
public string UpColorName { get; set; }
[Parameter("Sell Color", Group = "Arrows", DefaultValue = "Red")]
public string DownColorName { get; set; }
[Parameter("Mustard", Group = "Periods", DefaultValue = 5)]
public int Mustard { get; set; }
[Parameter("Ketchup", Group = "Periods", DefaultValue = 13)]
public int Ketchup { get; set; }
[Parameter("Water", Group = "Periods", DefaultValue = 50)]
public int Water { get; set; }
[Parameter("Mayo", Group = "Periods", DefaultValue = 200)]
public int Mayo { get; set; }
[Parameter("Blueberry", Group = "Periods", DefaultValue = 800)]
public int Blueberry { get; set; }
[Output("Mustard", LineColor = "Yellow", Thickness = 2)]
public IndicatorDataSeries MustardResult { get; set; }
[Output("Ketchup", LineColor = "Red", Thickness = 2)]
public IndicatorDataSeries KetchupResult { get; set; }
[Output("Water", LineColor = "Aqua", Thickness = 2)]
public IndicatorDataSeries WaterResult { get; set; }
[Output("Mayo", LineColor = "White", Thickness = 2)]
public IndicatorDataSeries MayoResult { get; set; }
[Output("Blueberry", LineColor = "RoyalBlue", Thickness = 2)]
public IndicatorDataSeries BlueberryResult { get; set; }
private ExponentialMovingAverage MustardMA;
private ExponentialMovingAverage KetchupMA;
private ExponentialMovingAverage WaterMA;
private ExponentialMovingAverage MayoMA;
private ExponentialMovingAverage BlueberryMA;
private string upArrow = "▲";
private string downArrow = "▼";
private double arrowOffset;
private Color UpColor;
private Color DownColor;
protected override void Initialize()
{
try
{
UpColor = Color.FromName(UpColorName);
DownColor = Color.FromName(DownColorName);
} catch
{
UpColor = Color.LimeGreen;
DownColor = Color.Red;
}
MustardMA = Indicators.ExponentialMovingAverage(Bars.ClosePrices, Mustard);
KetchupMA = Indicators.ExponentialMovingAverage(Bars.ClosePrices, Ketchup);
WaterMA = Indicators.ExponentialMovingAverage(Bars.ClosePrices, Water);
MayoMA = Indicators.ExponentialMovingAverage(Bars.ClosePrices, Mayo);
BlueberryMA = Indicators.ExponentialMovingAverage(Bars.ClosePrices, Blueberry);
Bars DailyBars = MarketData.GetBars(TimeFrame.Daily);
AverageTrueRange atr = Indicators.AverageTrueRange(DailyBars, 14, MovingAverageType.Simple);
arrowOffset = atr.Result.Last(1) / 30;
}
public override void Calculate(int index)
{
MustardResult[index] = MustardMA.Result[index];
KetchupResult[index] = KetchupMA.Result[index];
WaterResult[index] = WaterMA.Result[index];
MayoResult[index] = MayoMA.Result[index];
BlueberryResult[index] = BlueberryMA.Result[index];
if (IsLastBar)
return;
if (ShowArrow & MustardResult[index] > KetchupResult[index] & MustardResult[index - 1] < KetchupResult[index - 1])
{
ChartText ct = Chart.DrawText("Arrow" + index, upArrow, index, Bars.LowPrices[index] - arrowOffset, UpColor);
ct.HorizontalAlignment = HorizontalAlignment.Center;
ct.VerticalAlignment = VerticalAlignment.Bottom;
}
if (ShowArrow & MustardResult[index] < KetchupResult[index] & MustardResult[index - 1] > KetchupResult[index - 1])
{
ChartText ct = Chart.DrawText("Arrow" + index, downArrow, index, Bars.HighPrices[index] + arrowOffset, DownColor);
ct.HorizontalAlignment = HorizontalAlignment.Center;
ct.VerticalAlignment = VerticalAlignment.Top;
}
}
}
}
LA
lazarevic.miroslav
Joined on 26.01.2021
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: Multi MA.algo
- Rating: 0
- Installs: 1814
- Modified: 13/10/2021 09:55
Note that publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section, please use the Copyright Infringement Notification form to submit a claim.
Comments
Log in to add a comment.
No comments found.