基于条件语句实现股票交易中sell_price变量最高值锁定的技术咨询
解决方案:让sell_price保留历史最高触发值
看起来你遇到的核心问题是原来的条件判断会在价格回落时覆盖掉之前更高的sell_price,对吧?其实只需要调整逻辑,让sell_price只在新的触发价格高于当前值时才更新,就能实现“涨上去就不跌回来”的效果。
核心思路
我们需要先确定当前价格对应的最高可能目标售价,然后将它和当前的sell_price比较,只保留较大的那个值。这样不管价格怎么波动,sell_price只会往更高的方向更新,不会因为价格回落而降低。
具体实现
这里提供两种简洁的实现方式,你可以根据自己使用的编程语言调整:
方式1:从高到低判断+最大值校验
这种方式先优先检查最高阈值,确保拿到当前价格能触发的最高目标价,再和现有sell_price比较:
# 初始化sell_price为一个低于所有触发价的初始值 sell_price = 0 # 从最高阈值开始判断,避免重复匹配低阈值 if price > d: if 25 > sell_price: sell_price = 25 elif price > c: if 20 > sell_price: sell_price = 20 elif price > b: if 15 > sell_price: sell_price = 15 elif price > a: if 10 > sell_price: sell_price = 10
方式2:先获取当前目标价,再取最大值(更简洁)
这种方式先算出当前价格对应的最高目标价,再直接用最大值函数更新sell_price,逻辑更清晰:
# 初始化sell_price为初始值 sell_price = 0 # 确定当前价格能触发的最高目标售价 current_target = 0 if price > d: current_target = 25 elif price > c: current_target = 20 elif price > b: current_target = 15 elif price > a: current_target = 10 # 只保留最高的sell_price sell_price = max(sell_price, current_target)
效果验证
举个价格波动的例子,看看逻辑是否符合你的需求:
- 价格首次涨到超过a:
current_target=10,sell_price从0更新为10 - 价格继续涨到超过b:
current_target=15,sell_price更新为15 - 价格回落至超过a但低于b:
current_target=10,max(15,10)=15,sell_price保持15 - 价格涨到超过d:
current_target=25,sell_price更新为25 - 价格回落至任意区间:
current_target都不会超过25,sell_price始终保持25
这样就完美实现了你要的“随价格上涨更新为更高值,价格回落时保留历史最高”的目标。
内容的提问来源于stack exchange,提问作者Ratan Biekram
相关产品推荐
相关产品推荐

