我为 cTrader 编写了一个 cBot。我想添加一个条件,如果每日净值(未平仓头寸的盈亏+平仓盈亏)为<= than a given parameter and then wait until the next day before opening a new position.
,则关闭所有交易我添加了以下代码:
protected override void OnTick()
{
double equityChange = CalculateEquityChange();
if (Server.TimeInUtc.Date > lastTradeDate) // Update the daily equity balance
{
dailyEquityChange = equityChange;
lastTradeDate = Server.TimeInUtc.Date;
}
double actualchange = equityChange-dailyEquityChange; // Calculate the value
Print($"Equity Change: {actualchange}"); //To check the values during backtest
foreach (var position in Positions)
{
if (actualchange <= - DailyChange) // Closing conditions
{
ClosePosition(position);
Print("Max daily loss");
}
}
}
private double CalculateEquityChange()
{
double equityChange = 0;
foreach (var position in Positions)
{
equityChange += position.GrossProfit;
}
foreach (var closedPosition in History)
{
equityChange += closedPosition.NetProfit;
}
return equityChange;
}
我希望当条件被触发时,cBot 会平仓并等到第二天将 'actualchange' 设置为 0 并等待新的入场条件
如何防止算法被交易者关闭,以便尽管交易者想要交易,但日常风险仍然存在?