为什么会提示这个?一开始运行好像还是好的,一会之后就变成这样了。希望朋友可以帮我看一下
import requests
from datetime import datetime,time,timedelta
from dateutil import parser
from time import sleep
class AstockTrading(object):
def __init__(self,strategy_name):
self._strategy_name = strategy_name
self._Open = []
self._High = []
self._Low = []
self._Close = []
self._Dt = []
self._tick = None
self._Volume = []
self._last_bar_start_minute = None
self._isNewBar = False
self._ma20 =None
self._current_orders = {}
self._history_orders = {}
self._order_number = 0
def getTick(self):
page = requests.get("http://hq.sinajs.cn/?format=text&list=sh600000");
stock_info =page.text
mt_info = stock_info.split(",")
last = float(mt_info[1])
trade_datetime = mt_info[30]+' '+mt_info[31]
self._tick = (trade_datetime, last)
def get_history_data_from_local_mechine(self):
self._Open = [1,2,3]
self._High = [2,3,4]
def bar_generator(self):
if self._tick[0].minute %5 == 0 and self._tick[0].minute != self._last_bar_start_minute:
self._last_bar_start_minute =self._tick[0].minute
self._Open.insert(0,self._tick[1])
self._High.insert(0,self._tick[1])
self._Low.insert(0,self._tick[1])
self._Close.insert(0,self._tick[1])
self._Dt.insert(0,self._tick[0])
self._isNewBar = True
else:
#update current bar
self._High[0] = max(self._High[0],self._tick[0])
self._Low[0] = min(self._Low[0],self._tick[0])
self._Close[0] = self._tick[0]
self._Dt[0] = self._tick[0]
self._isNewBar =False
self._last_bar_start_minute =self._tick[0].minute
def _buy(self, price, volume):
self._order_number += 1
key = "order"+str(self._order_number)
self._current_orders[key] = {
"open_datetime": self._Dt[0],
"open_price": price,
"volume": volume
}
def _sell(self, key, price):
self._current_orders[key]['close_price'] = price
self._current_orders[key]['close_datetime'] = self._Dt[0]
self._history_orders[key] = self._current_orders.pop(key)
def strategy(self):
if self._isNewBar:
sum_ = 0
for item in Close[1:21]:
sum_ = sum_ + item
self._ma20 = sum_ / 20
if 0 == len(self.__current_orders):
if self._Close[0] < 0.95 * ma20:
volume = int(100000/self._Close[0]/100)*100
self._buy(self._Close[0]+0.01, volume)
else:
if self._Close[0] > self._ma20 * 1.05:
key = self._current_orders.keys()[0]
self._sell(key, self._Close[0]-0.01)
ma = AstockTrading("ma")
ma.get_history_data_from_local_mechine()
while time(9,26)< datetime.now().time() < time(11,32) or \
time(13)< datetime.now().time()<time(15,2):
ma.getTick()
ma.bar_generator()
ma.strategy()