带if语句的嵌套循环无法正常工作

问题描述 投票:-1回答:1

-输入是用于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

打印(购买)打印(出售)

python for-loop if-statement
1个回答
0
投票

您在&表达式中使用了|if,但它们不是您想要的运算符。请改用andor&|运算符是按位运算符,与比较运算符相比,它们的绑定更紧密。结果,您的表达式具有意外的真值。例如:

1 < 2 & 5 < 6
© www.soinside.com 2019 - 2024. All rights reserved.