我试图通过实现一个非常简单的移动平均交叉来学习python。
以下是我的代码:
public class Employee {
int id;
String name;
byte[] imgg;
public Employee() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getImgg() {
return imgg;
}
public void setImgg(byte[] imgg) {
this.imgg = imgg;
}
public Employee(int id, String name, byte[] imgg) {
this.id = id;
this.name = name;
this.imgg = imgg;
}
我的逻辑是,如果列表中的前一个元素为0且当前元素为1,则程序应该以相应的价格变长。这只是为了防止它已经很长时间了。
然而,当我运行它时,它不会在long_position中附加任何内容。
任何人都可以指导我可能出现的问题吗?任何关于代码的评论也将非常感谢!
以下基本上是我尝试做的事情:
px = [] ## list with prices
ma = [] ## list with corresponding 5-d MA
position = []
for n, m in zip(px, ma):
if n > m:
position.append("1") ## signal for long position
elif m > n:
position.append("0") ## signal to close position
long_position = []
for x, z in zip(px, position):
if (px.index(x) > 0):
if position[px.index(x)-1] == 0 and position[px.index(x)] == 1: <-- PROBLEM HERE?
long_position.append(x)
print(long_position)
答案 0 :(得分:0)
已解决:
能够使用enumerate
和index
解决问题。还调整了我生成信号的方式。解决了下面的循环:
for index,(x,z) in enumerate(zip(px,position)):
if index > 0:
if ((position[index]) + (position[index-1])) == '10': # for long
long_position.append(x*-1)
elif ((position[index]) + (position[index-1])) == '01': # for close
close_position.append(x)
else:
pass
谢谢你的帮助,伙计们!