我有一个简单的代码,包含一个移动变量和一些范围。变量在伪随机增加或减少,我无法控制它。范围是我的if语句。
每个if语句都有两个命令,在代码可以继续之前,我需要满足并执行两个命令之一。
问题是变量可以在执行其中一个命令之前移动到不同的范围,这会强制代码期望两个不同的命令。
如果执行其中一个命令,我怎么能阻止代码执行任何其他操作,尽管变量在哪里?
注意:保证在给定足够时间的情况下执行其中一个命令。
虽然循环没有起作用,因为它们被视为无限循环。 诸如"触发一个或两个的bools被执行== true / false"也没有用,并且在bool语句中捕获代码会产生与while循环相同的结果。我也尝试了一个switch语句,但下面的ifs集合没有什么不同。
我已经研究过使用状态机和递归方法,但此时它们有点超出我的范围,并且不知道它们现在是否适合我。
以下代码是一个通用示例:
int MP = moving variable; //updated every iteration of the code
int R3, R2, R1, S1, S2, S3; //static variables input by user- in descending order
//MP usually starts between S1 and R1
if(R3 < MP < R2)
{
command one; //an if statement that gives command when triggered
command two; //another if statement
}
if(R2 < MP < R1)
{
command one;
command two;
}
if(R1 < MP < S1)
{
command one;
command two;
}
if(S1 < MP < S2)
{
command one;
command two;
}
if(S2 < MP < S3)
{
command one;
command two;
}
如果它有帮助,我可以引入实际的代码,但我相信我已经将我的问题缩小到了这一点,并且正如我所知道的那样简单地描述它。我还可以详细介绍其中的任何部分。
我希望这就像我忽略一个选项一样简单,或者也许还有一些我还没有学到的东西。
感谢您的时间
编辑 - 这是一种自动交易算法。 MP是来自经纪商的特定商品价格的实时馈送,范围是用户认为商品价格将达到的价格点。这两个行动是放置买入或卖出订单,当价格达到一定水平时执行。出现问题的原因是,其中一个价格点位于不同的范围内(对于那些了解交易的人来说,停止订单)。因此简短地重复if语句。发生的事情是,在相邻范围的停止订单之前执行上面或下面的范围订单。这就是为什么我需要在执行新订单之前执行其中一个初始订单。
我确信这只会使事情变得更加混乱,这就是为什么我试图将其保持在一个非常概念的层面。 - 编辑
答案 0 :(得分:2)
将MP分配给临时变量,然后围绕if语句执行while循环。在循环的每次迭代中将MP重新分配给temp变量。这样就可以保证变量不会在飞行中发生变化。
答案 1 :(得分:0)
您发布的代码,MP 的值在初始化和最后if
语句的底部之间不会更改。
如果你关心你在多个线程中运行这个方法的任何调用代码,那么在第二个执行时,第一个尚未完成。然后,您必须将值放在队列中(更可能是ConcurrentQueue)并从那里处理它们。
这就是为什么我需要在初始订单之前执行其中一个初始订单 提交的是
你的声明在这里尖叫“我需要一个处理队列”。