Python 与Numpy交易
为了学习,我正在用Python编写一个算法交易程序。使用Numpy,我试图最大化核心模拟逻辑的速度:Python 与Numpy交易,python,arrays,numpy,simulation,algorithmic-trading,Python,Arrays,Numpy,Simulation,Algorithmic Trading,为了学习,我正在用Python编写一个算法交易程序。使用Numpy,我试图最大化核心模拟逻辑的速度: t=0 size = Ticks.shape[0] #Ticks is a numpy array while t<size: if self.toLong(t): self._Trader.Long(Ticks[t,3]) t+=1 while t<size:
t=0
size = Ticks.shape[0] #Ticks is a numpy array
while t<size:
if self.toLong(t):
self._Trader.Long(Ticks[t,3])
t+=1
while t<size:
if self.toexitLong(t):
self._Trader.exitLong(Ticks[t,3])
break
t+=1
elif self.toShort(t):
self._Trader.Short(Ticks[t,3])
t+=1
while t<size:
if self.toexitShort(t):
self._Trader.exitShort(Ticks[t,3])
break
t+=1
t+=1
t=0
size=Ticks.shape[0]#Ticks是一个numpy数组
而t
重写代码,这样您就有了一个带有简单模式标志的clear for循环,并且if-else为模式切换
用于jit编译整个函数,该函数应提供1-3个数量级的加速
不是速度优化,但它看起来可以用<<代码> > <代码>循环和<代码>模式变量来更清楚地表示你是否处于一个长、短或不长的中间。在5个位置递增循环计数器非常容易出错。您真的需要将t
1递增1,并在每一步检查是否进入或退出长或短的循环计数器,还是直接计算下一个要执行操作的时间步?您似乎没有访问“勾号”
数组来决定是否进入或退出操作。@user2357112谢谢。我最初编写这个循环时使用了几个模式变量,但我意识到不在每次迭代中检查模式可以节省几毫秒。尽管可能不清楚,但enter/exit方法正在使用传递的索引对数组执行操作。例如,当最后5个收盘价的平均值>x时,进入/退出信号可能触发,因此有必要在每个t
检查触发器。我想我可以计算每一行的每一个进入/退出信号,然后“模拟”之后。