【发布时间】:2023-03-20 05:11:01
【问题描述】:
cond = 'a==1';
a=1;
if (cond)
b=0;
end
嗨!有没有办法做我上面写的事情? 在文本变量中,我需要编写一个条件(即使是一个复杂的条件,也使用 && 和 ||),然后在 IF 语句中我只需插入变量。 我试过这个例子,但遗憾的是它没有用。你能解决吗?
编辑:为您提供更多信息!
我正在回测一个项目的不同交易策略。
在通用 M 文件中,我为需要测试的每个策略使用了一个函数。每个策略获取有关当前情况的输入数据,然后该函数根据数据(以及根据保证金要求和其他独立于策略的东西)评估交易策略的行为。每个函数中唯一不同的是进入或退出规则。
每个策略都有确定的进场和离场条件(例如,“当……和……时开多头头寸”或“当……或……时平空头头寸”)。
在主 M 文件中,我使用一个循环来模拟经过的时间,但我想实现一个进一步的外部循环,它代表测试策略的数量。
此外,到目前为止,IF 语句中的每个条件都是手工编写的,我想获得一个唯一的函数(现在每个策略不再有 1 个),根据策略的循环索引,将通过进入和退出条件取自字符串矩阵。
我希望可以做到。
【问题讨论】:
-
我认为您的意思是
cond = 'a==1','a=1' 不是条件,而是分配。 -
是的,你想启动
a==1,那么我猜你需要使用if eval(cond)。 -
如答案中所述 - 这不是一个好主意!如果您最终陷入您认为需要使用 evil eval 的情况,那么您可能需要重新考虑您的问题......
-
eval有一些合法用途(虽然不多)。这不是其中之一(没有更多关于这个问题的背景)。
标签: string matlab if-statement conditional-statements