MA
Information
Username: | mapseam |
Member since: | 24 May 2016 |
Last login: | 24 May 2016 |
Status: | Active |
Activity
Where | Created | Comments |
---|---|---|
Algorithms | 0 | 2 |
Forum Topics | 1 | 0 |
Jobs | 0 | 0 |
Last Algorithm Comments
MA
Thanx for you renko indi!
renko = Indicators.GetIndicator<Renko>(RenkoPips, BricksToShow, 3, "SeaGreen", "Tomato");
Buy renko.Bricks.Count() = 0.
Tell me please, why?
Can I do the calculation of Renko bars inside the bot?
using System;
using System.Linq;
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
using cAlgo.Indicators;
namespace cAlgo.Robots
{
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class My_RenkoRobot : Robot
{
[Parameter("Renko (Pips)", DefaultValue = 10.0, MinValue = 0.1, Step = 1)]
public double RenkoPips { get; set; }
protected class Brick
{
public double Open { get; set; }
public double Close { get; set; }
}
protected List<Brick> Bricks = new List<Brick>();
private double closeLastValue, renkoPips, renkoLastValue;
private MarketSeries M1;
protected override void OnStart()
{
// ...
renkoPips = RenkoPips * Symbol.PipSize;
M1 = MarketData.GetSeries(TimeFrame.Minute);
var open = M1.Open.LastValue;
renkoLastValue = open - (open % renkoPips) + renkoPips / 2;
int totalBars = Math.Min(LookupBars + 1, M1.Close.Count);
for (int i = 0; i < totalBars; i++)
{
closeLastValue = M1.Close[i];
while (closeLastValue >= renkoLastValue + renkoPips * 1.5)
{
renkoLastValue += renkoPips;
Bricks.Insert(0, new Brick
{
Open = renkoLastValue - renkoPips / 2,
Low = Open,
Close = renkoLastValue + renkoPips / 2,
High = Close
});
}
while (closeLastValue <= renkoLastValue - renkoPips * 1.5)
{
renkoLastValue -= renkoPips;
Bricks.Insert(0, new Brick
{
Open = renkoLastValue + renkoPips / 2,
High = Open,
Close = renkoLastValue - renkoPips / 2,
Low = Close
});
}
}
// ...
}
protected override void OnTick()
{
// ...
double y1, y2;
var top = Math.Max(Bricks[0].Open, Bricks[0].Close);
var bottom = Math.Min(Bricks[0].Open, Bricks[0].Close);
closeLastValue = M1.Close[0];
if (closeLastValue > top)
y1 = top;
else if (closeLastValue < bottom)
y1 = bottom;
else
y1 = closeLastValue;
y2 = closeLastValue;
Bricks[0].Open = y1;
Bricks[0].High = y1 > y2 ? y1 : y2;
Bricks[0].Low = y1 < y2 ? y1 : y2;
Bricks[0].Close = y2;
// ...
}
}
}