- Home
- Forum
- cBots API Help
- How to get the bot to close my manual trades?
How to get the bot to close my manual trades?
How to get the bot to close my manual trades?
Please help this is the code.
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 Strat3 : Robot
{
[Parameter("Evaluation Time ", DefaultValue = 3600)]
public int EvaluationTime { get; set; }
[Parameter("Volume ", DefaultValue = 100, MinValue = 10, Step = 10)]
public double Volume { get; set; }
[Parameter()]
public DataSeries MaPrice { get; set; }
[Parameter("MaType", DefaultValue = MovingAverageType.Weighted)]
public MovingAverageType MaType { get; set; }
[Parameter("DPO Period", DefaultValue = 3)]
public int DPOPeriod { get; set; }
[Parameter("RVI Period", DefaultValue = 9)]
public int RVIPeriod { get; set; }
private Position OpenPosition;
private int pips = 2;
private double _Tenkan;
private double _DPrice;
private double _RVi;
private double _Signal;
private double _CurrentPrice;
private RelativeVigorIndex _RVI;
private IchimokuKinkoHyo _Ichi;
private DetrendedPriceOscillator _DPO;
protected override void OnStart()
{
Timer.Start(EvaluationTime);
_RVI = Indicators.GetIndicator<RelativeVigorIndex>(RVIPeriod, MaType);
_DPO = Indicators.DetrendedPriceOscillator(MaPrice, DPOPeriod, MaType);
_Ichi = Indicators.IchimokuKinkoHyo(5, 9, 26);
}
protected override void OnTimer()
{
_Tenkan = _Ichi.TenkanSen.LastValue;
_DPrice = _DPO.Result.LastValue;
_RVi = _RVI.Result.LastValue;
_Signal = _RVI.Signal.LastValue;
_CurrentPrice = MarketSeries.Close.LastValue;
if (OpenPosition == null)
{
if (_RVi > _Signal && _DPrice > 0 && _CurrentPrice < _Tenkan)
{
VolumeReset();
var Result = ExecuteMarketOrder(TradeType.Buy, Symbol, Volume);
OpenPosition = Result.Position;
}
else if (_Signal > _RVi && _DPrice < 0 && _CurrentPrice > _Tenkan)
{
VolumeReset();
var Result = ExecuteMarketOrder(TradeType.Sell, Symbol, Volume);
OpenPosition = Result.Position;
}
}
if (OpenPosition != null)
{
foreach (var position in Positions)
if (position.TradeType == TradeType.Buy)
if (_RVi < _Signal && _DPrice < 0)
{
CloseOpenPosition();
}
foreach (var position in Positions)
if (position.TradeType == TradeType.Sell)
if (_RVi > _Signal && _DPrice > 0)
{
CloseOpenPosition();
}
}
}
private void CloseOpenPosition()
{
ClosePosition(OpenPosition);
OpenPosition = null;
}
private void VolumeReset()
{
Volume = (Account.Balance / 0.7) / 5;
Volume = Symbol.NormalizeVolumeInUnits(Volume, RoundingMode.Down);
}
}
}
Hi,
To close a position you just have to pass the position to ClosePosition method and it will close it.
Please check the references for example code:
Method ClosePosition | API reference | cTrader Community