-输入是用于USDJPY对的OHLC的数据帧
-ssuport是我计算出的潜在支持价格的列表
我有一个支持列表,在该列表中,需要运行每个烛台以查看该烛台是否触及任何烛台,然后计算买入价,止盈和止损。问题是当我输出以下代码时,得到了这个
buy price [108.528, nan, 107.193001, nan, 107.496002, nan]
sell price [nan, 108.466003, nan, 107.089996, nan, 107.847]
这意味着elif语句不能正常工作,为什么?!
我想进一步扩展代码以识别卖空,但我不知道如何!我的代码
sbuy=[]
takeprofit = []
stoploss = []
ssell = []
open_orders = 0
for i in range(len(df['Close'])): #loop through candlestics
for j in range (len(ssupport)) : # loop through support list
if open_orders != 1 :
if ((ssupport[j] * .98) <= df['Low'][i-1] <= (ssupport[j] * 1.02 )) & (df['Low'][i] >= df['High']
[i-1]) :
sbuy.append (df['High'][i])
ssell.append(np.nan)
buyprice = df['High'][i]
stoploss = (df['Low'][i] * 0.95)
open_orders = 1
if (j+1 < len(ssupport)) :
takeprofit = (ssupport[j+1])
break
else:
takeprofit = (ssupport[j] * 1.05)
break
break
elif open_orders == 1 :
if (df['High'][i] > takeprofit) | (df['Low'][i] < stoploss) :
sellprice = df['High'][i]
ssell.append(df['High'][i])
sbuy.append (np.nan)
open_orders = 0
break
break
打印(购买)打印(出售)
您在&
表达式中使用了|
和if
,但它们不是您想要的运算符。请改用and
和or
。 &
和|
运算符是按位运算符,与比较运算符相比,它们的绑定更紧密。结果,您的表达式具有意外的真值。例如:
1 < 2 & 5 < 6