在 cTrader 中给定条件下平仓

问题描述 投票:0回答:1

我为 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 并等待新的入场条件

c# algorithmic-trading
1个回答
-1
投票

如何防止算法被交易者关闭,以便尽管交易者想要交易,但日常风险仍然存在?

© www.soinside.com 2019 - 2024. All rights reserved.