【问题标题】:conditional statements as strings [duplicate]作为字符串的条件语句[重复]
【发布时间】:2011-04-15 06:11:31
【问题描述】:

可能重复:
echo inside if loop

我试图编写一个交易系统,我有一个进入和退出策略列表。为了减少代码中的行数,我计划将所有策略放入一个数组中,用于每个入口和出口。我的数组是这样的

$enter_strats = array(
   array('name'=>"macd",'strat'=>"/$divergence[/$key]>0.1;"),
);

我在上面的数组中包含条件语句。 当我通过日常价格循环时,我必须检查每个进场策略是否属实。我的if语句是这样的

foreach($divergence as $key=>$value)
{
    if($trade ==0)
    {
        foreach($enter_strats as $k =>$v)
        {
            $strat = $v['strat'];
            $strat = str_replace("#","$",$strat);
            eval("\$strat = \"$strat\";");
            if ($strat)
            {
                $trade =1;
                $book->save($key,$close[$key],$v['name']);
            }   
        }
    }
}

问题,因为它是一个字符串,它总是 if 总是将它评估为 true。我试着在 if 里面再放一个 eval 但没用。

请帮助解决这个问题,这是非常重要的。非常感谢。

【问题讨论】:

  • 请考虑接受一些答案。请使用文本编辑器上的{} 按钮来格式化代码。
  • Hmz,你能再举一些Strats的例子吗?我对如何创建该数组有一个想法,只是想看看它有多可行。
  • 这不是 stackoverflow.com/questions/5663128/echo-inside-if-loop 的副本。如果此问题是作为“完全重复”关闭的原因,则应重新打开该问题。在引用的问题中,尝试使用未解释的字符串作为条件,而这里作者试图调用 eval()。

标签: php algorithm trading algorithmic-trading


【解决方案1】:

那是因为您试图减少代码中的行数。

旨在保存数据而非代码的数组。

只要你理解它,你的代码就可以了。

'strat' 应该只包含数据。例如一个运算符和一个数字。 在字符串中保留变量名是没有意义的。 特别是如果你已经有了这个变量。 您的代码中已经有 $divergence[$key] 。

所以,'strat' 应该只是 array('>',0.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 2014-04-12
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多