Description
The Trading System uses Bollinger Bands. It will Buy Or Sell if the Bar close price upper or lower than Bollinger Bands.
PS: I changed source to use percent volume and use optimize, bellow is result
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 MyBollingerBands : Robot
{
[Parameter("Source")]
public DataSeries Source { get; set; }
[Parameter("BandPeriods", DefaultValue = 14)]
public int BandPeriod { get; set; }
[Parameter("Std", DefaultValue = 1.8)]
public double std { get; set; }
[Parameter("MAType")]
public MovingAverageType MAType { get; set; }
[Parameter("Initial Volume Percent", DefaultValue = 1, MinValue = 0)]
public double InitialVolumePercent { get; set; }
[Parameter("Stop Loss", DefaultValue = 100)]
public int StopLoss { get; set; }
[Parameter("Take Profit", DefaultValue = 100)]
public int TakeProfit { get; set; }
private BollingerBands boll;
protected override void OnStart()
{
// Put your initialization logic here
boll = Indicators.BollingerBands(Source, BandPeriod, std, MAType);
}
protected override void OnBar()
{
var volumne = Math.Floor(Account.Balance * 10 * InitialVolumePercent / 10000) * 10000;
Print("Volume{0}", volumne);
Print("Balance{0}", Account.Balance);
Print("Equity{0}", Account.Equity);
if (Bars.Last(2).Close > boll.Top.Last(2))
{
if (Bars.Last(1).Close > boll.Top.Last(1))
{
ExecuteMarketOrder(TradeType.Buy, Symbol.Name, volumne, "ndnghiaBollinger", StopLoss, TakeProfit);
}
else
{
ExecuteMarketOrder(TradeType.Sell, Symbol.Name, volumne, "ndnghiaBollinger", StopLoss, TakeProfit);
}
}
else if (Bars.Last(2).Close < boll.Bottom.Last(2))
{
if (Bars.Last(1).Close < boll.Bottom.Last(1))
{
ExecuteMarketOrder(TradeType.Sell, Symbol.Name, volumne, "ndnghiaBollinger", StopLoss, TakeProfit);
}
else
{
ExecuteMarketOrder(TradeType.Buy, Symbol.Name, volumne, "ndnghiaBollinger", StopLoss, TakeProfit);
}
}
}
protected override void OnTick()
{
// Put your core logic here
}
protected override void OnStop()
{
// Put your deinitialization logic here
}
}
}
nghiand.amz
Joined on 06.07.2020
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: MyBollingerBands.algo
- Rating: 0
- Installs: 2337
- Modified: 13/10/2021 09:54
Warning! Running cBots downloaded from this section may lead to financial losses. Use them at your own risk.
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.
Why it doesn't work, does not run or does the result is bad?
CL
Cool... The thing is, It doesn't work, could you update it?
Congrat mate, its robust and it works very well. but i cant seem to undertsand the strategy it uses.