如何解决如何避免在可以做多和做空的交易策略中重复代码
我有多种策略可以做多或做空赚钱。目前我将长边与短边分开编码,但它们是彼此的镜子。一个基本的例子可能是收盘价超过前一根蜡烛的高/低,然后朝那个方向交易:
direction = 'none'
if last_candle['close'] > previous_candle['high']:
direction = 'long'
if last_candle['close'] < previous_candle['low']:
direction = 'short'
trade(direction)
你怎么能这样写,只写一次逻辑?
解决方法
有一个内置库可以做到这一点 代码:
from bisect import bisect
def foo(close):
previous_candle = {}
previous_candle['high'] = 100
previous_candle['low'] = 0
choices = ["short","none","long"]
breakpoints = [previous_candle['low'],previous_candle['high']]
return choices[bisect(breakpoints,close)]
#return ["short","long"][bisect([previous_candle['low'],previous_candle['high']],close)] if you prefer oneliner
print(foo(-50))
print(foo(50))
print(foo(150))
结果:
short
none
long
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。