【问题标题】:Amibroker: Daily Loss LimitAmibroker:每日亏损限额
【发布时间】:2025-11-29 02:50:02
【问题描述】:

我想实现一个 afl 代码来查找盘中交易中的每日亏损限制。我将使用代码进行大约 200 天的回测。 我有以下代码,但有错误。

// identify new day
dn = DateNum();
newDay = dn != Ref( dn,-1);

// Daily Loss Limit
dll = Optimize("dll", 0, 5, 10000, 5 );

EquityCount = 10000;

for( i = 0; i < BarCount; i++ )
{  
// signals
Buy  =  ....;
Sell =  ....;

diff = (Equity(1) - Ref(Equity(1), -1));
EquityCount = EquityCount + diff;

// allow only dll
Buy = Buy AND EquityCount > dll;
}

任何帮助将不胜感激。 谢谢。

【问题讨论】:

    标签: limit trading loss back-testing amibroker


    【解决方案1】:

    首先,您的代码完全错误。 其次 Equity() 函数是单一的安全函数。它已经过时了。

    改用 AmiBroker 的自定义回测接口。请参阅 AmiBroker 帮助。

    【讨论】:

    • “首先你的代码完全错误”。如果您要发表如此笼统的声明,详细说明会很有帮助。
    • AmiBroker 手册已经详细解释了!例如“了解 AFL 的工作原理”和“AFL 中的常见编码错误”。 Buy 和 Sell 变量是数组,Equity 和 Ref 函数是数组函数。因此,为了访问数组元素,您必须应用下标。
    • 好的,手册解释了它,但是a)你没有提到它作为参考来源,b)SO的目的也是建立一个知识库。提供指向源的链接,以及保存在这里的摘要,以便将来的读者理解 - 链接通常会过时。见*.com/help/referencing*.com/help/how-to-answer