首页 > 解决方案 > 如何避免在可以做多和做空的交易策略中重复代码

问题描述

我有多种策略可以做多或做空赚钱。目前,我将长边与短边分开编码,但它们是彼此的镜子。一个基本示例可能是收盘价超出前一根蜡烛的高点/低点并朝该方向交易:

direction = 'none'
if last_candle['close'] > previous_candle['high']:
  direction = 'long'

if last_candle['close'] < previous_candle['low']:
  direction = 'short'

trade(direction)

你怎么能这样写,这样你就只写一次逻辑?

标签: pythonalgorithmic-trading

解决方案


有一个内置的库来做代码:

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","none","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

推荐阅读