Category Trend  Published on 23/03/2017

Bob Volman

Description

This indicator is based on Bob Volman´s setup

- 25EMA

- Round Number with 50 created by adaled

- Position Size Calculator


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

namespace cAlgo.Indicators
{
    [Indicator(IsOverlay = true, TimeZone = TimeZones.EEuropeStandardTime, AccessRights = AccessRights.None)]
    public class BobVolman : Indicator
    {
//-----------PARAMETER---------------------------      
        [Parameter("Info", DefaultValue = 1)]
        public bool info { get; set; }

        [Parameter("Stop Loss", DefaultValue = 6)]
        public int StopLoss { get; set; }

        [Parameter("Stop Loss Risk %", DefaultValue = 1)]
        public double stopLossRiskPercent { get; set; }

        [Parameter(DefaultValue = 50)]
        public int StepPips { get; set; }

        public ExponentialMovingAverage ema;

        [Parameter("Period", DefaultValue = 25)]
        public int Period { get; set; }

        [Parameter("Source")]
        public DataSeries Source { get; set; }

        [Output("Main", Color = Colors.Black)]
        public IndicatorDataSeries Result { get; set; }

        protected override void Initialize()
        {
            ema = Indicators.ExponentialMovingAverage(Source, Period);

            double max = MarketSeries.High.Maximum(MarketSeries.High.Count);
            double min = MarketSeries.Low.Minimum(MarketSeries.Low.Count);

            double step = Symbol.PipSize * StepPips;
            double start = Math.Floor(min / step) * step;

            for (double level = start; level <= max + step; level += step)
            {
                ChartObjects.DrawHorizontalLine("line_" + level, level, Colors.Silver);
            }
        }

        public override void Calculate(int index)
        {
            Result[index] = ema.Result[index];

            if (info == true)
            {
                DisplayPositionSizeRiskOnChart();
            }
        }

// Position Size Calculator        
        private void DisplayPositionSizeRiskOnChart()
        {
            double costPerPip = (double)((int)(Symbol.PipValue * 10000000)) / 100;
            double positionSizeForRisk = (Account.Balance * stopLossRiskPercent / 100) / (StopLoss * costPerPip);
            string text = "SL is " + StopLoss + " pips = " + Math.Round(positionSizeForRisk, 2) + " Lot";
            ChartObjects.DrawText("positionRisk", text, StaticPosition.TopLeft, Colors.White);
            if (TimeFrame < TimeFrame.Minute30)
            {
                string size = "\n" + "06 pips = " + Math.Round((Account.Balance * stopLossRiskPercent / 100) / (6 * costPerPip), 2) + " Lot";
                size = size + "\n" + "08 pips = " + Math.Round((Account.Balance * stopLossRiskPercent / 100) / (8 * costPerPip), 2) + " Lot";
                size = size + "\n" + "10 pips = " + Math.Round((Account.Balance * stopLossRiskPercent / 100) / (10 * costPerPip), 2) + " Lot";
                size = size + "\n" + "12 pips = " + Math.Round((Account.Balance * stopLossRiskPercent / 100) / (12 * costPerPip), 2) + " Lot";
                size = size + "\n" + "15 pips = " + Math.Round((Account.Balance * stopLossRiskPercent / 100) / (15 * costPerPip), 2) + " Lot";
                ChartObjects.DrawText("calculator", size, StaticPosition.TopLeft, Colors.Gray);
            }
        }
    }
}


BigDeal's avatar
BigDeal

Joined on 03.12.2015

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: Bob Volman.algo
  • Rating: 0
  • Installs: 2876
  • Modified: 13/10/2021 09:54
Comments
Log in to add a comment.
jumpsolid's avatar
jumpsolid · 7 years ago

Hello,

Can you contact me by email ?

Jumpsolid@gmail.com

Thanks in advance

 

Respectfully,

Jumpsolid